从一块待机画面说起:开源电视美化生态里还有哪些宝藏
"智能电视最大的广告位在哪?"答案可能出乎意料——不是开屏、不是剧集推荐流,而是那块你每天都会看到、却又最容易被忽略的待机画面。国内电视的待机屏保要么是厂商会员推销(TCL 的"艺术画报"直接内置 VIP 营销),要么是轮流播放的广告壁纸,小米甚至会在桌面空闲时强行切走你的界面。就在这种背景下,一个名叫 Aerial 的开源项目用一套"参照 tvOS 设计的 Android TV 桌面"给出了另一种答案:没有广告、没有推荐流,只有你的 App、你的壁纸和 Apple TV 同款航拍屏保。本文就从这块待机画面切入,拆解它背后的工程实现,再顺着它伸出的触角,看看整个开源电视美化生态里还藏着哪些值得挖的宝藏。
一块待机画面是怎么炼成的
Aerial 最新版本 1.15(versionCode 17)于 2026-10-21 发布,它的屏保不是简单播一段视频,而是三条并行的路径,分别适配不同厂商的固件:
- 桌面内屏保:
MainActivity空闲计时 5 分钟后启动航拍、照片(Ken Burns 缓慢推移)或时钟三种模式;时钟屏保每分钟换一个位置防止烧屏。小米不用 Android 标准 Dream,Aerial 靠这条路径加上FLAG_KEEP_SCREEN_ON,抢在小米广告屏保之前接管; - 系统级屏保:TCL 走 Android 标准 Dream,安装脚本把
screensaver_components写为app.orchard.tv/app.orchard.tv.dream.AerialDream(AerialDream.kt)。TCL 每次开机可能把屏保偷偷写回"艺术画报",所以 Aerial 每次启动都会检查并改回来(GuardSetup.kt); - 系统权限接管:屏保组件在 AndroidManifest.xml 里声明为
BIND_DREAM_SERVICE的DreamService,无需 root。
航拍屏保是这块待机画面最"硬核"的部分。仓库里只有一份 aerials.json 目录文件——114 段 Apple 航拍影片的地址、分类和双语地名,影片本身从 Apple 的服务器实时播放,和 Apple TV 的行为一致。播放链路用 Media3 ExoPlayer 而非平台 MediaPlayer,原因写在 AerialStream.kt 的注释里:电视厂商对 MediaPlayer 的魔改(如 TCL 的 TclNuPlayer)一次失败会重试 10 次、拖 34 秒才报错。Aerial 的做法是:全部影片放进一个播放列表让下一段提前加载、连接 5 秒 / 读取 8 秒超时且只重试一次、把下一场屏保的开头和索引预取到 48MB 磁盘缓存,小米 MFTR0 实测冷启动 1.3 秒出第一帧。
待机画面之外:壁纸、主题与启动器
屏保只是入口,Aerial 真正的体量在桌面本身。首页是 5 列 16:9 磁贴网格,聚焦时磁贴放大 1.15 倍并浮起;考虑到国产电视都是方向键遥控器、没有 Siri 遥控器的触控板倾斜,默认的"高对比度"焦点样式还给磁贴加了白色描边,远看也找得到焦点(TileArt.kt)。
磁贴图不是简单地"拿 App 图标铺上去",而是一套分级渲染管线(Apps.kt):系统固件 App(设置、相册、天气、商店)用 Aerial 自绘的渐变底 + 白色线条图标,风格对齐 tvOS 系统 App;其次认 TV 横幅;自适应图标拆成两层做视差;满底色的方形图标把底色铺满磁贴、Logo 按面积统一缩放。最妙的是它连"小米应用中心、高清播放器、米家"这类没有标准桌面入口的系统 App 都单独列进了 UNLISTED_ENTRIES 处理。
壁纸侧同样有讲究:必应每日精选(国内直连)、8 组内置渐变、或者手机上传的照片。电视 GPU 很弱,全屏填充率是瓶颈,所以首页背景的压暗层在 CPU 上预先烘焙进位图,网格滚动时的模糊壁纸也预先做好,每帧最多一次全屏绘制——第一版在小米上帧耗时中位数 65ms,优化后约 18ms(ARCHITECTURE.md)。
内容侧:片源、素材与数据服务
一块漂亮桌面背后的"内容供应链"同样值得研究。Aerial 的内容来源清一色是公开数据服务:
- Apple 航拍目录:由 Apple 公开的
resources-16.tar生成,只有影片地址和地名、不含影片本身,生成方法记录在 HANDOFF.md。aerials.json里每段影片带[秒, 中文, 英文]字幕时间点,镜头移动时切换地名,例如"中国北京怀柔区慕田峪长城"; - 必应每日精选:走
cn.bing.com的 HPImageArchive,最近 8 张缓存到本地; - 实时天气:Open-Meteo 的预报与地名查询接口都不需要 Key、国内可访问;城市默认由 ipinfo.io 按 IP 定位(每天最多一次),手机页面会显示定位结果让用户纠正——因为整个家庭网络走代理时 IP 定位会定到别的国家(Weather.kt)。
老系统兼容是内容侧的隐性工程:Android 5/6 不信任 Let's Encrypt 根证书,HTTPS 失败时自动降级 HTTP,network_security_config.xml 只对特定域名放行明文;Apple 影片的证书链到 Apple Root CA,Android 自带根证书里没有,所以只对这个域名信任打包的 raw/apple_root_ca.pem。
工具侧:清理、管理、远程控制
待机画面装上去只是第一步,真正的难点是"装得上去、活不下来"。Aerial 的工具链几乎是国产电视固件的一本"反破解笔记":
一键安装:get.sh 是给普通用户的一行命令,没有 adb 会自动下载 Google 的 platform-tools;install.sh 负责授予只有 ADB 能给的特权(WRITE_SECURE_SETTINGS、通知监听、悬浮窗、TCL 专用 APP_AUTO_START),并编译加速。TCL 固件拒绝一切 ADB 安装(PmStrategy 一律拒绝、LauncherStrategy 要求 HOME 声明者必须与 TCL 签名一致),于是项目直接逆向了 TCL 自带的"多屏互动"推送协议——TCP 6553 端口、159>>1>>0 明文握手、223>>INSTALL 指令,实现收在 tcast-push.py,协议细节(含 AES 加密模式、发 Intent、截图、模拟按键等指令)单独成文 tcast-protocol.md。
活下来:国产固件有两招对付第三方 App——小米待机会 forceStop 所有第三方应用并移除其无障碍授权;TCL 有自启动管理拦截一切后台绑定。Aerial 的应对是三层防御(HomeGuardService.kt、RevivalListener.kt):无障碍服务看到原桌面到前台就拉回 Aerial;被强杀后靠"通知监听重绑"机制复活(系统约 0.5 秒内重绑,不读任何通知);用 WRITE_SECURE_SETTINGS 把被系统关掉的守护重新打开。BootReceiver 声明 directBootAware,用户解锁前就绑定,TCL 实测开机到 Aerial 从 7.6 秒优化到约 2 秒。
远程控制:电视遥控器打字太痛苦,Aerial 用 NanoHTTPD 在 8790 端口起了一个临时配置服务(PhoneServer.kt):壁纸面板打开时生成二维码,手机扫码进入页面,可以传照片、选壁纸、换屏保、给单个 App 换磁贴图标、设天气城市。地址带 8 位随机令牌、每次打开面板都重新生成,服务只在面板打开时运行。
这套"不卸载、不停用任何系统应用、一条命令还原"的温和路线,恰好呼应了当下社区的热点:近期多家媒体集中报道"智能电视广告引不满,用户开始借助 Claude 等 AI 智能体清理广告和预装应用",掘金上也出现了"Android TV 垃圾应用清理指南"这类实操文章。Aerial 的 README 甚至内置了一段给 Claude Code / Codex / Cursor 用的 Agent 安装提示词——把电视 IP 交给 AI,让它在 adb connect、装 APK、dumpsys window 验证前台、参考机型笔记排查之间自主完成。给 AI 写安装说明,正在成为开源项目触达非技术用户的新方式。
发现路径:怎么持续挖出宝藏项目
顺着 Aerial 这根藤,可以摸出一整片开源电视生态的瓜:
1. 从项目文档的"参考资料"顺藤摸瓜。 HANDOFF.md 的参考清单里写着 tv-vibehack / CleanYourTV——一个"有很多机型去广告列表、以及小米 MFTR0 信号源笔记"的项目,Aerial 的小米信号源路由就参考了它。开源项目的机型笔记互相引用,是最可靠的发现渠道:你需要的去广告方案,可能就藏在某篇设备笔记的"参考"一行里。
2. 认准同一主题的"平台迁移"项目。 社区情报里能看到一条清晰的家族线:macOS 上还原 Apple TV 屏保的开山之作 → 用 Node.js + Electron 移植到 Windows 的版本 → 面向 Google TV / Nvidia Shield / Fire TV 的 Android TV 屏保 Aerial Views → 再到 Aerial Dream 这类 Android 屏保应用教程。同一个 IP(Apple 航拍屏保),每个平台都有人做了一遍移植,谁做得好、谁文档全,对比着看收获最大。
3. 盯住社区榜单与"年度盘点"。 HelloGitHub 的月刊、GitHub 热点速览和年度最受欢迎项目盘点,是持续发现宝藏的低成本渠道;掘金上"越折腾越好用的 3 款开源 APP"这类合集,常常一次性带出好几个冷门好物。本文开头提到的 LibreTV(无广告、全平台的追剧工具)和"摸鱼 TV"自建视频站,也都是这类榜单和社区讨论里冒出来的内容侧项目。
4. 用关键词"场景化"搜索。 别搜 android tv 这种宽泛词,试试 aerial screensaver、smart tv debloat、launcher + 你的机型代号(如 MT5879、MFTR0)——Aerial 的机型验证表和每台机器的实测笔记(docs/devices/)就是这么积累起来的。
5. 让生态反哺自己。 Aerial 的 README 专门维护了一张"已验证电视"表格,从小米、TCL 到索尼、创维、康佳甚至 PPTV,每台都标注系统版本、状态和 Issue 编号,用户反馈的机型(哪怕只有微博评论)也单独成表。开源电视美化不是一次性安装,而是一场持续的真机测试接力——你的机型验证,就是下一个用户的上车凭证。
从一块待机画面出发,我们看到了屏保背后的流媒体工程、桌面背后的渲染优化、内容背后的公开数据服务,以及工具链背后对国产固件的逐一破解。更重要的是,这个生态是互相成就的:屏保项目给 Windows、macOS、Android TV 分别移植,启动器项目引用去广告项目的机型笔记,AI 工具又反过来降低了安装门槛。下次当你盯着电视那块广告待机画面出神时,不妨想想:这块画面背后,还有一整片等着被挖出来的开源矿藏。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考











