Ansub/tv-detox · 上手攻略
- 仓库:Ansub/tv-detox
- 链接:https://github.com/Ansub/tv-detox
- 分类:engineering / app(Android TV 工具)
- 作者:spark
- 更新:2026-10-21
0. 三证 checklist
- [x] GitHub URL(已 fetch README、install.sh 原文)
- [ ] 顶会 venue + 年份 —— 本项目非学术论文,不适用
- [x] README 子模块 anchor:
install.sh/undo.sh/build.sh/apps.txt/src/com/ansub/tvhome/Strings.java均已读到原文
⚠️ 诚实声明:本仓库卡片记录的 Stars=992 / 周增 +3020 与我 fetch 到的 GitHub 页面显示的 108 stars / 7 forks 明显不一致(页面抓取时间不同,或 trending 站数据源口径不同)。本文不采用任一组数字做论据。仓库成熟度卡片标注为 experimental,与实际仅 17 commits、无 release tag 可见的状态吻合。
一、是什么
tv-detox 是一个极小的 Android TV / Google TV 主屏幕应用(Java,包名 com.ansub.tvhome),外加一套让 AI 编码助手(Claude Code 或 Codex)通过 ADB 把老电视"救活"的脚本与提示词。
它的定位不是又一个 launcher,而是把两件事打包成一个可复现流程:
- 清理——用
adb shell pm disable关掉厂商预装 bloatware、广告行、推荐流(注意是 disable,不是 uninstall,可逆)。 - 重建主页——装一个只显示"你的应用 + HDMI 输入 + 时钟"的极简 APK,占用约 12 MB 内存。
项目 README 顶部三个卖点写得很直白:清垃圾、给一个安静的主页、随时可撤销。
二、解决什么问题
老 Android TV 变慢的根因通常不是硬件,而是三件叠加:
- 预装软件膨胀:厂商账号、说明手册、带广告的频道 App、推荐信息流常驻后台吃内存。
- 默认启动器臃肿:Google TV / 厂商 launcher 自带横幅广告、赞助内容行、推荐算法。
- 动效与屏保拖慢观感:
window_animation_scale之类的系统动画在低端 SoC 上带来明显的迟滞感。
作者在 X 上公开过自己案例的效果:关闭 bloatware 与追踪、卸载 11 个不用的应用后,空闲内存提升约 90%,新主页约 12 MB RAM,重启后开机直达主页、5 分钟息屏。他强调全程不需要 root。
三、快速安装
3.1 前置:打开电视的开发者模式
电视设置 → 设备偏好设置 → 关于 → 连点「版本号」7 次
→ 返回设置 → 开发者选项 → 打开「USB 调试」/「网络调试」
⚠️ 这一步是整个流程的前提。不开开发者模式,笔记本上的 adb 根本连不上电视。
3.2 电脑端准备 adb
# macOS
brew install android-platform-tools
安装后确认 adb version 有输出即可。
3.3 取电视 IP 并连接
让电脑和电视连同一个 Wi-Fi,然后:
adb connect 192.168.1.xxx # 换成电视 IP
adb devices # 看到 device 状态才算通
第一次连接电视会弹"允许调试吗?",勾选"始终允许"再确定。
3.4 交给 AI(推荐路径)
在 Claude Code 或 Codex 里粘贴 README 给的提示词(原文结构):
Help me clean up my Android TV and make it faster. My TV is <IP>.
1. 通过 Wi-Fi 连接我的电视。告诉我电视上需要点哪里。
2. 改动任何东西之前,先用大白话列出每一个应用,分成:
- 可以安全关掉
- 电视系统需要
- 我自己在用
并检查空闲内存。
3. 每一次改动前都问我。关应用而不是删应用。
绝不关闭 Google Play、输入法、蓝牙或我的 HDMI 输入。
记下改了什么、怎么撤销。
4. 安装主页:下载并在电视上运行 install.sh,应用列表为 <...>。
5. 关掉动画和屏保,把息屏设成 5 分钟。
6. 重启电视,展示改动前后的空闲内存。
这段提示词的价值在于它把安全约束写死在流程里:每步问询、只关不删、明确的四类禁动组件、保留撤销清单。项目口号"你只管按遥控器上的 OK"就是这个设计的直接体现。
3.5 纯手动(不用 AI)
如果你不想装 AI 助手,脚本可以独立跑:
sh install.sh <电视IP>
# 显式指定应用与快捷设置
sh install.sh 192.168.1.50 "com.netflix.ninja,com.google.android.youtube.tv" "bluetooth,sound,picture"
脚本逻辑(读 install.sh 原文确认):
- 目标是 IP 就自动补 :5555;是 adb serial(如 emulator-5554)就原样用。
- 优先用本地 out/tvhome.apk(你自己 build 的),没有就从 GitHub release 下载。
- adb install -r 失败且原因是 UPDATE_INCOMPATIBLE(旧版签名不同)时,会先 uninstall com.ansub.tvhome 再装。
- 传了应用/快捷项就用 am start 启动一次 MainActivity,靠 --es stamp "$(date +%s)" 保证这份清单只应用一次,避免 Android 之后重放启动时重复刷。
3.6 撤销
sh undo.sh <电视IP>
手工撤销 Google TV 主启动器与设置向导:
adb shell pm enable com.google.android.apps.tv.launcherx
adb shell pm enable com.google.android.tungsten.setupwraith
四、核心用法
4.1 识别可关的应用
README 给了一张按厂商分类的表,例如 TCL 系列:
| 应用 | 包名 |
|---|---|
| TCL 账号 | com.tcl.usercenter |
| 内置说明书 | com.tcl.ocean.instructions |
| TCL Channel(带广告免费频道) | com.tcl.channelplus |
| TCL 推荐 | com.tcl.waterfall.overseas |
| TCL 通知与促销 | com.tcl.messagebox |
关某个应用本体:
adb shell pm disable com.tcl.channelplus
# 看当前所有被禁用的包
adb shell pm list packages -d
社区实践里流传更细的禁动清单(来自 Medium 上的一篇实测,非项目官方,请自行核对):com.google.android.gms / com.google.android.gsf / com.android.vending 是 Play 服务与商店,com.android.location.fused 是触发开机循环的高危包,com.android.shell 断了 ADB,com.google.android.permissioncontroller 影响角色管理。
4.2 性能三件套
adb shell settings put global window_animation_scale 0
adb shell settings put global transition_animation_scale 0
adb shell settings put global animator_duration_scale 0
adb shell pm trim-caches 1G # 清 1G 缓存(来自社区实测)
息屏超时(5 分钟):
adb shell settings put system screen_off_timeout 300000
4.3 自己构建
# apps.txt 里写你的默认应用包名,一行一个
brew install openjdk@17
brew install --cask android-commandlinetools
sdkmanager "platforms;android-34" "build-tools;34.0.0"
sh build.sh
sh install.sh 192.168.1.50 # 装自己 build 的版本
sh ci/smoke-test.sh 192.168.1.50 # 自检
build.sh 会在首次构建时生成 key.jks。⚠️ 这个 key 必须留着——后续更新必须用同一个 key 签名,否则用户端就会遇到 UPDATE_INCOMPATIBLE。
HDMI 输入是自动发现的,标签跟随电视语言,内置 16 种语言;改文案编辑 src/com/ansub/tvhome/Strings.java。
五、典型适用场景
- 老旧智能电视翻新:家里/父母家的 Android TV 卡顿、广告满天飞,不愿换机器。
- 给父母做减法:关掉厂商生态、促销推送,保留播放器和输入。
- 海外品牌电视去广告:TCL / Sony BRAVIA / Google TV 常见 bloatware 清理。
- 学习 ADB 自动化:一个"改动前问询、只关不删"的安全脚本范本,值得读。
六、坑与注意(≥6 条,含三段式)
坑 1:无线调试配对中途会自己断掉
- 现象:install.sh 连的是 adb pair 后的无线调试地址,脚本在流程中把"设置向导"应用关掉时,这个连接会被掐断,脚本随后报"没能关掉设置向导",但其实已经关成功了。
- 影响:误判 + 需要重跑。
- 修复:用传统 5555 端口重连,adb connect <IP>:5555,adb shell pm list packages -d 确认状态后重跑 install.sh。
坑 2:Google TV 主启动器一关,Home 键会打开"设置向导"
- 现象:某些 Google TV 上关掉 com.google.android.apps.tv.launcherx 后,Android 会让 com.google.android.tungsten.setupwraith(设置向导)接管 Home。
- 影响:电视每次开机跳进设置页,反而更糟。
- 修复:install.sh 会检测这种情况并在关设置向导之前问你。注意 YES=1 不会关它,必须显式 YES_SETUP=1。已在 Sony BRAVIA 和 TCL Smart TV Pro(Google TV 14)验证,但并非所有机型都测过。
坑 3:pm disable 是"软关",不是删除
- 现象:被禁用的包仍占 /data 磁盘空间。
- 影响:内存能回收,存储回收不了。
- 修复:想要真正释放空间需 adb uninstall,但 tv-detox 刻意不做——保持可逆是它的核心卖点。
坑 4:签名不一致会导致装不上
- 现象:adb install -r 报 UPDATE_INCOMPATIBLE。
- 影响:无法覆盖安装新版。
- 修复:脚本会自动 uninstall com.ansub.tvhome 再装(会丢应用配置);或确保用同一个 key.jks 签名。
坑 5:电视和电脑不在同一网段 / 路由器开了 AP 隔离
- 现象:adb connect 后 get-state 返回非 device。
- 影响:脚本直接退出。
- 修复:确认同 Wi-Fi;企业网/访客网络常禁用设备互访,换网络。脚本对 unauthorized 状态会提示"在电视上点允许并勾选始终允许"。
坑 6:ADB 长期开着是一台远程控制入口 - 现象:USB/网络调试一旦常开,同网段任何主机理论上都能连。 - 影响:安全风险,尤其是电视可能存着账号登录态。 - 修复:清理完立刻在电视上关掉调试选项。
坑 7:关掉输入法/Play/HDMI 输入 = 电视变砖
- 现象:某些包(如 com.google.android.inputmethod.latin)被禁后无法输入,com.android.shell 被禁后 ADB 断连。
- 影响:功能不可用,且你失去了修复它的通道。
- 修复:严格遵守 README 提示词里的禁动清单,不确定就问。
坑 8:Google Play Protect 拦截安装
- 现象:adb install 后电视弹 Play Protect 提示。
- 影响:安装中断。
- 修复:按脚本提示在电视上走完确认流程再重跑。
坑 9:仓库极新,缺乏长期验证 - 现象:仓库仅 17 commits,README 里有"Release"链接但我未确认到具体 tag 号。 - 影响:机型覆盖与长期稳定性未知。 - 修复:待核:具体 release 版本号未在本次抓取中确认,使用前请以仓库 Release 页面为准。
七、与同类对比
| 方案 | 定位 | 是否需 AI | 可逆性 |
|---|---|---|---|
| Ansub/tv-detox | 自带极简主页 + 清理提示词 + 脚本 | 可选,AI 是推荐路径 | 好(disable + undo.sh) |
Gathin23/cleanyourtv |
同类,纯 ADB 去广告 + tvOS 风格 launcher | 否(同样适配 Claude Code) | 相当 |
mihirgupta0900/tv-home |
Apple TV 风格单屏主页 | 否 | 相当 |
seun-novodev/android-tv-debloat-toolkit |
更通用的 debloat/装包工具箱 | 否 | 相当 |
conreo/couchy-launcher |
纯 launcher,FOSS,无广告无追踪 | 否 | — |
差异点:tv-detox 的独特之处是把"AI 提示词"当作一等公民产品——它交付的不只是脚本,还有一段带安全护栏的自然语言工作流。多数同类只给脚本,安全约束靠读者自觉。
八、一句话推荐结论
推荐给:手里有一台卡顿的 Android TV / Google TV,愿意花 20 分钟开开发者模式、且能接受"每一步都要按遥控器确认"的人。不推荐给:怕折腾、需要电视开箱即用、或本来就用新机器的人。
它用 12 MB 内存换一个安静的主页,用"只关不删 + undo.sh"换一个随时可退出的安全边界——在 AI 代理动辄越权的当下,这个克制反而是它最值得学的地方。
来源:GitHub README.md、install.sh 原文(raw.githubusercontent.com/Ansub/tv-detox/main/,2026-10-21 抓取);作者 X 公开帖(x.com/justansub);YouTube 实测视频(Codedigipt, 2026-10-18);社区实测 Medium 文章(用于 4.1 禁动清单)。仓库内 docs/PROMPT.md 路径 404,提示词正文取自 README 与 X 帖。