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,而是把两件事打包成一个可复现流程:

  1. 清理——用 adb shell pm disable 关掉厂商预装 bloatware、广告行、推荐流(注意是 disable,不是 uninstall,可逆)。
  2. 重建主页——装一个只显示"你的应用 + 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 帖。