ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

CleanYourTV:一键安卓电视去广告、换桌面完整步骤

CleanYourTV:一键安卓电视去广告、换桌面完整步骤

CleanYourTV:一键安卓电视去广告、换桌面完整步骤

【免费下载链接】cleanyourtvDebloat any Android or Google TV over Wi-Fi and get an Apple TV-style home.项目地址: https://gitcode.com/gh_mirrors/tv/cleanyourtv

新机 TV 首页塞满赞助横幅和"为你推荐",后台还持续向厂商回传使用数据。CleanYourTV 是一套纯 Wi-Fi 工具集:只靠pm disable-user禁用广告、遥测和预装杂包,不卸载任何系统应用,不需要 root、不需要数据线。做完你能得到安静的后台、没有广告行的桌面,以及一个可选的 532 KB 苹果风格启动器。

哪些电视能操作:CleanYourTV 的适用范围清单

先看边界,避免做一半发现走不通:

  • ✅ Android TV / Google TV 机型(小米、TCL、海信、索尼、一加、Nvidia Shield 等):禁用清单 + 启动器全流程可用。仓库 examples/ 目录里有 345 个机型、93 个品牌的实测清单可参考。
  • ⚠️ 亚马逊 Fire TV:只能做去广告这半截,Fire OS 不允许第三方启动器接管 Home;2015 款 Fire TV Box(Fire OS 5)连pm命令都会拒绝。
  • ⚠️ 少数中国市场的 TCL 机型:固件拒绝安装任何第三方启动器,只能去广告,换不了桌面。
  • ⚠️ 电视系统低于 Android 8.0(API 26):禁用可用,但新启动器装不了。
  • ❌ 三星 Tizen、LG webOS、Roku、无 ADB 的电视盒子:系统不同,本方案完全不适用。

下面左侧是带赞助横幅的原生桌面,右侧是清理后的效果:

动手前:电视端和电脑端如何完成 Wi-Fi 调试准备

本节要达成的事:让电脑能通过 Wi-Fi 直接对电视执行 Android shell 命令,并以一条探测命令判定环境就绪。

电视端

  1. 进入设置 → 设备偏好 → 关于,用遥控器 OK 键连按 7 次Build(版本),返回后开发者选项解锁;
  2. 打开USB 调试;如果菜单里还有"网络/ADB 调试"开关,一并打开。小米等部分机型没有独立开关,但只要开了 USB 调试,5555 端口的网络 ADB 也会自动开放;
  3. 在设置 → 网络里记下电视的 IP,确认电脑和电视在同一个 Wi-Fi 网段。

电脑端

克隆仓库并初始化 Python 虚拟环境(工具是纯 Python 客户端,不依赖 adb 二进制):

# 克隆项目 git clone https://gitcode.com/gh_mirrors/tv/cleanyourtv cd cleanyourtv # 建虚拟环境并安装依赖 python3 -m venv tools/venv tools/venv/bin/pip install -r tools/requirements.txt # 设置电视地址,后文所有命令都靠它找到电视 export TV_HOST=192.168.1.50

跑一条探测命令验证链路:

tools/venv/bin/python -I tools/tv.py --probe

看到电视弹出"允许 USB 调试?"授权框,点允许;电脑端打印出型号、Android 版本、固件号,即环境就绪。

去广告完整步骤:从列出包名到批量禁用

步骤 1:列出已安装包,挑出广告与遥测包

动作:

# 列出电视上全部已安装的包 tools/venv/bin/python -I tools/tv.py 'pm list packages'

成功信号:终端打印一长串package:开头的包名。按四类审视——厂商遥测(如com.xiaomi.statistic)、厂商内容与广告服务(如com.mitv.tvhome.atv)、后台杂项(电视管家、智能分享、语音桥接)直接处理;流媒体、语音助手、Chromecast、系统更新逐个确认,只处理你确定不用的。

