CleanYourTV 这几天很火,18,693 个 star,X 上那条”给我爸妈电视做了个 before/after”的推文跑了 740 万浏览。道理很简单:Android TV 的首页是厂商的广告位,而它有 ADB,所以同一套 pm disable-user 就能把臃肿层拆掉,再换上一个 Apple TV 风格的开源桌面。仓库自己说得很清楚——不 root、不插线、不卸载任何东西,一行命令还原。
问题是它支持列表里全是 TCL、小米、索尼、飞利浦,海信只有零星几条,而且大多标注着”Latin America””India””US”。我家客厅这台是国行海信。所以第一个要回答的问题是:这台到底能不能用。

能不能用,取决于系统而不是品牌
CleanYourTV 只认一件事:目标机器有没有一个能连上的 ADB,以及 pm 让不让干活。所以判断标准不是”海信行不行”,而是这台海信跑的是什么。
国行海信大致分两种。一种是纯 VIDAA U / VIDAA X,Linux 底子,没有 Android 运行时,压根没有 ADB,这类直接出局。另一种是 Android 底层 + VIDAA 外壳 + 聚好看(JuUI)界面——市面上大部分国行海信属于后者,这类有救。
翻仓库的 examples/ 时我撞见了 vidda-mt9653 和 hisense-e5q-pro 两份列表。Vidda 是海信的子品牌,两份列表的表头写着同一句话:设备型号 VIDAA_TV,主板 MediaTek MT9653,Android 11,build 02.02.70.01。也就是说,作者已经在和我这台一模一样的固件上跑通过全套流程,连踩了什么坑都记在注释里。
到这一步,”能不能用”就变成了”我的机器是不是真的是这个固件”。
先把它找出来
电视和电脑在同一网段,adb 本机已经装了(Arch 的 android-tools)。扫一遍 5555:
|
这个并行探测不太可靠(它什么都没报),改成先 ARP 扫活再逐个 adb connect 就命中了:
|
然后确认固件:
|
VIDAA_TV / MT9653 / SDK 30 / 安全补丁 2022-09-05 / 3.8 GB 内存 / 1080p@320dpi——和 examples/vidda-mt9653/ 表头逐字对得上。SDK 30 也高于 launcher 的 minSdk 26,所以禁用和换桌面两半都能做。
再拿仓库那份列表和本机包列表做一次交集,25 项里 23 项存在(缺的是 com.meetingroom 和 com.vision.aibook,本来就没装)。到这儿可以放心动手了。
顺带一提,ro.adb.secure 是 0。这意味着同网段任何设备不需要授权就能拿到 shell,做完必须关掉。
环境
构建 launcher 要 JDK 17 和 Android SDK,~/Android/Sdk 已经有了,platforms/android-34 也在,所以只需要让 gradle wrapper 自己拉 8.9。仓库的 tools/tv.py 是自带的纯 Python ADB-TCP 客户端,要先建 venv:
|
它复用 ~/.android/adbkey,所以不会再来一次授权弹窗。
备份,然后分批禁用
tools/disable.sh 在真正下发第一条命令之前会先调 recovery.py --save 把现场写盘,失败就直接退出——这个顺序是对的,事后补的备份描述的是一台已经改坏的机器。我还是自己多留了一份:
|
从 settings 里读到两件后面用得上的事:默认输入法是搜狗 TV(唯一 IME,不能碰),enabled_accessibility_services 里挂着 com.keylab.speech.view.vidaa 的四个服务。
清单我按自己的选择改了三处:加上 OTA(com.jamdeo.updateservice、com.hisense.playerupdate),确认包含语音助手桌面 com.keylab.speech.view.vidaa,确认不含 com.hisense.tv.tiletransition。分三批下发,每批之间冷重启一次:
| 批次 | 内容 | 数量 |
|---|---|---|
| 1 | 遥测 / 上报 / 推送 / 广告位 | 9 |
| 2 | 卖场酒店残留、多余分享应用、屏保、printspooler | 14 |
| 3 | 语音助手副桌面、OTA | 3 |
第二批里 com.vision.aibook 静默跳过(本机没有)。三批全部 disabled-user,重启后开机正常,聚好看首页照常起来。
这里值得说一句 tiletransition。仓库注释里写得很细:这名字看着像转场动画或者开机广告层,实际上它承载 TileAnimationService,厂商的信号源面板在切换输入前会绑定它。禁掉之后面板照样打开、照样有动画,但点 HDMI 没有任何反应,logcat 里是:
|
包名不说实话,这是逆向厂商系统时的常态。
装上桌面
launcher/build-and-install.sh 会把 APK 分块 base64 推到 /data/local/tmp 再 pm install,中途任何一步失败都不会去碰原生桌面,Home 交接不干净还会自动回滚。同固件那份表头给了两个必传的变量:
|
STOCK_LAUNCHER 必须手动给,因为脚本靠 resolve-activity HOME 猜原生桌面,而它只认 Google TV 那几个包名,com.jamdeo.tv.vod 不在名单里。
APK 438 KB。侧载没有被拒——这是国行机型最容易翻车的一步,有些机器对每一个 sideload 都回 INSTALL_FAILED_VERIFICATION_FAILURE,有些拒绝任何声明 category.HOME 的非厂商签名包,那两种情况就只能做禁用那一半。这台两关都过了:
|

