先备份再动手删预装——CleanYourTV 清理电视垃圾的边界

文章导读
CleanYourTV 清理电视预装的边界,通常不在“能删多少”,而在“删完桌面还起不起得来”。可以先简化成三条判断:能通过系统设置正常卸载、或对当前用户移除后不影响开机流程的预装应用,属于可以动的范围;桌面(launcher)、系统设置(settings)、输入法(inputmethod)、系统 UI、权限与安装器、各类 provider,属于不建议卸载的范围;拿不准的包,先禁用(disable
📋 目录
  1. Ⅰ 用 pm list packages 导出电视应用清单并分类
  2. Ⅱ 识别不能删的系统核心包:桌面、设置、框架服务
  3. Ⅲ 备份关键应用和配置,保留回滚路径
  4. Ⅳ 用 CleanYourTV 执行清理前先跑一次只读扫描
  5. Ⅴ 删除后逐项验证桌面、设置和遥控器功能
A A

CleanYourTV 清理电视预装的边界,通常不在“能删多少”,而在“删完桌面还起不起得来”。可以先简化成三条判断:能通过系统设置正常卸载、或对当前用户移除后不影响开机流程的预装应用,属于可以动的范围;桌面(launcher)、系统设置(settings)、输入法(inputmethod)、系统 UI、权限与安装器、各类 provider,属于不建议卸载的范围;拿不准的包,先禁用(disable)而不是卸载(uninstall)。动手顺序建议固定为:导出应用清单并标注关键包 → 备份 APK 与启用列表 → 用 CleanYourTV 只读扫描与手工清单比对 → 分批删除,每批重启验证。下面按这个顺序给出命令和判断依据。

电视预装清理能不能回滚,取决于删除方式,而不取决于清理工具:用 pm uninstall `--user` 0 对当前用户移除,或用 pm disable-user 禁用,通常能用 cmd package install-existing 和 pm enable 恢复;直接删掉系统分区里的 APK 则很难回滚。建议先把 pm list packages -s 和 -3 的结果导出成文件,标注桌面、设置、输入法三类包,备份 APK 路径和当前启用列表,再用 CleanYourTV 的扫描结果与手工清单比对,确认一致后分批清理并重启验证。

用 pm list packages 导出电视应用清单并分类

先知道电视上装了什么,才有条件判断哪些不该动。adb 连接电视后(USB 调试或网络调试已开启),按系统应用和第三方应用分别导出一次,再导出一份带 APK 路径的清单备用:

adb shell pm list packages -s > sys.txt      # 系统预装
adb shell pm list packages -3 > third.txt    # 第三方应用
adb shell pm list packages -f > path.txt     # 带 APK 路径,备份时用

清单建议保存到电脑本地,不要只留在电视上,后面做比对和回滚都靠这几份文件。导出后先做一次人工分类:在 sys.txt 里把桌面、设置、输入法、系统 UI、provider 这几类前缀的行单独挑出来,另存成 keep.txt。前缀在各厂商机型上并不统一,要看包名后半段,例如 com.android.launcher3、厂商自有的 tvlauncher、com.android.settings、com.android.inputmethod.latin 这一类。

grep -iE "launcher|settings|inputmethod|\.ime|systemui|providers" sys.txt > keep.txt

grep 只是缩小人工核对的范围,最终仍要逐条看包名确认。这套命令的实际意义在于留下名单:keep.txt 里的包,后面无论是手工命令还是 CleanYourTV 的清理清单,都不应该出现在待删除项中。

识别不能删的系统核心包:桌面、设置、框架服务

会导致“开机黑屏、进不去设置”的包,通常集中在下面几类,建议直接归入不动名单:

先备份再动手删预装——CleanYourTV 清理电视垃圾的边界
  • 桌面:com.android.launcher*、各类 tvlauncher、厂商自有桌面。删掉又没有替代桌面时,开机后没有可用的主界面。
  • 设置:com.android.settings、com.android.tv.settings 一类。设置入口没了,连卸载应用、连 WiFi 都做不了。
  • 输入法:com.android.inputmethod.*、*.ime。删掉后搜索框、账号登录可能无法输入文字。
  • 系统 UI 与框架服务:com.android.systemui、com.android.providers.settings、com.android.providers.media、com.android.packageinstaller、com.android.permissioncontroller。这类包影响状态栏、安装流程和权限授予。
  • 账号与商店相关(如 com.google.android.gms、厂商账号服务):能否动取决于这台电视是否依赖它登录,不确认时保留。

不确定的包先禁用而不是卸载:

adb shell pm disable-user `--user` 0 <包名>
adb shell pm enable <包名>          # 恢复

disable-user 的效果是应用仍然存在、但对当前用户不可用,多数机型上比卸载更容易回滚。需要注意,部分厂商 ROM 限制 disable-user 或要求 root,命令报错时不要退而求其次去删系统分区里的 APK,应直接放弃这个包。禁用后重启一次,确认桌面和设置仍正常,再把它列入可清理名单。

备份关键应用和配置,保留回滚路径

系统分区一般只读,这个特性本身就是一道保险:用 pm uninstall `--user` 0 移除的预装应用,APK 仍在 /system 下,可以用 install-existing 恢复。从应用商店或侧载装进来的第三方应用没有这层保险,删除前必须留下 APK。

adb shell pm path <包名>            # 先确认 APK 真实路径
adb pull /system/priv-app/Settings/Settings.apk ./backup/
adb shell pm list packages -e > enabled-before.txt   # 当前启用的包

enabled-before.txt 用来在恢复时对照:哪几个是自己禁用的、哪几个原本就处于禁用状态。回滚手段按代价从低到高排列:adb shell pm enable <包名>、adb shell cmd package install-existing <包名>、adb install -r backup/xxx.apk(仅适用于已保留 APK 的应用)。动手前至少确认其中一条对该包可用,否则不要删。

用 CleanYourTV 执行清理前先跑一次只读扫描

工具识别出的“垃圾应用”与手工清单不一致时,以手工清单为准。CleanYourTV 如果提供 dry-run 或只读扫描模式(具体参数名以仓库 README 为准),先只跑扫描、不执行删除,把输出保存到文件:

先备份再动手删预装——CleanYourTV 清理电视垃圾的边界
# 示例写法,参数以实际仓库说明为准
cleanyourtv `--dry-run` > scan.txt

没有 dry-run 时,用清理前后导出清单对比的方式代替:先存一份,让工具做扫描预览但不执行,退出后再存一份,比较两次差异。

adb shell pm list packages -3 | sort > before.txt
adb shell pm list packages -3 | sort > after.txt
diff before.txt after.txt

比对时重点看三件事:keep.txt 里的包是否出现在工具的待清理列表中;待清理列表里是否混入 provider、systemui 这类并未打算动的内容;工具的处理范围是否顺带覆盖了第三方应用的目录。三者任一不符合预期,就不要执行清理,先缩减工具的处理范围,或改用手工命令逐个处理并逐项验证。

删除后逐项验证桌面、设置和遥控器功能

每批删除后重启一次电视,不要连续删完再统一重启,否则出问题时很难定位是哪一批造成的。验证按下面的顺序进行:

  1. 重启后能正常进入桌面,不出现黑屏、卡开机动画或反复回到开机向导。
  2. 从桌面打开“设置”,能进入网络、应用管理、关于本机等子页面。
  3. 遥控器方向键、确认键、返回键、主页键逐个按一遍,确认焦点移动与返回逻辑正常。
  4. 调出输入框(搜索框或 WiFi 密码框),确认输入法能弹出并可输入文字。
  5. 打开应用商店或账号登录页,确认安装与登录流程没有被拦住。

出现异常时按备份时记录的路径回滚:先试 adb shell pm enable <包名>,无效再用 adb shell cmd package install-existing <包名>,第三方应用用 adb install -r backup/xxx.apk 重装。回滚后同样重启一次确认恢复,再决定这个包是否可以从清理名单里去掉。