本步坑点:只做pm disable-user禁用,不做卸载,否则不可逆。同时别碰 Android 核心包(com.android.systemui、com.android.settings、包安装器等),社区有因禁用核心包导致电视无法开机的案例;tools/disable.sh 内置了这类包的拒绝清单,整份清单含核心包会直接中止执行。

步骤 2:选定与你的机型对应的 debloat 清单

动作:在 examples/ 下按品牌+型号找文件夹,每个文件夹含一份debloat.txt(一行一个包名,#分组注释)。例如小米 Mi TV 4A 的 examples/xiaomi-mi-tv-4a/debloat.txt 头部注明了适用机型和固件版本。机型不在列表里,就近选同平台机型做起点。

成功信号:清单文件存在,头部注释能对上你的型号/系统版本;你想保留哪个包,就把那一行注释掉,脚本只处理未注释的行。

本步坑点:不要手改包名格式。脚本要求每行是纯包名,混入空行以外的非法内容(分号、引号、命令)时整份清单会被拒收,这是防止清单内容被当 shell 命令执行的防护。

步骤 3:批量下发禁用命令

动作:

# 把清单应用到电视:逐包执行 pm disable-user --user 0 TV_HOST=192.168.1.50 tools/disable.sh examples/xiaomi-mi-tv-4a/debloat.txt

成功信号:终端逐条回显每条禁用命令,末尾打印pm list packages -d的已禁用列表,清单里的包全部在列。脚本执行前会先在~/.cleanyourtv/写下电视的当前状态记录,这是后面一键还原的依据。

本步坑点:一次 shell 调用只对应一条pm命令,不要自己用;或&&把多条禁用链在一起写——链式写法可能在第一条之后静默中断。另外,如果清单里含有当前 Home 归属的启动器、且电视上没有其他启动器可接管,脚本会跳过该条并说明原因;这是 Home 防护,不是报错,装好新启动器(下一节)后重跑一次即可补上。

步骤 4:重启电视并复核禁用状态

动作:

# 重启电视 tools/venv/bin/python -I tools/tv.py --reboot # 开机后复核:已禁用列表应包含清单上的全部包 tools/venv/bin/python -I tools/tv.py 'pm list packages -d'

成功信号:-d列表与清单一致,电视 Home 键行为正常。

本步坑点:部分固件(如 TCL Android 9)每次开机会按自己的列表重新启用某些包。遇到这种情况不必每次开机追禁,用仓库的核对工具对比并修复:

TV_HOST=192.168.1.50 tools/venv/bin/python -I tools/check.py examples/xiaomi-mi-tv-4a/debloat.txt --fix

进阶选项:如何换成 532 KB 的新启动器与推送主题

为什么可以跳过:去广告本身已经完成,禁用项不会因为不换桌面而失效。这一步只是把原生桌面换成纯黑背景、底部固定 4 个应用 dock、顶部带输入源/网络/设置胶囊按钮的 tvOS 风格界面;启动器约 532 KB、纯 Java 编写,专为 1 GB 内存的电视设计,无模糊、无视频轮播、无后台服务。

怎么开:先改配置再安装,顺序反了 Home 键会失去落点。

  1. 编辑 launcher/app/src/main/res/values/config.xml,设置 dock 的 4 个应用、隐藏应用、Live TV 包名(不编译也行,用下面的主题方式推送配置);
  2. 构建并安装(需要 JDK 17 + Android SDK platform 34):
TV_HOST=192.168.1.50 launcher/build-and-install.sh

脚本会先查询当前 Home 归属,只禁用它认识的原生启动器(com.google.android.tvlauncher等 4 个),并把新启动器com.gathin.tvhome设为默认;如果 Home 没落到新启动器上,它会自动回滚。多个应用争抢 HOME 时可手动指定:cmd package set-home-activity --user 0 com.gathin.tvhome。

怎么关:跑 tools/restore.sh(见下一节),或在电视"设置 → 应用"里卸载com.gathin.tvhome并把默认 Home 指回原生启动器。

主题同样可开可关:仓库自带 10 套主题,一条命令推送并重启 Home,不满意一条命令移除:

# 推送主题(如 aurora)到电视 TV_HOST=192.168.1.50 tools/theme.sh themes/aurora # 移除主题覆盖,回到 config.xml 默认 TV_HOST=192.168.1.50 tools/theme.sh --reset

如何回退:一条命令整体还原与它的隐藏依赖

所有禁用操作都可逆,还原一条命令:

# 传回当初禁用时用的同一份清单 TV_HOST=192.168.1.50 tools/restore.sh examples/xiaomi-mi-tv-4a/debloat.txt # Google TV 机型可追加原生启动器包名,让 Home 精确回到它 TV_HOST=192.168.1.50 tools/restore.sh examples/xiaomi-mi-tv-4a/debloat.txt com.google.android.apps.tv.launcherx

⚠️还原时务必传当初那份清单文件。tools/restore.sh 依赖 tools/disable.sh 运行时写入的状态记录(~/.cleanyourtv/)来回放:你自己手动禁过的包会保持禁用,Home 归属回到改动前的组件,三项动画 scale 也一并还原;没有记录时它退化为启用整份清单。

两点补充:还原后新启动器仍留在电视上,想去掉就在"设置 → 应用"里卸载;完全够不到电脑时,电视自己的"设置 → 应用"页面也能逐个重新启用已禁用的包。

高频问题速查:现象、根因与处理办法

现象根因处理办法
macOS 上adb connect报No route to host,端口实际是通的新版 macOS 本地网络隐私策略按应用拦截 Google 签名的adb二进制全程改用 tools/tv.py,纯 Python 客户端,不走 adb 二进制
推送 APK 等大文件卡死网络直推大文件不稳换 tools/b64push.py:base64 分块传输 + md5 校验
换桌面后搜索框弹不出软键盘(小米常见)默认输入法指向了未安装的百度 IMEtools/tv.py 'ime set com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME'切到 Gboard
固件升级后部分包被重新启用固件按自己的列表在开机时恢复启用tools/check.py <清单> --fix对比并恢复
想恢复固件更新能力清单里禁用了更新服务(如com.xiaomi.mitv.updateservice)注释掉该行重跑脚本,或单条pm enable恢复
5555 端口始终连不上电视处于 Wireless debugging 配对模式,或 USB 调试开关被运营商固件移除配对模式先走adb pair流程;开关被移除属固件限制,详见 docs/TROUBLESHOOTING.md
Home 键无响应或落回错误界面原生启动器已禁但新启动器未装好或未接管先装好com.gathin.tvhome,再cmd package set-home-activity指定默认 Home

附录:仓库关键文件路径

  • tools/tv.py — 纯 Python ADB 客户端(shell、批量命令、push/pull、重启、截图)
  • tools/disable.sh / tools/disable.ps1 — 应用去广告清单(Windows 用 .ps1)
  • tools/restore.sh / tools/restore.ps1 — 一条命令整体还原
  • tools/recovery.py — 生成并校验还原记录、输出还原命令
  • tools/check.py — 固件更新后核对与--fix修复
  • tools/b64push.py — 大文件分块推送
  • tools/theme.sh — 推送主题、--reset移除
  • tools/relay.py — 沙箱环境的端口转发中继
  • launcher/build-and-install.sh — 构建启动器并接管 Home
  • launcher/app/src/main/res/values/config.xml — dock、隐藏应用等配置
  • examples/ — 各机型去广告清单(debloat.txt+tv.json)
  • examples/xiaomi-mi-tv-4a/debloat.txt — 可直接改用的模板清单
  • themes/ — 10 套现成主题
  • docs/TROUBLESHOOTING.md — 连接与故障排查细节
  • PROMPT.md — 交给编码助手自动执行的流程说明

【免费下载链接】cleanyourtvDebloat any Android or Google TV over Wi-Fi and get an Apple TV-style home.项目地址: https://gitcode.com/gh_mirrors/tv/cleanyourtv

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进