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 命令,并以一条探测命令判定环境就绪。
电视端
- 进入设置 → 设备偏好 → 关于,用遥控器 OK 键连按 7 次Build(版本),返回后开发者选项解锁;
- 打开USB 调试;如果菜单里还有"网络/ADB 调试"开关,一并打开。小米等部分机型没有独立开关,但只要开了 USB 调试,5555 端口的网络 ADB 也会自动开放;
- 在设置 → 网络里记下电视的 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 键会失去落点。
- 编辑 launcher/app/src/main/res/values/config.xml,设置 dock 的 4 个应用、隐藏应用、Live TV 包名(不编译也行,用下面的主题方式推送配置);
- 构建并安装(需要 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 校验 |
| 换桌面后搜索框弹不出软键盘(小米常见) | 默认输入法指向了未安装的百度 IME | tools/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),仅供参考