MIT License

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

在国产智能电视的生态里,用户几乎是被迫接受“广告 + 瀑布流推荐”这种默认体验的。开机先看一段十五秒的洗脑广告,首页塞满付费内容,想找一个已安装的第三方应用得翻好几层菜单。这不仅是体验问题,更是一种对用户注意力的透支。而 pengchujin/aerial-tv 这个项目,恰恰是对这种畸形生态的一次正面反击:它用一套近似 tvOS 的视觉语言和交互逻辑,为国产电视(小米、TCL 等)提供了一块干净的桌面,并在开机时自动接管系统,把“电视桌面”的定义重新拉回到“效率工具”。

项目背景与痛点:用户不是不喜欢电视,是厌恶电视桌面

国内电视厂商的盈利模式依赖预装应用和广告推送,桌面端成为了流量入口。开机广告、动态推荐位、应用商店推广位……这些设计的目的只有一个:提高用户点击率。但代价是系统资源被大量无用 UI 抢占,遥控器操作路径越来越长,用户的主界面信息密度极低——真正有用的图标被淹没在促销海报里。

aerial-tv 的核心理念非常明确:桌面就是用来找应用的,不是用来逛超市的。它参照 tvOS 的形态,采用大图标、卡片式焦点、极简背景,去掉所有信息流和广告位。开机自动接管(通过监听系统启动事件并拉起自身 Activity)意味着它不只是一个应用,而是对系统桌面的一次“替换手术”。

核心技术揭秘:从启动到渲染的极简链路

这个项目的架构本质是典型的 Android TV Launcher,但它的工程实现思路值得拆解。整个系统是一个分层级的单 Activity + 多 Fragment 结构,数据流以 TVLauncher 核心服务 为中枢,向上接入内容模型,向下驱动 UI 渲染。

graph TD A[系统启动完成] --> B[监听 BOOT_COMPLETED] B --> C[LauncherMainActivity 启动] C --> D[校验系统 Home 状态] D -->|"已是默认桌面"| E[加载应用列表] D -->|"非默认桌面"| F[尝试接管 Home 事件] E --> G[解析已安装应用<br/>按包名+优先级排序] G --> H[生成行模型<br/>RowModel] H --> I[RecyclerView 绑定<br/>自适应焦点动画] F --> J[提示用户设置默认桌面] J --> E I --> K[响应遥控 KeyEvent<br/>处理方向键与确认键]

从图上可以看出几个关键点:

  1. 启动接管机制:它通过监听 BOOT_COMPLETED 广播,在系统桌面起来之前尝试抢占 HOME 事件。这里有一个设计难点——电视厂商会自定义系统桌面并加固,aerial-tv 的策略是在首次启动时主动引导用户将其设为默认桌面,避免与系统机制硬碰硬。
  2. 数据流设计:没有复杂的数据库层,直接用 PackageManager 扫描应用列表,以“白名单优先 + 高频使用排序”的方式生成行。这种轻量的做法在避免 ANR(Application Not Responding)的同时,也保证了开机后能快速完成首屏渲染。
  3. UI 渲染:采用 RecyclerView + 自定义焦点动画,与 tvOS 的视差感不同,这套逻辑更偏向 Android TV 的 D-pad 遥控器交互——四向移动、确认键进入。其背后的动画时间函数是平滑的二次曲线,不会阻塞主线程。

功能亮点与差异:做减法,做到极致

相比当贝桌面和 Aptoide TV 这类竞品,aerial-tv 的优势在于 零商业逻辑嵌入。

  • 没有广告植入:代码层面不包含任何广告 SDK 或追踪模块,用户安装后系统纯净度极高。
  • 自动接管:设置好默认桌面后,后续每次开机启动,系统都会直接拉入 aerial-tv 的 UI,完全不经过原厂桌面,解决了原厂桌面资源占用高的问题。
  • 信息架构:顶部是时间与天气,下方是蜂窝式应用布局。没有“热门推荐”或“猜你喜欢”,每一个像素都在为用户操作效率服务。

这种设计差异化非常适用于技术敏感型用户,或者那些购买了大屏设备但被原厂系统拖累性能的老电视。

应用场景与落地建议:适合追求极致效率的私有化部署

落地时需要重点关注以下两点:

  • 由于国内各电视厂商的系统深度定制程度不一,某些型号(特别是 TCL 的部分机型和老款小米电视)在系统签名、Home 事件抢占上存在兼容性风险,建议在部署前先实测该机型对第三方 Launcher 的开放程度。
  • 部分电视的硬件加速在第三方 Launcher 下不可用,动画会出现掉帧。建议在使用时关闭系统级 GPU 合成选项,或在代码中强制使用 hardwareAccelerated 开启硬件渲染。

适合场景:面向家庭长辈的极简模式(减少误触)、企业会议室的公共展示终端(固定若干应用入口)、以及个人自用且希望彻底摆脱系统广告的电视。

综合评价:设计理念满分,生态兼容待验证

优点:

  • 代码结构清晰,作为学习 Android TV Launcher 开发的范例极佳。
  • 设计感强,交互逻辑符合遥控器使用直觉。
  • 无商业植入,这在当前国内电视桌面产品中几乎是一股清流。

缺点:

  • 功能单一,不支持插件扩展或自定义小部件,对于喜欢折腾的高级用户可能略显单薄。
  • 依赖个人维护,项目目前版本更新较慢,对新系统适配(Android 14/15)存在滞后风险。
  • 对系统核心组件改动极深,若电视系统后续推送 OTA 更新,存在被系统恢复出厂桌面或设置失效的可能。

总的来说,这是面向“懂行开发者”的一个精品工具,而不是面向普通用户的开箱即用产品。它让人重新审视电视桌面的本质,也证明了一件事:好的设计,不需要一堆冗余功能来支撑。

关于

GitHub 原始描述(英文)

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

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
11126
价值分
5915
活跃状态
活跃
暂无主题

语言占比

CSS
HTML
Java
JavaScript
Kotlin
Python
Shell
Swift

Release

README

正在自动获取该仓库的 README(刚收录的仓库需要一点时间),稍后刷新即可;也可以直接去 GitHub 查看。

去 GitHub 查看 README

评论

暂无评论