冷重启一次,resolve-activity HOME 仍然是 com.gathin.tvhome,launcher 常驻 32 MB PSS。再验信号源:
|

三个仓库文档没写准的地方
Home 键的真实键值和文档不一样。 同固件那份表头说物理 Home 键是 scancode 102,被 keylayout 映射成 KEYCODE_F12(142)。我挂了 getevent -lt 让家里人按了一次,内核层确实是 KEY_HOME(102),但 Android 侧的映射在 /system/usr/keylayout/Generic.kl:124:
|
也就是 KEYCODE_MOVE_HOME(122)——一个文本编辑键,在电视上什么都不做。这就是禁用聚好看之后 Home 键变哑的原因(原本厂商 SysUIMerge 拿它当”回到上一个应用”,而那个应用恰好是聚好看)。修法是用 launcher 的 app_keys 把这个 keycode 指回新桌面,由已经启用的 HomeKeyService 接住:
|
dock 里那个”设置”是错的那个。 这个得怪我自己眼尖:新桌面右上角有个”设置”胶囊,dock 里也有一格”设置”,但两者不是同一个应用。胶囊走 Settings.ACTION_SETTINGS,解析到 com.android.tv.settings/.hisense.systemsettings.MainActivity,是海信真正的设置;dock 那格是 com.android.settings,AOSP 原生那套在电视上基本残缺的界面。
原因在 launcher 的默认配置:dock_apps 出厂写的是 Netflix / Prime / YouTube / Hotstar,国行一个都没装,于是 fill_dock 拿网格最靠前的应用补位,把 AOSP 设置顶上去了。加进 hidden_apps 就干净了。
一个和本次改动无关的厂商 bug。 每次开机 com.android.wechathci:WebService(海信微信绑定 / hitv 应用自更新)会崩两次然后放弃:
|
它不在清单里,栈也没碰到任何被禁的包,是固件自带问题。记录一下,免得以后拿它当替罪羊。
改配置不用重新构建
上面两处都是主题层面的事。launcher 读外部 files 目录里的 config.json,覆盖内置 config.xml 的同名键,所以:
|
theme.sh 会重启 Home 并把无障碍服务重新挂回去——am force-stop 会让 Android 把 launcher 的 HomeKeyService 从 enabled_accessibility_services 里摘掉,这一步不做,Home 键的映射就白配了。
|

顺便说个插曲。桌面刚接管、还没禁掉原生桌面的那一瞬间,抢走前台的是我自己写的 com.awen.tvguard(电视看护)弹的一道”先回答几个问题·请问你今天吃完早饭了吗”。也就是说,我在拆别人广告的同时,被自己的问答拦了一下。

值不值
禁用那一半买到的是:遥测、上报、厂商推送通道、一个永远在轮询网络的 hproxy、卖场/酒店残留、以及一个把拍信创意图库当屏保的广告位。它不买到首页那些推荐位——那些是 com.jamdeo.tv.vod 自己拉的,只能靠换桌面去掉。这一点仓库表头写得比谁都直白,别对”debloat”抱超出它字面的期待。
代价清单:OTA 关了(以后升固件要手动开回来)、语音助手和遥控器麦克风键没了、Home 键需要自己配映射。全部可逆:
|
还原时注意一件事:com.hisense.service.ad 在我这台是出厂就已禁用的,restore 会把它打开。所以备份必须在你动手之前做,而不是在你想还原的时候。
最后回到开头那个问题。国行海信只要是 Android 底 + 聚好看界面的,CleanYourTV 就能用,而且同固件的实测清单已经躺在 examples/ 里,你要做的只是 getprop 四个值对一遍。纯 VIDAA 的机器不用试,那套系统里没有 ADB 这条路。

做完记得回电视上把 USB 调试关掉。ro.adb.secure=0 的门开着,比首页那些广告位危险得多。
评论
0 条评论