Aerial Lite:Android 4.0–4.4 老电视
Android 4.0–4.4 的老电视、老盒子装不了完整版(界面框架最低要 Android 5.0),所以有一个单独的 Aerial Lite:包名 app.orchard.tv.lite,外观和完整版一样。
Lite 现在是第一版(1.0),属于测试版。 只在 Android 4.0.4 / 4.4.4 虚拟机,以及小米、TCL 的新电视上测过,还没在真实的 4.x 电视上用过,可能有不少小问题。只适配 Android 4.0–4.4;Android 5.0 及以上请用完整版。遇到问题请用机型适配模板反馈,标题写上 Lite。
为什么是单独的 App
完整版的界面全部用 Jetpack Compose 写,Compose 从来没支持过 Android 5.0 以下,没法靠降低 minSdk 来支持 4.x。Lite 用原生 View 重写了界面,不依赖 AndroidX 和 Compose,release 包约 700 KB(大部分是 Inter 字体)。
外观与完整版一致:同样的磁贴、玻璃底板、焦点框、时钟、控制中心、长按菜单、个性化面板和屏保,尺寸、颜色、字体按完整版的代码逐项搬过来。
两个版本的关系:
- 包名独立:4.x 电视本来就装不了完整版,两者分开发版、分开升级,versionCode 互不影响。
- 构建时从完整版复制、不在仓库里存两份的:
aerials.json、Inter 字体、cities-cn.tsv(assets);GlyphPaths.kt、TileRecipes.kt、Cities.kt;五种语言的strings.xml。 - 移植过来、要手动同步的代码:磁贴算法、平滑圆角、焦点框/阴影/玻璃边、渐变色、图像加载、Lunar(
java.time换成Calendar)、图标库、天气、系统入口。
性能原则(比外观优先)
4.x 电视的 CPU 慢,Dalvik 解释执行,GPU 弱,有的盒子根本没有可用的硬件加速。所以:
- 每帧最多一次全屏绘制:壁纸按屏幕尺寸预先画好、压暗,烘焙成一张图作为窗口背景;用 RGB_565 格式。
- 不做实时模糊:玻璃底板、面板、焦点框、阴影、磁贴圆角都是预先烘焙好的位图,GPU 只画矩形和图片。
- 磁贴是独立的 View:用 translation 定位、焦点放大改 scale,主线程几乎没有负担。
- 首次运行先显示替身:真正的磁贴(256×256 采样、逐像素抠 logo)在后台做好后五个一批换上。4.4 虚拟机 2.7 秒出首页,4.0.4 虚拟机 0.7 秒出首页。
- 没有硬件加速时不做动画:焦点和滚动直接跳到位,每按一次键只画一帧。
- 空闲时没有任何动画:时钟每分钟整点更新一次,其余时间 0 帧。
功能支持矩阵
| 功能 | Lite | 说明 |
|---|---|---|
| 首页(单排/双排、玻璃底板) | ✅ | 完整版的默认布局 |
| 磁贴(图标库、自绘、横幅) | ✅ | 4.x 的 App 没有 TV 横幅 |
| 焦点(放大 1.15、白色渐变框、阴影) | ✅ | |
| 小时钟 / 大时钟(日期、农历、天气) | ✅ | 个性化里切换 |
| 天气 | ✅ | 地点只能按 IP 猜 |
| 控制中心(信号源、网络、设置、音量、亮度、个性化、开机 App、桌面状态) | ✅ | 4.x 没有 TvInputManager,小米兜底 HDMI 1–3 |
| 长按 / 菜单键菜单(移动、文件夹、隐藏、恢复默认图标、应用信息、开机打开、卸载) | ✅ | 长按按「按键重复」判断 |
| 布局(单排/双排、玻璃底板、App 名称、时钟、天气、焦点样式、效果) | ✅ | |
| 文件夹、家长密码 | ✅ | |
| 个性化(壁纸、手机页二维码) | ✅ | |
| 壁纸(必应每日一图、手机上传、内置) | ✅ | |
| 屏保(航拍 / 照片 / 时钟 / 我的视频) | ✅ | 4.x 航拍通过本机代理播放 |
| 手机配置页 | ✅ | 完整版网页和接口,NanoHTTPD + ZXing |
| 儿童与长辈模式 | ✅ | 限制应用与时长 |
| 航拍壁纸、我的视频当壁纸、信号源磁贴、应用内升级、系统屏保、4K/杜比 | ❌ | 4.x 能力限制 |
| 守护版(无障碍接管 HOME) | ❌ | Lite 只有 standard 版 |
航拍屏保的实现细节
Android 4.x 不信任 Apple 的根证书,系统播放器也没法传入自定义证书,而 sylvan.apple.com 的 HTTP 现在会 301 跳到 HTTPS。Lite 在本机起一个只监听 127.0.0.1 的小代理(FilmProxy):播放器打开 http://127.0.0.1:<端口>/f?u=<地址>,代理用 HTTPS 去取,只信任打包的 Apple 根证书,并打开 4.1–4.4 默认关掉的 TLS 1.2(4.0 用 TLS 1.0)。片源用 1080p H.264;20 秒没准备好或出错就换下一段,连续 3 次失败改成时钟屏保。
安装
一行命令(macOS / Linux):和完整版是同一条命令,脚本发现电视是 Android 4.x 会自动装 Lite;也可以明确指定:
curl -fsSL https://aerial.qust.me/install.sh | TV=192.168.1.20 bash -s lite
手动:下载 aerial-lite.apk,然后:
adb connect 192.168.1.20:5555
adb install -r aerial-lite.apk
adb shell pm grant app.orchard.tv.lite android.permission.WRITE_SECURE_SETTINGS # 调亮度用;Android 4.0 会报错,可以忽略
adb shell am start -n app.orchard.tv.lite/.HomeActivity
U 盘:把 aerial-lite.apk 拷进 U 盘,用电视的文件管理器打开安装。
装好以后
按遥控器的主页键,系统问「使用哪个应用」时选 Aerial Lite,再选「始终」。不弹出选择、直接回到原桌面,说明固件把主页键锁在了自家桌面,这时只能从应用列表打开 Lite。
还原:电视上 设置 → 应用 → Aerial Lite → 清除默认设置,再按主页键选原来的桌面;或者直接卸载:
adb uninstall app.orchard.tv.lite
内容来源:Aerial 官方 GitHub 仓库
docs/LITE.md与 README
