引言
电视是你买的,首页上的广告位却不是你选的。
这是"一天一个开源项目"系列的第 248 篇文章。今天带你了解的项目是 CleanYourTV(Gathin23/cleanyourtv)。
作者发了一条推文:用 Claude Code 通过 Wi-Fi 把父母家电视的首页清理干净,前后对比图。这条推文据 README 所述获得了 740 万次浏览,很多人照着做,回复里的电视型号和清单最后变成了仓库里的内容。项目 2026 年 10 月 17 日创建,写这篇文章时已经有近 3.8 万 Star、4500 多个 Fork。
它有意思的地方不在"又一个去广告脚本",而在于交付方式:仓库本身是一套带安全护栏的工具,加上一份交给编程助手的提示词。助手负责在你的电视上"发现"有哪些预装应用,并在动到你可能在用的东西之前先问你。
你将学到什么
- CleanYourTV 做了什么,以及"停用而不是卸载"为什么是它的安全底线
- "备份 → 停用 → 安装启动器"三步流程的具体机制
- 一个只有 523 KB 的原生启动器是怎么设计的,主题、模块卡片、插件怎么扩展
- 它如何保证"不会把电视搞到没有主屏幕",以及怎么一行命令还原
- 固件更新后怎么检测并修复"漂移"
- 适用范围与已知限制
前置知识
- 知道 Android 的 ADB(Android Debug Bridge)是什么,会在终端里敲命令
- 了解 pm disable-user 这类包管理命令的大致含义(不了解也可以,下文会解释)
- 对"让 AI 编程助手操作真实硬件"这件事感兴趣
项目背景
项目简介
CleanYourTV 针对的是 Android TV 和 Google TV。这类电视出厂时往往带着厂商的遥测服务、广告服务、内容推荐栏和一批没人要的预装应用,首页还会插入赞助内容。
项目的思路很直接:安卓电视和安卓手机一样有调试桥。在电视的开发者选项里打开 USB 调试,在电脑上授权一次,之后用的全是标准 Android 工具。
没有 root,没有数据线,没有卸载任何东西,后悔了有一行命令还原。
作者与社区
- 作者:Gathin23(GitHub 用户,项目主页 cleanyour.tv)
- 创建时间:2026-10-17
- 前身:仓库原名 tv-vibehack,10 月 19 日改名,旧链接仍然有效
- 社区:README 自述四天内收到 200 多位贡献者提交的 170 多款电视清单;项目卡片上的数据是 316 款电视、89 个品牌、28 种语言
另外值得一提的是,项目官网明确声明:cleanyourtv.com 等其他同名域名不由本项目运营。
项目数据
数据取自 2026-10-26 的 GitHub 页面,增长很快,仅供参考:
- ⭐ GitHub Stars: 约 37,800
- 🍴 Forks: 约 4,500
- 📦 最新版本: v3.0.0(2026-10-25 发布,此前 10 月 20 日至 23 日连发了 v2.4 到 v2.7)
- 📄 License: MIT(字体 Outfit 使用 SIL OFL)
- 🌐 官网: cleanyour.tv
- 💻 语言构成: Python、Java、Kotlin、Shell、PowerShell
主要功能
核心作用
做两件事:
- 去臃肿(debloat):停用厂商的遥测、广告服务、内容栏目和预装垃圾应用
- 换主屏:安装一个体积很小的原生启动器,设为默认主屏幕,外观类似 Apple TV
"去臃肿"这一半对不同品牌差异很大,所以项目没有给一份通用清单,而是让编程助手在你的电视上先发现有什么,再逐项确认。
使用场景
- 清理自己家的电视
- 电脑和电视在同一 Wi-Fi,助手大约十五分钟完成备份、停用、安装和逐步截图验证
- 只有一部安卓手机的人
- 社区作者 udhaykumarbala 做了一个免费开源的手机 App,连接电视、先展示计划、保存还原点,再执行清理
- 帮家人远程清理
- 通过私有的 Tailscale 链路,而不是在路由器上开放 ADB 端口
- 给自己的电视型号贡献清单
- 每款电视一个目录,放在 examples/ 下,后来的人可以直接复用
- 在此基础上二次开发
- 项目的 SHOWCASE.md 收录了 121 个衍生项目:主屏、Fork、插件、工具和其他平台的移植
快速开始
需要和电视在同一 Wi-Fi 的电脑,以及一个有 shell 权限的编程助手(Claude Code、Codex 或 Gemini CLI 均可)。
第 1 步,在电视上:设置 → 设备偏好 → 关于 → 连按 7 次"版本号" → 返回 → 开发者选项 → 打开 USB 调试(如果有"网络调试 / ADB 调试"开关也一并打开),电视保持开机。
第 2 步,在电脑上:克隆仓库,用助手打开这个目录,然后把 PROMPT.md 的内容贴给它,填上电视型号。
git clone https://github.com/Gathin23/cleanyourtv
cd cleanyourtv
# 用你的编程助手打开此目录,再粘贴 PROMPT.md 并填写电视型号
第 3 步,跟着走:在电视上点"允许 USB 调试",然后回答助手的清单:你常用哪些应用、dock 放几个、要不要保留语音助手、Chromecast 和系统更新。
必须克隆仓库的原因是:助手会复用仓库里的 tools/disable.sh 和 launcher/build-and-install.sh,而不是自己临场写脚本。备份、主屏保护和还原记录都在这些脚本里。
手动方式
助手做的所有事,你也可以手动执行。工具链只依赖 Python 3:
python3 -m venv tools/venv && tools/venv/bin/pip install -r tools/requirements.txt
export TV_HOST=192.168.1.50 # 电视的 IP
tools/venv/bin/python -I tools/tv.py --probe # 型号、安卓版本、固件
tools/disable.sh examples/xiaomi-mi-tv-4a/debloat.txt # 应用一份去臃肿清单
tools/restore.sh examples/xiaomi-mi-tv-4a/debloat.txt # 撤销,换回原厂主屏
TV_HOST=192.168.1.50 launcher/build-and-install.sh # 构建并安装启动器,设为主屏
tools/theme.sh themes/aurora # 推送主题,--reset 移除
核心特性
- 纯黑主屏 + 底部 dock
- 四个常用应用放在圆角 dock 里,位置和 Apple TV 一致
- Top shelf 与环境光
- 聚焦的应用名用大字显示,背后的光晕取自应用图标的主色
- 一块浮动的玻璃高光
- 在图块之间弹性移动,聚焦的图块会抬起并显示名称
- 主题不用重新构建
- 颜色、壁纸、dock 和列数通过 config.json 经 Wi-Fi 推送,仓库自带十个主题
- 28 种语言
- 跟随电视语言,希伯来语是完整镜像的从右到左布局
- 模块卡片(Module cards)
- 任何电视应用都可以声明自己的图块,但每个应用要经你批准一次才会显示
- 应用库与图块菜单
- 长按 OK 可以移动图块、从首页移除、查看应用信息
- 时钟屏保
- 缓慢漂移的时钟,避免烧屏
项目优势
为什么值得看?
- 它把"让 AI 操作真实设备"这件事放进了一套有边界的工具里,而不是让模型自由发挥
- 全部走电视自己对所有者开放的接口,不绕过任何锁、DRM 或版权保护
- 社区贡献的清单让"下一个同型号的人"不用重新摸索
项目详细剖析
三步流程的底层机制
README 把整个过程概括成一张表:
关键在第二步。pm disable-user 和你在"设置 → 应用 → 停用"里点的那个按钮是同一个开关,应用文件并没有被删除,只是在当前用户下被禁用。这是整个项目可逆性的来源。
保护主屏:不能让电视"没有首页"
去臃肿最危险的一类事故,是把当前主屏应用停用了,而新的启动器还没就位,结果主屏落到一个工厂测试应用上,甚至系统循环崩溃。
项目在脚本里做了几层防护:
- 安装脚本会询问电视当前哪个应用拥有 Home,并且只停用它认识的原厂启动器,也就是 KNOWN_STOCK_LAUNCHERS 中的四个:com.google.android.tvlauncher、com.google.android.apps.tv.launcherx、com.google.android.leanbacklauncher,以及小米的 com.mitv.tvhome
- tools/disable.sh 在停用任何东西之前先做同样的检查:如果清单里包含拥有 Home 的应用,而电视上没有其他应用响应 HOME,就跳过这一项并说明原因,继续处理其余条目
- 设置向导、设置应用、厂商的 FallbackHome 和工厂测试应用虽然也会响应 HOME,但不算数
- 启动器安装后如果 Home 没有落到它身上,脚本会回滚
对 Google TV 还有一个坑:开机向导 setupwraith 在原厂启动器被停用后可能抢到 Home 并导致系统崩溃循环,所以要一并停用。但如果 Wi-Fi 网络是在开机向导里保存的,这个网络归 setupwraith 所有,停用它会删掉网络。所以 disable.sh 会先检查,在你重新加入 Wi-Fi 之前跳过它。
这些细节说明作者踩过很多坑,脚本里的每个 if 基本都对应一次真实事故。
还原机制:先写记录,再动手
tools/disable.sh 在改动任何东西之前,会把电视当前的样子写进 ~/.cleanyourtv/,每台电视、每份清单一个文件:
- 清单中每个包当时是启用、已停用还是未安装
- 哪个组件拥有 Home
- 三个动画缩放值
还原时重放这份记录,因此你自己之前手动停用的包会保持停用,Home 也会回到原来的组件。再次运行同一份清单时,工具保留第一次的记录,而不是用"已清理"的状态覆盖它。
没有记录的话(旧版本运行过,或记录被删),脚本会明确提示,然后退回到"启用整份清单并把缩放值重置为 1.0"。
如果电视已经连不上,电视自带的"设置 → 应用"页面同样可以重新启用这些包。
启动器:523 KB 的原生 Java
启动器是整个项目另一半的核心:
- 体积约 523 KB,纯 Java,为只有 1 GB 内存的电视设计
- 没有模糊效果,没有视频,没有网络权限,没有后台服务
- 电视需要 Android 8.0(API 26)及以上,minSdk 是编译期下限,安装脚本会先查询 ro.build.version.sdk,版本不够时直接提示两个数字,而不是在 pm install 时失败
"没有网络权限"这一点对一个声称要去掉遥测的工具来说很重要:它从根本上无法往外发数据。
配置分三层:
模块卡片与插件:把扩展点交给用户批准
任何电视应用都可以声明自己的图块(标签、说明、光晕颜色)。启动器每个应用只问你一次,默认隐藏,并把你的答案和该应用的签名密钥、卡片名绑定。想改主意,长按 Settings 进入 Module cards。
插件放在 addons/ 目录,作为模块卡片接入,不会被编进启动器本体。tools/manage.py 可以列出所有插件、主题和开关,查看电视上装了哪些,并通过运行创作者自己的脚本来安装、更新或移除。
这种"默认关闭、逐个授权"的扩展模型,让体积和隐私承诺不会被插件悄悄破坏。
遥测审计:不猜,只给证据
tools/privacy.py 解决的问题是"这些包里哪个在听我说话"。README 对此的态度很克制:许多机型上大部分包以 android.uid.system 运行,权限扫描会显示五十个包都有 RECORD_AUDIO,但没一个真的在录音;有的电视麦克风在遥控器里而不在机身里;ACR(自动内容识别)客户端只靠 INTERNET 权限就能从画面识别内容。
所以这个工具按证据分三组列出语音、ACR 和遥测候选,每项给出:
- 是否被固件自己的 voice_interaction_service 点名,或匹配 examples/ 中已知组件,还是仅仅名字相似
- 是否声明 RECORD_AUDIO、是否共享系统 UID
- AppOps 历史里是否出现过麦克风访问
加 --write privacy.txt 可以把已确认的候选转成标准清单,用 disable.sh 和 restore.sh 应用和撤销。仅靠名字匹配的包默认不写入,除非加 --include-low。
README 也坦白说明了工具的边界:它证明不了意图。AppOps 能说明某个操作被触碰过,不能说明数据流之后去了哪里。关掉语音助手也有代价,比如遥控器的麦克风键和应用内语音搜索会失效,所以报告会逐个包写明代价,而不是把它当成"赢"。
固件更新后的"漂移"检测
固件更新会覆盖已清理的系统:被停用的包回来、Home 回到原厂启动器、冒出清单里没有的新预装。
tools/check.py 把电视和你应用过的清单对比,退出码有明确含义:
加 --fix 会重新应用清单:先把 Home 切回不被停用的启动器,再停用回来的包,并读回确认。它不会自己写新的还原记录,因为只有第一次的记录里才有"清理之前"的状态;有记录时,它会先把新增项补进去,保证之后 restore.sh 仍能回到原厂。
这个设计允许你把检查丢进 cron,每周一跑一次。但文档也诚实地提醒:要让定时任务工作,电视得一直开着网络 ADB,而网络 ADB 本身是个安全隐患,需要权衡。
性能工具:把"流畅"变成可测量的东西
仓库里有一组专门度量启动器的工具:
- tools/bench.py:测量按键延迟、焦点移动、卡顿帧、冷启动、返回主屏耗时,以及空闲时的 CPU 和内存占用,不修改电视,把每次按键的原始数据写成 JSON
- tools/trace.py / trace_report.py:录制 Perfetto 跟踪并报告时间花在哪
- tools/flamechart.py:为 PR 画前后对比火焰图
- tools/screendiff.py:逐像素对比前后截图,并把你的 Wi-Fi 名称模糊掉
仓库的 tests/ 目录也有 170 多个测试文件,从 ADB 密钥权限、清单路径到文档里的数据是否与 examples/ 一致。表格(品牌统计、电视列表)由 tools/gen_tables.py 从各目录的 tv.json 生成,所以 README 里的数字不靠手改。对一个九天内涌入几百位贡献者的仓库来说,这些自动检查是它还没散架的原因之一。
适用范围与局限
README 对这部分写得相当坦诚,值得单独列出来:
- Fire TV:只有去臃肿这一半可用,因为 Fire OS 不允许第三方启动器接管 Home;2015 款 Fire TV Box(Fire OS 5)连这一半也不行,所有 pm 途径都被拒绝
- 部分中国市场的 TCL 机型:拒绝安装任何启动器,对应清单的头部会写明
- 三星(Tizen)和 LG(webOS):系统不同,不适用;SHOWCASE.md 里有三个 webOS 移植,三星 2021 款没有 ADB,也就没有 pm disable-user
- 网络 ADB 是明文:监听 5555 端口,固件如果是 ro.adb.secure=0,局域网内任何设备都能拿到 shell,所以用完要关掉,并用 tools/adb-closed.py 验证端口确实已关闭
- 风险在于"停用了系统依赖的东西":所以清单要分小批应用,并随时备好还原脚本;如果电视已经无法启动到能用 ADB 的程度,通常只能通过恢复菜单恢复出厂设置,这会清掉你自己的应用和账号
- 没有预编译 APK:必须自己构建,作者的理由是你应该清楚自己电视上装的是什么
- 应用内广告基本不管:可以用 Android 的私有 DNS 指向 AdGuard DNS 之类的解析器,但那个解析器会看到电视的所有 DNS 查询,而且去不掉 YouTube 广告,因为广告和视频来自同一批服务器
另外有一点要自己判断:让编程助手拿着 shell 去操作你的电视,本身是一次授权。建议先读一遍 PROMPT.md 和 tools/disable.sh,再决定放权到什么程度。
项目地址与资源
官方资源
- 🌟 GitHub: github.com/Gathin23/cl…
- 🌐 官网: cleanyour.tv
- 📚 故障排查: 仓库内 docs/TROUBLESHOOTING.md
- 💬 讨论区: GitHub Discussions
- 🐛 Issues: github.com/Gathin23/cl…
相关资源
- 社区手机 App: cleanyour.tv/app
- 主题与插件: cleanyour.tv/addons
- 衍生项目合集: 仓库内 SHOWCASE.md
- 远程帮家人清理: 仓库内 docs/REMOTE.md
总结与展望
核心要点回顾
- 停用而不是卸载:pm disable-user 与系统设置里的"停用"同源,配合先写后改的还原记录,让整个流程可逆
- 助手负责发现,脚本负责安全:不同品牌的预装差异交给 AI 现场判断,而主屏保护、备份、回滚这些关键动作固化在脚本里
- 启动器极度克制:523 KB、纯 Java、没有网络权限,扩展一律默认关闭、逐项授权
- 社区清单是护城河:每款电视一个目录,加上自动生成的表格和大量测试,让增长不至于失控
- 边界写得清楚:Fire TV、三星、LG 的限制,以及网络 ADB 的风险,都在文档里直说
适用人群
- 想清理自家安卓电视或电视盒子的人,尤其是被首页广告和推荐栏困扰的
- 想看"AI 编程助手 + 受限工具集"如何落到真实硬件上的开发者
- 做 Android TV 启动器、想参考配置和主题机制的开发者
- 手里有一款还没被收录的电视,愿意贡献清单的人
使用建议
先在 examples/ 里找你的电视型号,对照里面的 debloat.txt 看一遍都停用了什么,再决定要不要让助手代劳。第一次操作时务必保留还原记录,并在完成后关闭电视上的调试开关。
探索 PrimeSkills —— 精选 AI agent 和技能工具,每一个都经过真实工作流验证。没有炒作,只有真正好用的工具。
访问我的个人主页,获取更多见解和有趣的产品。 加粗样式
本文由 AI图鉴自动抓取并翻译,版权归原作者所有;如需查看原文请点下方链接。
Introduction
You bought the TV, you didn't pick the spot on the front page.
This is the 248th article in the "One Open Source Project a Day" series. Today's project for you is CleanYourTV.
The author sent a tweet that used Claude Code to clean up the home TV front page with Wi-Fi, a comparative map. This tweet, according to README, was viewed 7.4 million times, as many people did, and the television type and list in the response was finally in the warehouse. The project was created on October 17, 2026 and was written by nearly 38,000 Stars and over 4500 Fork.
It's interesting not to go to another advertising script, but to deliver it: the warehouse itself is a tool with a security fence plus a prompt for the programming assistant. The assistant is responsible for "discovering" some pre-assembly applications on your TV and asking you before moving on something you might use.
What will you learn?
- What did Clean YourTV do, and why "deactivate instead of unmounted" is its safety base? Line
- The mechanism for the three-step process of "back-up, shut down, shut down, install the starter."
- How a primary starter with only 523 KB was designed, how the theme, the module card, the plugin was extended.
- How does it guarantee that it won't get no main screen?
- How do you detect and repair the drift when the solids are updated?
- Scope of application and known limitations
Pre-knowledge
Android Debug Bridge.
- Understanding the broad meaning of package management orders such as pm disable-user (unknown or otherwise, as explained below)
- I'm interested in "Let's get AI programming assistant to run real hardware."
Project background
Project Profile
CleanyourTV targets Android TV and Google TV. Such televisions often come out with telemetry services from manufacturers, advertising services, content recommendation boards and a collection of pre-assembly applications for which no one wants, and sponsorships are inserted on the first page.
The idea of the project is straightforward: Andre TV has a debugging bridge like Andre's cell phone. Opens the USB debugging in the TV developer option, authorizes it once on the computer, and then uses standard Android tools.
No root, no data lines, no unloading of anything, regretting a line of orders.
Authors and communities
- Author: Gathin23 (GitHub user, linenyour.tv)
- Creation: 2026-10-17
- Front: warehouse name tv-vibehack, changed on October 19, the old link is still valid
Community: README received more than 170 television lists submitted by more than 200 contributors within four days; data on project cards are 316 televisions, 89 brands, 28 languages
It is also worth mentioning that the project officer network has made it clear that other domain names, such as cleanyourtv.com, are not operated by the project.
Project data
The data is taken from the GitHub page of 2026-10-26 and is growing rapidly for reference purposes only:
- GitHub Stars: about 37,800
Forks: About 4,500
- Updated version: v3.0.0 (2026-10-25 publish, previously reissued from 20-23 October v2.4 to v2.7).
- 📄 License: MIT (in font Outlook for SIL OFL)
- Quiet.tv
- Language composition: Python, Java, Kotlin, Shell, PowerShell
Main functions
Core role
Do two things:
- Debloat: telemetry, advertising services, content fields and preloading applications for decommissioned manufacturers
- Switch main screen: install a small primary starter, set as the default main screen, looks like Apple TV
The half of the "go swollen" is very different from the other brands, so the project does not give a generic list, but lets the programming assistant find something on your TV and then confirm it one by one.
Use scene
- Clean up your own TV.
- Computers and televisions are the same Wi-Fi, assistant completes backup, disables, installs and step-by-step proofing
- It's just an Andre.
- Community author udhaykumarbala made a free, open-source phone app, connected television, showcased plans, preserved points, then cleared.
- I'll help my family clean up.
- Open the ADB port through a private Tailscale link instead of a router
- A list of contributions to your own television model.
- A catalogue of each TV, placed under examples/, which can then be used directly.
- On that basis.
- Project SHOWCASE.md recorded 121 derivative items: main screen, Fork, plugins, tools and other platform transplants
Fast start.
You need the same Wi-Fi computer as the TV, as well as a programming assistant with shell permission (like Claude Code, Codex or Gemini CLI).
Step 1, on TV: Set up the device preference → about pressing seven "versions" → back → developer options → Open USB debugging (also if there is a "network debugging / ADB debugging" switch) and keep TV on.
Step 2, on the computer: clone the warehouse, open the directory with an assistant, then post the content of PROMPT.md to it and fill in the television model.
git clone https://github.com/Gathin23/cleanyourtv
cd cleanyourtv
# Open this directory with your programming assistant, paste PROMPT.md and fill in the TV model
Step 3, follow by: dot on TV "permit USB debugging" and answer the list of helpers: which applications do you use, how many docks, whether you want to keep voice assistants, Chromecast and system updates?
The reason that the warehouse had to be cloned was that the assistant would return to the warehouse, tols/disable.sh and launcher/build-and-install.sh, instead of writing his own script. Backup, main screen protection and restoration records are in these scripts.
Manual
Everything assistant does, you can do manually. The tool chain relies only on Python 3:
python3 -m venv tools/venv && tools/venv/bin/pip install -r tools/requirements.txt
Export TV HOST=192.168.1.50 # IP for TV
Other Organiser
Other Organiser
Other Organiser
TV HOST=192.168.1.50 launcher/build-and-install.sh# Build and install the starter as the main screen
Other Organiser
Core characteristics
- Pure main screen + bottom dock
- Four commonly used applications in rounded dock, same position as Apple TV
- Top Shelf and Environment Light
- Focus application name in big words, behind which light is taken from the main color of the application icon
- A floating glass.
- Flex between the pieces, and the focus will lift up and show the name.
- The subject doesn't have to be reformulated.
- Colours, wallpapers, docks and columns are sent by Wi-Fi via config.json and the warehouse carries ten themes.
- 28 languages
- Following TV language, Hebrew is a full mirror from right to left layout.
- Module cards
- Any TV application can declare its own drawings, but each application will not be shown until you approve it.
- Application library and graphic menu
- Long click OK to move blocks, remove from the front page, and see application information
- Clockscreen.
- Slow drifting clocks, avoid burning screens.
Project strengths
Why is it worth seeing?
- It put "Ai" in a set of bordering tools, not free models.
- Take the interfaces open to everyone on TV without bypassing any lock, DRM or copyright protection
- The list of community contributions doesn't have to be retouched. Thor.
Detailed Project Profile
Bottom mechanism for the three-step process
README summarizes the process in a table:
The point is in the second step. pm disable-user and the button that you have in the "Setting Zoom Applications Disable" is the same switch and the application file is not deleted, but is disabled under the current user. This is the source of the reversibility of the entire project.
Protect the main screen: Don't let TV "no front page"
The most dangerous type of accident to go to swelling is the discontinuation of the current main screen application, while the new starter is not in place, resulting in the main screen being placed on a plant test application and even a system cycle collapse.
The project has several layers of protection in the script:
- The installation of scripts will ask which of the current TV applications has Home and will stop using only the original plant starters it knows, namely, four of the KNOWN STOCK LAUNCHERS: com.google.android.tvlauncher, com.google.android.apps.tv.launcherx, co.google.android.leanbacklauncher, and the com.mitv.tvhome of milli.
- tools/disable.sh do the same check before you disable anything: if the list contains an application with Home and there is no other application on TV that responds to HOME, skip this item and explain why, and continue to process the remaining entries.
- Fallback Home, plant-testing applications that set guides, set applications, plant applications, although they also respond to HOME, do not count.
If Home doesn't fall on it, the script will roll back.
There is also a pit for Google TV: the turn-on wizard setupwraith may have taken Home after the plant's launcher was disabled and caused the system to collapse into a cycle, so it will be disabled together. But if the Wi-Fi network is stored in the starter wizard, it belongs to setupwraith, and it will be deleted if it is disabled. So disable.sh will check first and skip it before you re-enter Wi-Fi.
These details indicate that the author has stepped on many pits and that each of the ifs in the script basically corresponds to a real accident.
Revert mechanism: write the record, then do it.
Before changing anything, the current image of the TV is written into ~/.cleanyourtv/, a document for each TV, list:
- Each package in the list was active, disabled or not installed
- Which component owns Home
- Three animated zoom values
Replay this record, so your previously manually disabled bag will be disabled and Home will return to the original component. When running the same list again, the tool keeps the first record, rather than covering it with a "cleaned" status.
If there is no record (old version running or deleted), the script is sent back to "enable whole list and reset the zoom value to 1.0".
If the TV is no longer connected, the setup app page on the TV can also re-enable these packages.
Launcher: original of 523 KB Java
The starter is the core of the other half of the project:
- About 523 KB, pure Java, designed for televisions with only 1 GB memory
- No fuzzy effects, no video, no network permission, no backstage services
- Television requires Android 8.0 (API 26) and above, MinSdk is the lower bound of the compilation period, installation of scripts will first ask for ro.build.version.sdk, and if version is insufficient, direct hint of two numbers instead of failure at pm install
"No network permission" is important to a tool that claims to be telemetry: it is fundamentally impossible to send data.
Configure in three layers:
Module cards and plugins: submit extension points to user approval
Any television application can declare its own drawings (labels, instructions, dizziness). Each application of the starter asks you only once, by default hides and binds your answer to the key to the signature of the application, the name of the card. Trying to change your mind, long press Settings into Module Cards.
Plugin is placed in addons/ directory, which is connected as a modular card and is not compiled into the starter body. You can list all the plugins, themes and switches, see what's on the TV and install, update or remove them by running the creator's own feet.
This "default closure, individual authorization" extension model allows volume and privacy commitments not to be quietly undermined by plugs.
Telemetry audit: no guess, only evidence
The problem with this is, "Who in these bags is listening to me." README is very restrained in this respect: many of the models are mostly run by android.uid.system, and permission scans show 50 packages with RECORD AUDIO, but none of them is actually recorded; some television microphones are in the remote control and not in the fuselage; and the ACR (Autoactive Content Recognition) client can identify the content from the image only by INTERNET permission.
So this tool lists voice, ACR and telemetry candidates in three groups by evidence, each giving:
- Whether to be named by a solid piece of its own voice action service, or match known components in examples/, or just similar names
- Declaration of RECOORD AUDIO, shared system UID
- AppOps, have there been microphone interviews in history?
Plus --write privacy.txt can convert confirmed candidates into standard lists for application and withdrawal with disable.sh and conditione.sh. A package that matches a name is not written by default unless added --include-low.
README also confessed to the boundaries of the instrument: it doesn't prove intent. AppOps indicates that an operation has been touched, does not indicate where the data flow went. Turning off voice assistants also has a cost, such as a remote microphone key and a voice search in the application will fail, so the report will spell out the cost individually rather than "win."
"Drive" detection after solid updates
The solidware update will overwhelm the cleaned system: the disabled package comes back, Home returns to the original plant starter, and new pre-packages not available in the list.
So, tools/check.py compares television with the list you used, and exit codes have a clear meaning:
Plus-fix will re-apply the list: first cut Home back to the non-defunct starter, then disable the package and read back confirmation. It will not write its own new reduction record, because only in the first record is there a state of "pre-cleaning"; when there is a record, it will fill in the new item and guarantee that it will return to the plant.
This design allows you to throw the check in the cron and run once a week. But the document also honestly reminds us that, in order for a time job to be done, television has to remain on the Internet ADB, which is itself a security risk and needs to be weighed.
Performance tool: Turn "flow" into something measurable.
There's a set of tools in the warehouse to measure the starter:
- tools/bench.py: measure key delay, focus movement, carton frame, cold start, return time to the main screen, and CPU and memory occupancy during free time, do not modify TV, write raw data for each key as JSON
- tools/trace.py / track report.py: Record Perfetto track and report on time spent
- tools/flamechart.py: draw front-to-back flames for PR Figure
- tools/screendiff.py: pixel-by-pixel comparison and blur your Wi-Fi name Drop it.
There are also more than 170 test files in the repository's tests/ directory that match data from ADB key permission, list path to document. Tables (brand statistics, television lists) are generated by tv.json of directories by ols/gen tables.py, so the numbers in README are not changed by hand. These automatic checks were one of the reasons why it had not been dispersed for a warehouse in which hundreds of contributors had arrived within nine days.
Scope of application and limitations
README is quite honest about this part and deserves to be singled out:
- Fire TV: This half is only available because Fire OS does not allow third-party starters to take over Home; 2015 Fire TV Box (Fire OS 5) does not even have this half, and all pm channels are rejected
- Some of the TCL types in the Chinese market: Refusal to install any starters, which will be specified on the head of the list.
-Tizen and LG (webOS): Different systems, not applicable; SHOWCASE.md has three webOS transplants, Samsung 2021 without ADB and no pmdisable-user
- Network ADB is explicit: listen to 5555 ports, solids if ro.adb.secure=0, any device within the LAN can get a shell, so it needs to be shut down and verify that the port is actually closed with ols/adb-closed.py
- The risk is that "the system's dependents are disabled": so the list needs to be available in small batches of applications and ready to be restored; if the TV can't be activated to the point where the ADB can be used, the plant will usually be restored by restoring the menu, which will clear your application and account number.
- No pre-edited APK: It has to be built by yourself. The reason you're writing is that you should know what you're wearing on TV.
- Applied advertising is basically irrelevant: a private DNS can be used to point to a sort of resolutioner like AdGuard DNS, but that solver will see all DNS queries on TV and will not remove YouTube ads because the ads and videos come from the same server
And the other thing is, let the programming assistant take the shell and run your TV, which is an authorization. It is recommended to read PROMPT.md and ols/disable.sh before deciding on the degree of decentralization.
Project address and resources
Official resources
- 🌟 GitHub: github.com/Gathin23/cl…
- Quiet.tv
- 📚 failure check: docs/TROUBLESHOOTING.md
• Discussion area: GitHub Discussions
- 🐛 Issues: github.com/Gathin23/cl…
Related resources
App: cleanyour.tv/app
- Theme and plugin: cleanyour.tv/addons
- Derivative Project Complex: SHOWCASE.md
- Remote cleaning for family: stores docs/REMOTE.md
Summary and outlook
Review of core elements
- Disable instead of unmounting: pm disable-user co-source with "decommissioned" in the system settings, along with pre-written returns to make the whole process reversible
- The assistant finds that the script is secure: the pre-assembly differences between different brands are passed to AI, while the key actions of screen protection, backup, rollback are solidified in the script.
- Extremely restrained starters: 523 KB, pure Java, no network permission, all extensions are closed by default, individual authorization
- Community lists are moats: one catalogue per TV, plus automatic forms and a large number of tests, so that growth does not get out of control.
- Boundaries are clearly written: Fire TV, Samsung, LG restrictions, and the risk of network ADB are stated in the document
Population applicable
- People who want to clean up their own Andre's TV or TV boxes, especially those who are disturbed by the front page ads and recommendation bars.
- Want to see how "AI programming assistant + restricted tool set" reaches the developers of real hardware.
- Developer of Android TV starter, reference configuration and theme mechanism
- There's a TV that hasn't been recorded.
Use recommendations
See what's out of service and decide whether or not to get help. Revert records must be kept for the first operation and debug switches on television should be closed after completion.
Explore PrimeSkills - Select AI angent and skill tools, each validated by real workflow. No tricks, only real good tools.
Visit my home page to get more insights and interesting products. Bold Styles
Auto-fetched and translated by AI Atlas. All rights belong to the original author.