aerial-tv README

The project's README from github.com/pengchujin/aerial-tv. As one markdown file: README.md.

Aerial 图标

Aerial

给国产电视的一块干净桌面。

参照 tvOS 设计的 Android TV 桌面:没有广告,没有推荐流,只有你的 App、你的壁纸和 Apple TV 航拍屏保。
为小米、TCL 等国产电视而做,开机自动接管,待机也不会被清理。

中文 · English

官网 下载 APK 让 Agent 帮你装 开启 ADB

版本 许可证 MIT Android TV 5.0+

Aerial 首页

电视自带的桌面 换上 Aerial 之后
电视自带的桌面:满屏剧集推荐、会员和限免角标 Aerial 首页

功能

首页

聚焦在 Netflix 上 往下滚动后的应用网格

长按菜单

长按菜单

长按 OK 键:移动(其他磁贴自动让位)、从主屏幕隐藏、应用信息、卸载。

控制中心

控制中心

按遥控器的菜单键(≡)打开,或在第一行按上键。包括信号源(显示 CEC 设备)、网络、设置,音量和亮度滑块,以及壁纸与屏保、隐藏的 App、Aerial 设置。网络和设置会打开电视自己的面板。

屏保

航拍屏保:俯瞰优胜美地 时钟屏保

在使用 Android 标准屏保的电视(比如 TCL)上,Aerial 就是系统屏保。小米用自家的屏保,Aerial 会在桌面空闲时抢先启动,挡在小米的广告屏保前面。

壁纸与手机设置

壁纸与屏保面板 手机上的设置页

安装

不需要 root,不卸载、不停用任何系统应用,一条命令就能还原。

第一步:打开电视的 ADB 调试

电脑和电视连同一个网络。先在电视上找到 IP 地址(一般在「设置 → 网络」或「关于」里),再打开 ADB:

电视 怎么打开
小米 / Redmi 设置 → 关于 → 产品型号,连续按确认键,直到提示已进入开发者模式。再到 设置 → 账号与安全,打开 ADB 调试 和 安装未知来源的应用
TCL / 雷鸟 设置 → 关于 → 本机信息,依次按遥控器的 上、下、左、右(间隔不超过 1 秒),底部会出现「更多」,在里面打开 ADB
原生 Android TV / Google TV、海信等 设置 → 设备偏好设置 → 关于 → 连续按 版本号 7 次;再到 开发者选项 打开 USB 调试(也可能叫「网络调试」或「ADB 调试」)

电脑第一次连接时,电视会问「允许 USB 调试吗?」,选 允许 并勾上「始终允许」。

用 Agent 安装(推荐)

把下面这段交给 Claude Code、Codex、Cursor 这类能在你电脑上运行命令的 Agent,把 <电视IP> 换成你的电视 IP:

