Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md
Aerial 图标

Aerial

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

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

中文 · English

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

版本 许可证 MIT Android TV 5.0+

Aerial 首页

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

功能

首页

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

  • 时钟:大号细体时钟压在壁纸上,壁纸底部和左侧自动压暗。往下滚动时,时钟收进状态栏。
  • 应用网格:每行 5 个,聚焦时浮起并显示名字。默认加一圈白色描边,离得远也看得清;在「控制中心 → Aerial 设置」可以改回 tvOS 的原样。
  • 图标:有电视横幅就用横幅;方形图标用自己的底色铺满磁贴;自适应图标拆成两层做视差。
  • 全部 App:小米「应用中心」「高清播放器」「米家」这类没有标准入口的系统 App 也会显示。
  • 信号源磁贴:把 HDMI、AV、电视天线固定到首页,按一下直接切换(控制中心 → 信号源 → 显示在主屏幕)。
  • 返回键:和 tvOS 一样,在网格里按返回回到第一行,在第一行按返回开始屏保。

长按菜单

长按菜单

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

控制中心

控制中心

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

屏保

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

  • 航拍:114 段 Apple TV 航拍影片,从 Apple 的服务器直接播放,镜头移动时显示地名。左右键切换上一段 / 下一段。
  • 照片:每日精选和你的照片缓慢推移。
  • 时钟:每分钟换一个位置,防止烧屏。

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

壁纸与手机设置

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

  • 壁纸:必应每日精选(国内直连)、8 组内置渐变,或者你自己的照片。
  • 用手机设置:扫描壁纸面板上的二维码,在手机上传照片、选壁纸、换屏保。页面只在面板打开时开放,地址带随机令牌。

安装

不需要 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 能给的权限(见下表),预编译让它更流畅,然后接管桌面和屏保、放行开机自启。

  • KEEP_ADB=1:电视关掉 ADB 调试后(小米待机唤醒时会关),Aerial 立刻重新打开。不需要可以去掉。
  • 固件拒绝安装桌面类 App:在命令最后加 -s guard,改装不声明 HOME 的版本。
  • TCL:TCL 拒绝一切 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-MFTR0Android 14 / HyperOS TV日常使用中笔记
小米 MiTV-MFFU0Android 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 补充你的机型。

已知限制

  • 需要联网:航拍按 1080p H.264 实时播放,码率约 15–20 Mbps;每日精选也要联网。
  • HDMI 设备名:真实名称(如「Apple TV」)需要系统权限才读得到,所以只显示「已连接」。
  • TCL 音量条:调音量时会同时弹出 TCL 自己的音量条,这是让音量真正生效的必要条件。
  • 小米屏保:停在别的 App 里空闲时,仍然会出现小米自己的屏保。
  • 网页安装:浏览器连不上电视的网络 ADB,电视的 USB 口也不能被电脑当成设备连接,所以没法「打开网页就装」。

开发

需要 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 的服务器直接播放;每日精选图片来自必应,版权归原作者所有。

关于 About

给国产电视的一块干净桌面:参照 tvOS 设计的开源 Android TV 桌面,没有广告,开机自动接管。A tvOS-style launcher for Xiaomi, TCL and other China-market TVs.

语言 Languages

Kotlin75.8%
HTML16.5%
Shell5.1%
Python2.3%
Swift0.2%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
0
Total Commits
峰值: 1次/周
Less
More

核心贡献者 Contributors