CleanYourTV 从零开始详细教程:不 root 不插线,把安卓电视广告清干净

先给结论:智能电视的广告不是”系统坏了”,是厂商把首页推荐位卖掉了。有个开源项目让 AI 帮你把这些预装服务和推荐位禁用掉,再换一个 300 KB 的干净桌面 —— 全程 不用 root、不用拆机插线、什么也不卸载,反悔了一条命令全还原。

代价是你要有十来分钟的耐心:开一次电视的开发者选项,把一段提示词粘给能执行命令的 AI 助手,然后回答几个勾选题。下面是从准备到还原的完整流程。

0
元 · 无付费项
66
款已验证机型
300
KB 的桌面
1
条命令还原

你只做三步:在电视上开调试、把提示词粘给 AI、回答几个勾选;之后 AI 按顺序做完七件事

一、先说清楚:那些广告到底从哪来

很多人以为电视卡、开机有广告是”用久了”,其实跟硬件关系不大。厂商在出厂系统里预装了一整套内容推荐和广告服务,它们会在开机时拉起、在首页占位、在后台回传数据。你买的是一台电视,但它同时是一个广告位。

这些东西的特点很一致:

  • 开机就启动,抢占本就不多的内存和 CPU;
  • 首页第一屏不是你的应用,是”推荐”和”赞助”;
  • 你没法在设置里关掉,因为压根没给开关。

所以”去广告”的本质不是黑掉电视,而是把你不想要的系统预装服务停掉。这件事在安卓上有标准做法,只是普通人不知道入口。

三条老路,各有各的坑

做法 问题 风险
刷第三方固件 要拆机、要短接、要找对应机型的包,刷错直接变砖 极高,且失去保修
卸载预装应用 很多是系统依赖,卸了之后投屏、语音、HDMI 输入跟着坏 中高,且难复原
改 hosts 拦域名 只能拦住走域名请求的广告,走 IP 或系统内嵌的拦不住 低,但效果有限

这个项目走的是第四条路:用安卓自带的 pm disable-user 把包禁用掉。禁用和卸载的区别很关键 —— 包还在系统里,数据没删,随时能重新启用。这就是”一条命令还原”能成立的原因。

二、它凭什么敢说”随时能还原”

只禁用,不删除

安卓的包管理器有两个动作:pm uninstall 是删除,pm disable-user --user 0 是”对当前用户禁用”。后者对系统应用安全得多 —— 应用还在,只是不启动、不出现在桌面。

项目里所有去臃肿动作都只用后者。所以你看到的不是”被删干净的电视”,是”被静音的电视”。

动手之前先备份

提示词里明确要求 AI 在改任何东西之前,先保存完整的包列表、已禁用列表、getprop 输出和全部设置项,并同时写一个还原脚本。备份和还原是同一个动作的两面,这一步不做,后面所有”安全”都是空话。

新桌面只有 300 KB

换桌面是这件事最容易被误解的部分。它没有塞进去一个大而全的启动器,而是一个纯 Java + AndroidX RecyclerView 写的小应用(包名 com.gathin.tvhome),作者称安装后约 300 KB,没有网络请求、没有后台服务、没有模糊特效 —— 专门照顾 1 GB 内存的老电视。

改造前后对比:左边是带赞助广告的原厂首页,右边是无广告的自建桌面

三、开干之前:两个准备,一张兼容表

你要准备什么

项目 要求
网络 电脑和电视连同一个 Wi-Fi。不在同一个网里也能做,但要额外配 Tailscale,后面讲
AI 助手 任意能在你电脑终端里执行命令的编程助手,Claude Code 是最常被提到的,Codex CLI、opencode 这类同样可以
Python 3.x。项目自带一个纯 Python 的 ADB 客户端,连 adb 命令都不用装
(可选)编译桌面 想自己编译那 300 KB 的启动器,需要 JDK 17 和 Android SDK platform 34

你的电视能不能做

系统 能做到什么 说明
Android TV 去臃肿 + 换桌面 小米、TCL、海信、索尼、OnePlus、Realme、NVIDIA Shield 等,主力支持
Google TV 去臃肿 + 换桌面 开机向导那一步有个坑,第七节单独说
Fire TV 只能去臃肿半套 Fire OS 不把 Home 交给第三方启动器,桌面换不了
三星 Tizen / LG webOS 不行 不是安卓,整套方法用不上。社区另有 webOS 移植项目
部分国行 TCL 看运气 有些机型拒绝安装任何第三方桌面,示例列表的文件头会注明

网上流传的说法是”三星、LG、Fire TV 都不行”。前两个确实不行,Fire TV 是打了折 —— 广告和预装服务能清,桌面换不了。别被一句话总结带偏。