请帮我把开源电视桌面 Aerial(https://github.com/pengchujin/aerial-tv)安装到我的电视上,并让它成为开机自动启动的桌面。
我的电视 IP 是:<电视IP>

请按这个顺序做:
1. 读一下仓库 README 的「安装」部分和 docs/devices/ 下的机型笔记。
2. 确认电脑上有 adb、curl、python3(没有 adb 也可以,安装脚本会自动下载 Google 的 platform-tools)。
3. 运行 adb connect <电视IP>:5555。连不上就提醒我按 README 在电视上打开 ADB 调试;显示 unauthorized 就提醒我在电视上点「允许」。
4. 运行一键安装:
   curl -fsSL https://raw.githubusercontent.com/pengchujin/aerial-tv/main/tools/get.sh | KEEP_ADB=1 TV=<电视IP> bash
   如果是 TCL,电视右上角会弹出「多屏互动:正在发起应用推送」,提醒我在电视上选「同意」。
5. 装完后用 adb shell dumpsys window | grep mCurrentFocus 确认前台是 app.orchard.tv;征得我同意后再 adb reboot 一次,确认开机直接进入 Aerial。
6. 不要卸载或停用任何系统应用,不要删除电视上不是这次安装创建的文件。失败时把命令输出原样给我看,再参考 docs/devices/ 排查。

一行命令(macOS / Linux)

curl -fsSL https://raw.githubusercontent.com/pengchujin/aerial-tv/main/tools/get.sh | KEEP_ADB=1 TV=192.168.1.20 bash

脚本会下载最新版 APK 安装,授予只有 ADB 能给的权限(见下表),预编译让它更流畅,然后接管桌面和屏保、放行开机自启。

还原成原来的桌面:

curl -fsSL https://raw.githubusercontent.com/pengchujin/aerial-tv/main/tools/get.sh | TV=192.168.1.20 bash -s restore

手动安装

到 Releases 下载 aerial-standard.apk(固件拒绝安装桌面类 App 时用 aerial-guard.apk),然后:

adb connect 192.168.1.20:5555
adb install -r aerial-standard.apk
adb shell pm grant app.orchard.tv android.permission.WRITE_SECURE_SETTINGS
adb shell cmd notification allow_listener app.orchard.tv/app.orchard.tv.guard.RevivalListener
adb shell appops set app.orchard.tv SYSTEM_ALERT_WINDOW allow
adb shell am start -n app.orchard.tv/.MainActivity

Aerial 启动后会自己打开桌面守护。屏保、亮度、TCL 自启等完整步骤见 tools/install.sh。

它怎么接管桌面,又怎么不被杀掉

国产电视大多只认自家桌面,待机时还会清理第三方 App。Aerial 先温和、后强硬:

  1. 正常申请:申请 HOME 角色、设为默认桌面。原生 Android TV 和 Google TV 到这一步就够了。
  2. 桌面守护:固件坚持用自家桌面时(小米、TCL 都是),由一个无障碍服务接管:官方桌面一到前台,就把 Aerial 拉回来。它只看哪个窗口到了前台,不读屏幕内容。
  3. 被杀后复活:小米待机会强制停止所有第三方 App。Aerial 注册了一个通知监听(不读任何通知),系统会在约 0.5 秒内重新绑定它,Aerial 借此复活,并用 WRITE_SECURE_SETTINGS 重新打开守护。
  4. 开机自启:开机时系统绑定通知监听,Aerial 随之启动。TCL 的「自启动管理」默认拦截第三方 App,安装脚本会用 appops 放行。
  5. ADB 常开(可选):小米唤醒后会关掉 ADB 调试,开了 KEEP_ADB 后 Aerial 会马上打开它,方便以后升级。

ADB 授予的权限

权限 用途
WRITE_SECURE_SETTINGS 重新打开被系统关掉的守护;保持 Aerial 为系统屏保;KEEP_ADB;写入小米的背光值
通知监听 被强制停止或开机后由系统拉起,不读取任何通知
悬浮窗(SYSTEM_ALERT_WINDOW) 开机后从后台打开 Aerial
修改系统设置 用标准接口调节亮度
定位 只用来读取 Wi-Fi 名称
TCL APP_AUTO_START / APP_ASSOC_START 允许开机自启(只有 TCL 有)

已验证的电视

机型 系统 状态 笔记
小米 MiTV-MFTR0 Android 14 / HyperOS TV 日常使用中 笔记
小米 MiTV-MFFU0 Android 14 / HyperOS TV 安装、开机自启已验证 笔记
Redmi X65 2026(MiTV-MFTR0) Android 14 / HyperOS TV 用户验证:安装、重启后自动进入(#3) 同 MiTV-MFTR0
TCL MT5879 国行 Android 11 日常使用中 笔记
索尼 XRJ-77A80J 国行(BRAVIA VH2) Android 10 用户验证:安装、开机自启、待机唤醒、屏保(#16) —
索尼 BRAVIA VH1 国行 Android 12 用户验证;亮度改为打开索尼的图像设置(#2) —

其他品牌(海信、创维等)应该也能用,但还没在真机上验证。欢迎提交 Issue 或 PR 补充你的机型。

已知限制

开发

需要 JDK 17、Android SDK 36。

./gradlew assembleStandardRelease assembleGuardRelease
BUILD=1 KEEP_ADB=1 TV=<电视IP> tools/install.sh      # 用本地编译的 APK 安装

设计上的取舍:按 960×540dp 的画布等比缩放,不同密度的电视看起来一样;电视 GPU 很弱,每帧最多一次全屏绘制,空闲时不跑动画;焦点动画用弹簧,可以中途打断;字体用 Inter(OFL 许可)。

航拍目录 app/src/main/assets/aerials.json 由 Apple 公开的 resources-16.tar 生成,只有影片地址和地名,不含影片本身。

许可

MIT。Inter 字体使用 SIL Open Font License。

Aerial 是独立的开源项目,与 Apple、小米、TCL、索尼均无关联。航拍影片版权归 Apple 所有,由 Apple 的服务器直接播放;每日精选图片来自必应,版权归原作者所有。

aerial-tv (pengchujin/aerial-tv)

Searching Database…