Aerial 是一个开源的 Android TV 桌面,参照 Apple tvOS 设计:没有广告、没有推荐流,只有你的 App、你的壁纸和 Apple TV 的航拍屏保。它为小米、TCL 等国产电视而做,装好后自动接管 HOME 键,待机也不会被系统清掉。

形态上它是一个原生 Android 应用(Kotlin,42 个文件 8,328 行,MIT),外加两样东西:一个用 adb 跑的一行安装脚本,和一份专门写给 AI Agent 读的安装文档。不需要 root,不卸载任何系统应用,随时能一条命令还原。

│ 它最不像「一个桌面」的地方,是它把大量工程量花在了「怎么不被杀掉」上。

为什么值得关注

国产电视的默认桌面是一个商业界面:开机先播广告,桌面上是会员、限免和推荐流。用户能换掉它的手段一向有限——要么忍,要么用 root,要么装一个同样带广告的第三方启动器。

Aerial 走的是第四条路:不 root,靠系统给的合法通道,一层一层把桌面抢过来。这件事在技术上不优雅——它用到了无障碍服务、通知监听、`WRITE_SECURE_SETTINGS` 这些通常被当成敏感权限的东西——但它确实解决了「固件只认自家桌面」这个具体问题,而且给出了 16 条机型实测记录(其中 Redmi X65 与 MiTV-MFTR0 同型号)。

打开网易新闻 查看精彩图片

电视自带的桌面:推荐流、会员和限免角标

换之前:

打开网易新闻 查看精彩图片

Aerial 首页:大号时钟压在壁纸上,下面是 App 网格

换之后:同一台电视,没有推荐流,也没有会员角标。*

打开网易新闻 查看精彩图片

航拍屏保:俯瞰优胜美地,镜头移动时标出地名

空闲时是 114 段 Apple TV 航拍影片,从 Apple 的服务器直接播放——这也是它的一处外部依赖。

核心问题

要在国产电视上做一个第三方桌面,会撞上三个约束,而且它们互相加强。

第一,没有 root。这意味着不能改系统分区、不能替换系统应用,只能用应用层的合法接口去争一个本该属于系统桌面的位置。第二,固件只认自家桌面。小米的 PatchWall、TCL 的自有桌面都被固件显式绑定,你把 Aerial 设为默认桌面,固件照样能把 HOME 交回自己。

第三,待机会杀掉第三方 App。小米在待机时会强制停止第三方应用,Aerial 连进程都活不到下一次唤醒。

三条加在一起,就变成一个很具体的问题:一个没有特权的应用,怎么在一个不欢迎它的系统里持续保住前台?它的答案不是一个大招,而是五层逐步升级的补丁。

核心观点

│ 这个项目的技术含量不在 UI,而在时序:什么时候抢 HOME、抢不到等多久、被杀了由谁叫醒、叫醒太频繁时怎么收手。它本质上是一套针对不同固件行为的降级策略库。

关键结论

│ 这套方案的价值不在「抢」,而在「退」。它在四个地方主动让路:浮层不算前台、信号源优先、用户主动回原桌面时一小时内不抢、以及十分钟内复活三次以上就收敛为「看不到前台就不再抢 HOME」。一个靠抢前台工作的应用,最容易被诟病的就是它太激进;而这些让步规则说明作者知道边界在哪。

另一个设计:安装说明是写给 Agent 的

README 里推荐的安装方式不是「下载 APK 双击」,而是把一段话发给能在电脑上跑命令的 AI:WorkBuddy、豆包电脑版、千问电脑版、Trae、Claude Code、Codex 都列了出来。

请帮我把开源电视桌面 Aerial 装到我的电视上,并设为开机进入的桌面。电视 IP:<电视IP>保持 ADB 常开:要安装说明在这里:https://aerial.qust.me/agent.md请先完整读完安装说明再动手,然后在我的电脑上亲自运行命令,不要只把步骤告诉我。最后按说明里的「验收」,把那几条命令的原始输出贴给我。

配套的 `site/agent.md` 是一份 16 KB 的文档,它的读者不是人,是代理。开头就是给代理的行为规则:亲自在用户电脑上运行命令,不要只把步骤列给用户;不要假装成功,每一步都看真实输出。还有几条边界:不要卸载或停用任何系统应用,重启电视前先问,需要用户在电视上按遥控器时要说清按哪个键。

更关键的是它给了验收标准:装完之后,最后一条输出里必须出现 `app.orchard.tv`,没有就是没装上。README 还专门提醒「手机 App 和网页版聊天只会把步骤告诉你,装不了」——这一句其实是在替代理划清能力边界。

关键技术决策决策一:用无障碍服务当守护进程

选择了把「原桌面一出现就拉回」这件事挂在一个无障碍服务上,因为它是少数不需要 root 就能观察窗口切换的接口。放弃了「不申请敏感权限」的干净形象。作者的处理是把使用范围写死:只看哪个窗口到了前台,不读屏幕内容。

决策二:用通知监听当复活开关

