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)

no-root
Searching Database…

What is this?Aerial is an open-source Android TV launcher styled after tvOS, built for China-market TVs like Xiaomi and TCL. It replaces the ad-filled stock home screen with a clean app grid, your wallpaper, and Apple TV aerial screensavers, and takes over automatically at boot.
Is this a store app or something I install manually?It's an Android TV launcher APK, not published on any app store. You install it over ADB from a computer and it becomes your TV's home screen app, replacing the manufacturer's launcher.
How do I install it on my TV?First enable ADB debugging on the TV (the steps differ for Xiaomi, TCL, and stock Android TV/Google TV), then run the provided one-line install script from a computer on the same network, pointing it at the TV's IP — or hand the script to an agent like Claude Code or Cursor. A manual APK install from Releases also works.
Do I need root or any special hardware?No root is required and no system apps get uninstalled or disabled — everything can be reverted with one command. You just need a computer able to reach the TV over ADB on the same network.
Does it need internet to work?Yes — the aerial screensavers stream 1080p H.264 video live from Apple's servers at roughly 15-20 Mbps, and the daily wallpaper also needs a connection. HDMI device names only show as 'connected' without system permission, and on Xiaomi TVs the manufacturer's own screensaver can still briefly appear when idle inside another app.
Does it access my personal data?ADB grants it permissions like notification listener (used only to restart itself after being killed, not to read notifications) and location (used only to read the Wi-Fi network name).
How does Aerial survive Xiaomi killing third-party apps on standby?It registers a notification listener service that Android rebinds within about half a second after being force-stopped, letting Aerial restart itself and reopen its accessibility-based desktop guard.
What do the screensavers actually show?An aerial mode plays 114 real Apple TV drone clips streamed from Apple's servers with location names, a photos mode shows Bing's daily picture or your own photos, and a clock mode shifts position every minute to prevent burn-in.
Which TVs has it actually been verified on?It's confirmed working on several Xiaomi/Redmi HyperOS TVs, a TCL MT5879, and two Sony BRAVIA models; other brands like Hisense should work too but haven't been tested yet.
Can I upload my own photos as wallpaper without typing on the remote?Yes — opening the wallpaper panel shows a QR code with a one-time token; scanning it with your phone lets you upload photos, pick wallpapers, and switch screensavers from there.
Creator
pengchujin
Size
7.7 MB
Stars
5K
Age
6d
Commits · 90 Days