四、三步操作,细节都在这

第一步:在电视上打开开发者选项

遥控器走这条路径(不同品牌文字略有差异,菜单层级基本一致):

设置 → 设备偏好设置 → 关于 → 光标停在「版本号」上连按 7 次
→ 返回上一级 → 出现「开发者选项」→ 打开「USB 调试」

如果电视上还有「网络调试」或「ADB 调试」的开关,一起打开。全程保持电视开机、别让它休眠。

Google TV 和部分新机型没有网络调试开关,只有「无线调试」。这种情况要配对一次:在电视的「无线调试 → 使用配对码配对设备」里拿到配对码和端口,然后让 AI 执行 adb pair 再 adb connect。注意:无线调试在 Wi-Fi 断开后会自己关闭,中途别切网。

第二步:把仓库和提示词交给 AI

克隆仓库这一步不是必须的,但强烈建议做 —— 因为 AI 有了本地代码,可以直接复用现成的工具和启动器源码,不用从零写,这就是”十几分钟”和”一下午”的差别。

git clone https://github.com/Gathin23/cleanyourtv.git
cd cleanyourtv

然后把仓库根目录的 PROMPT.md 整段贴进你的 AI 助手,把里面 <MODEL NAME HERE> 换成你的电视型号。提示词开头那句”You have the repo”之类的上下文别删,模型要靠它决定要不要复用 tools/。

贴完记得补一句:「仓库已经在当前目录,请直接复用 tools/ 和 launcher/,只改 config.xml」。不加这句,有些助手会以为你要它从头写一套。

第三步:回答几个勾选题

接下来 AI 会在电视上弹「允许 USB 调试吗」,你点允许。然后它会问你几件事,都是”动之前先确认”的类型:

  • 哪些 App 你还在用 —— 流媒体、投屏、语音助手,它会列出来让你勾;
  • 底栏放哪 4 个 —— 你最常用的四个应用;
  • 要不要保留系统更新服务 —— 关掉之后不会自动更新,要手动开回来;
  • USB 口上插了什么 —— 有些电视开 USB 调试后会断掉 USB 口供电,插着音箱或硬盘会没反应。

这里的原则是:不确定的就别勾。禁用可以撤销,但因为一个勾选导致投屏坏了,排查起来很费时间。

五、真正干活的是 AI,它按顺序做七件事

提示词把流程写得很死,基本是按工程规范来的,这是它能稳定跑通的原因:

序 动作 关键约束(提示词里写死的)
1 找到电视并连 ADB 优先主机名 / ARP 表;跨网用 Tailscale 地址,不许扫描本地网段
2 备份全部清单 包列表、已禁用列表、getprop、所有 settings,落盘后再动手
3 把预装软件分类 分成遥测分析、厂商内容与广告、可省的后台服务、预装 App、流媒体五类
4 分批禁用 只用 pm disable-user --user 0;一批一批来,每批之间截图;pm 命令一条一个 shell 调用
5 (可选)拦 App 内广告 通过 Private DNS 指向 AdGuard DNS,第八节细说
6 编译并安装桌面 先确认电视能装 APK(部分国行会报 INSTALL_FAILED_VERIFICATION_FAILURE)
7 截图逐项验收 每一步都用从电视抓的截图确认,不靠”应该好了”

第 4 步那条”分批 + 截图”值得单独说。一次性禁掉三十个包很快,但一旦首页崩了,你根本不知道是哪一个包干的。小批量是为了出错时能定位,这是整套流程里最像老工程师的地方。

改造后的电视首页实拍:问候语、时间、三个磨砂按钮,下方是自选 dock

六、最后你会得到一个什么样的首页

不是”能用的桌面”,是照着 Apple TV 的视觉逻辑重做的一个。具体有这么几层:

顶部一行状态与入口。 左边是问候语、时间和日期,右边三个磨砂按钮:输入源、网络(显示 Wi-Fi 名或以太网)、设置。

顶部大字标题与环境光:光标停在哪个应用就用大字打出名字,背景取该应用主色

中间是大字标题。 光标停在哪个应用上,就用大字把它的名字打出来,背后的环境光取这个应用图标的主色。这个设计是 Apple TV 的招牌动作,也是”看起来不像电视盒子”的关键。

下面是 dock 和网格。 dock 里放你选的四(或五、六、七)个应用,再往下按方向键,剩下的应用以网格滑上来。

输入源菜单:HDMI 口显示连接状态与设备名,另有 AV 与 Live TV

输入源菜单。 HDMI 口会显示当前有没有信号、接的是什么设备(图里那个 PlayStation 5 是名字改过的),另外还有 AV 和 Live TV。