选择了一个反直觉的机制:小米待机会强制停止第三方 App,但系统会在约半秒内重新绑定通知监听器,Aerial 就借这次绑定活过来。放弃了更常规的「前台服务 + 保活」思路——那在国产固件面前基本无效。代价是它必须申请一个通常被用来读通知的权限,于是文档反复强调「不读任何通知」。

决策三:宁可慢一点,也不要抢错

选择了固定等待 1.5 秒、只认 Activity 窗口、信号源优先。放弃了即时响应。文档里给了一个可验证的收益:TCL 75S365C 上从解锁到 Aerial 的时间,从 7.6 秒压到约 2 秒——这个改善不是靠抢得更快,而是靠去掉误判导致的反复切换。

决策四:把安装复杂度外包给 Agent

选择了用一份给 Agent 执行的文档替掉「图文安装教程」。放弃了对纯人工安装路径的优化(手动步骤仍然保留,但被放在第二位)。这个选择很务实:目标用户的电脑上大概率装着一个能跑命令的 AI,而人通常不愿意敲五行 adb 命令。

我的思考

这个项目最值得学的不是那五层,而是它对自己速度的处理方式。

49 小时 17 个版本、130 个 issue,说明它完全是被真机反馈推着走的:每一条「某个型号待机后黑屏」都是一次没有预料到的固件差异。这种节奏能做出一个「在很多电视上真的能用」的产品,但也会留下一个隐患——每个版本只来得及验证刚被报告的那一两个机型。文档里那张「已验证 / 用户反馈未验证 / 能装但接管不了」的三级表,其实是这种节奏的诚实产物:作者明确区分了「我测过」和「别人说装好了」。

另一件让我犹豫的事是权限。Aerial 要用无障碍 + 通知监听 + `WRITE_SECURE_SETTINGS`,另外推荐安装时默认 `KEEP_ADB=1`——也就是让电视的 ADB 调试端口长期开着。这些权限的用途在文档里写得合理(只看窗口、不读通知、只为了重新打开守护),但从系统安全的角度看,它们合起来构成的能力远超一个「桌面」应该拥有的权限。你其实是在给一个 APK 三把钥匙,并让一把锁长期不上。

和现有方案对比

维度

Aerial

电视自带桌面

其他第三方启动器

广告与推荐

开机广告 + 推荐流 + 会员角标

多数带推广位

是否需要 root

不需要

部分需要

接管方式

HOME 角色 → 无障碍守护 → 通知监听复活 → 同步适配器兜底

系统默认

通常只申请 HOME 角色

待机被杀后

靠系统重绑通知监听复活(约 0.5 秒),兜底 30–60 秒

不存在这个问题

多数直接失效

已验证机型

16 个(含小米、TCL、索尼、创维、康佳、PPTV、极光盒子等)

不公开

还原路径

一条命令,或让 Agent 按文档还原;不卸载系统应用

视实现

形态

Kotlin 原生 App(standard / guard 两个 flavor)+ adb 安装脚本 + Agent 安装文档

固件内置

多为 Java/Flutter 应用

⚠️ 注意

四件事需要提前知道。

第一:它要的是三把钥匙:无障碍服务、通知监听、`WRITE_SECURE_SETTINGS`,通过 adb 授予。文档对每个权限的用途都写了说明,但这套组合的能力边界确实超过一个桌面的职责范围,你需要自己判断是否接受。

第二:推荐安装方式默认 `KEEP_ADB=1`——保持电视 ADB 调试端口常开,好处是以后升级方便,代价是同一网络里多了一个可被尝试连接的调试入口。

第三:它的核心能力依赖外部服务:114 段航拍影片从 Apple 的服务器直接播放,版权归 Apple;每日精选来自必应。这两样任何一项变了,对应的功能就会退化。

第四:不支持 LG webOS、三星 Tizen、华为鸿蒙智慧屏,以及 Android 4.4 及更老的系统;文档还列了「能装但开机进不了 Aerial」的机型(Vidda、海信、OPPO K9、雷鸟鹤 6 2025 Ultra)。

接入价值

值得试:手上有小米、TCL、索尼这类已验证机型,并且确实被开机广告和推荐流烦到的人,是这个项目的直接受众;如果正好在文档那张 16 机型的表里,踩坑概率会低很多。想做 Android TV 应用的人也可以直接读它的架构文档——那里面关于弱 GPU 的约束(每帧最多一次全屏绘制、空闲不跑动画、960×540dp 画布等比缩放、焦点动画用可打断的弹簧)是很少见的实战经验。

不值得投入:用 LG、三星、鸿蒙智慧屏的人直接放弃,那不是适配问题而是平台不支持。只有手机、没有电脑的人要谨慎:安装必须通过电脑上的 adb,文档明确说了网页和手机聊天装不了,虽然有用户用安卓手机上的 ADB 助手成功过,但作者没有测试。对权限敏感的人也应该先读完那张权限表再决定——这个项目换取「接管桌面」的代价,是让渡了一批高权限。

项目地址

https://github.com/pengchujin/aerial-tv