时钟屏保。 一个细字体的时钟在环境光上缓慢漂移,位置一直在动,所以不会烧屏。

时钟屏保:细字时钟在环境光上缓慢漂移,避免烧屏

主题。 换配色、换壁纸、换 dock 样式和列数,都不用重新编译,推一个 config.json 过去就行。

主题切换:换配色与壁纸不用重新编译,推一个配置文件即可

语言跟着电视走,官方列了 14 种,包含简体中文;希伯来语还专门做了从右往左的布局适配。这些细节谈不上必需,但能看出作者是真的在自己用。

七、出问题怎么救

还原命令

还原脚本会把当初禁用的包逐个启用、把原厂桌面设回 Home、把动画缩放重置。所以你一定要留着当初用过的那个 debloat.txt:

# 项目自带的工具(Python 版 ADB,不依赖 adb 命令)
TV_HOST=192.168.1.50 tools/restore.sh examples/你的机型/debloat.txt

# Google TV 需要额外指定原厂桌面包名
TV_HOST=192.168.1.50 tools/restore.sh examples/你的机型/debloat.txt com.google.android.apps.tv.launcherx

还原不会删掉新装的桌面,它只是把 Home 交回原厂。想彻底清掉新桌面,去电视的「设置 → 应用」里卸载就行。

三个基本一定会遇到的坑

坑 怎么处理
macOS 连不上 ADB(报 No route to host) 不是网络问题,是 macOS 的”本地网络”隐私权限拦住了 adb 二进制。别去调路由器,直接用项目里的纯 Python 客户端 tools/tv.py
禁用原厂桌面后黑屏 / 停在工厂测试页 顺序错了:必须先把新桌面装好并确认能跑,再禁用原厂桌面。项目的安装脚本已经替你排好这个顺序,别手动反着来
Google TV 开机循环崩溃 是 com.google.android.tungsten.setupwraith(开机向导)抢了 Home。禁它之前先查:dumpsys wifi 里的网络若是安装向导时保存的,禁掉它会一起删掉 Wi-Fi。已经在崩了,用一条命令把原厂桌面重新启用就能回来

收尾:把调试口关掉

这一步很多人会忘,但它比去广告更重要。网络 ADB 走的是 5555 端口的明文协议,在某些 ro.adb.secure=0 的固件上,同网段任何设备都能直接拿到 shell。做完必须:

1. 电视:开发者选项 → 关掉「USB 调试」和「网络调试」→ 撤销 USB 调试授权
2. 重启电视
3. 电脑上确认端口已关:nc -vz 电视IP 5555   # 这条必须失败

桌面不依赖调试,关掉之后照常工作。

八、还能再往前一步

把 App 里面的广告也拦掉(可选)

上面做的是”系统层的广告位”。App 内部的广告要靠 Private DNS(Android 9 及以上)—— 把 DNS 指向一个会过滤广告域名的解析服务,全系统的广告和追踪域名直接解析失败,重启也不失效:

tools/tv.py 'settings put global private_dns_specifier dns.adguard-dns.com'
tools/tv.py 'settings put global private_dns_mode hostname'

两条限制必须知道:它拦不掉 YouTube 广告(视频和广告来自同一批服务器,域名一样);而且这个解析服务从此能看到电视发出的所有 DNS 请求。出问题就切回去:

tools/tv.py 'settings put global private_dns_mode opportunistic'

给爸妈家的电视弄,人不用过去

思路是走一条私有网络隧道(比如 Tailscale),而不是去路由器上把 ADB 端口暴露到公网。千万别开端口转发,那是把一个无密码的 shell 挂到互联网上。

不想让 AI 代劳,自己敲也行

整套流程是”AI 辅助”,不是”必须用 AI”。项目自带 tools/tv.py(纯 Python ADB 客户端)、disable.sh、restore.sh、theme.sh,Windows 下每个脚本都有对应的 .ps1。你完全可以照着上面的表格一步步手敲,只是慢一点、也更容易漏掉截图验证。

最后

这件事有意思的地方不在”去广告”,在于它展示了一种新的做事方式:把一段写得很细的操作规范交给 AI,让它在你自己的设备上一步步执行、每步截图验收、出错能回退。 换成别的场景 —— 整理一堆文件、批量改图片、给旧手机瘦身 —— 套路是一样的。

开源地址:github.com/Gathin23/cleanyourtv(MIT 协议,10 月 17 日建仓,10 月 19 日由 tv-vibehack 改名,旧链接仍然可用)。

站内相关

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发
头像-二楼后座
欢迎您留下宝贵的见解!
提交
头像-二楼后座

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容