WangQiFei

Keefer


思想提纯
  • 首页
  • 归档
  • 标签
  • 关于
  •     

© 2026  by  Wangqifei

小米电视4A(Android 6.0.1)pm uninstall --user 0 卸载与恢复完整复盘.md

发布于 2026-10-21 19:10 tv 

小米电视4A(Android 6.0.1)系统精简踩坑与恢复完整复盘

一、故障概述

项目 内容
设备 小米电视4A,Android 6.0.1(API 23),无 root
操作 用 pm uninstall --user 0 卸载小米预装包做瘦身
触发包 com.xiaomi.mitv.mediaexplorer com.xiaomi.mitv.service
症状 桌面、第三方APP、播放、遥控器正常;系统设置打开闪退;USB ADB 仍可用
最终结果 恢复两个包后设置完全正常,问题闭环

二、根因拆解

2.1 第一层:mediaexplorer 是 Settings 的硬依赖

com.xiaomi.mitv.mediaexplorer 不是普通文件浏览器,而是小米定制 Settings 内部依赖的组件——设置里的存储、U盘访问、文件选择弹窗都会调用它的服务。该包在 user 0 被卸载后,Settings 启动时绑定服务失败,直接崩溃闪退。

2.2 第二层:mitv.service 是更底层的系统服务依赖

mitv.service(小米电视服务)负责输入源管理、通用设置底层接口、设备状态等核心功能。卸载它之后:

  • “账号与安全”页面仍能打开(不依赖此服务)
  • “通用设置”“输入源”页面无法打开(依赖 mitv.service 提供的接口)

所以设置闪退不是单一包造成的,而是多个依赖链断裂的叠加结果。只恢复 mediaexplorer 只能让设置首页打开,恢复 mitv.service 后通用设置和输入源才恢复正常。

2.3 第三层:Android 6 缺少恢复命令 + 小米 priv-app/vendor 权限限制

  • **Android 6.0.1 没有 pm install-existing**(该命令 Android 7.0 才新增),不能用它把包重新注册回 user 0。
  • 包位于 /system/vendor/app(不是常见的 /system/priv-app 或 /system/app),小米固件对这类系统应用的重新注册做了权限收紧,普通 adb shell(uid=2000)执行 pm enable 会报 SecurityException: Permission Denial。
  • am start 拉不起来:mediaexplorer 没有对外暴露的 MainActivity,它只作为后台服务给 Settings 调用,手动启动必然报 Activity 不存在。

三、恢复过程与关键命令

恢复的一大前提是我此前安装了原生的android setting、还可以双口USB线有线adb,不至于全瞎。

3.1 恢复 mediaexplorer(解决设置首页闪退)

Step 1:定位 APK 真实路径

1
2
3
# 先查常见目录,再全盘 find
adb shell ls /system/app/ | grep -i media
adb shell find /system -iname "*mediaexplorer*" 2>/dev/null

实际路径:/system/vendor/app/MiTVMediaExplorer/MiTVMediaExplorer.apk

Step 2:复制到可写临时目录

1
adb shell cp /system/vendor/app/MiTVMediaExplorer/MiTVMediaExplorer.apk /data/local/tmp/mediaexplorer.apk

Step 3:拉取到电脑并用 adb install 安装,显式指定 --user 0

1
2
adb pull /data/local/tmp/mediaexplorer.apk ./mediaexplorer.apk
adb install -r -d --user 0 ./mediaexplorer.apk

Step 4:验证注册成功

1
2
3
4
5
adb shell pm list packages --user 0 | grep mediaexplorer
# 输出 package:com.xiaomi.mitv.mediaexplorer

adb shell pm path com.xiaomi.mitv.mediaexplorer
# 输出 package:/data/app/com.xiaomi.mitv.mediaexplorer-1/base.apk

此时设置首页能打开了,但“通用设置”“输入源”仍然打不开——继续排查。

3.2 恢复 mitv.service(解决通用设置/输入源打不开)

Step 1:直接验证确定路径

1
adb shell ls -l /system/app/TvService/TvService.apk

(find 因权限中断无结果,但社区资料确认路径就是 /system/app/TvService/TvService.apk)

Step 2:复制 + 拉取 + 安装

1
2
3
adb shell cp /system/app/TvService/TvService.apk /data/local/tmp/mitv.service.apk
adb pull /data/local/tmp/mitv.service.apk ./mitv.service.apk
adb install -r -d --user 0 ./mitv.service.apk

Step 3:验证

1
2
adb shell pm list packages --user 0 | grep mitv.service
# 输出 package:mitv.service

结果:设置完全恢复正常,通用设置、输入源均可打开。


四、关键踩坑点记录

❌ 坑1:pm install 后面跟包名

1
2
# 错误:返回 INSTALL_FAILED_INVALID_URI
adb shell pm install -r --user 0 com.xiaomi.mitv.mediaexplorer

pm install 后面必须跟 APK 文件的绝对路径,不能跟包名。跟包名会被当作不存在的文件路径解析,返回 INSTALL_FAILED_INVALID_URI。

❌ 坑2:adb shell pm install 返回 Success 但包查不到

1
2
# 返回 Success,但 pm list packages 查不到
adb shell pm install -r -d /data/local/tmp/mediaexplorer.apk

Success 是假阳性。设备本地 pm install 在 shell 上下文里可能只完成了安装会话,**没有把包注册到 user 0**。

✅ 正确做法:用 adb install 并显式加 --user 0

1
adb install -r -d --user 0 ./mediaexplorer.apk

这是整个恢复过程中最关键的一条教训。

❌ 坑3:find 因权限中断无结果

1
2
adb shell find /system -iname "*TvService*" 2>/dev/null
# 无输出,但文件其实存在

无 root shell 在 /system 下遍历时会遇到大量 Permission denied,find 可能提前中断。改用 ls -l 直接验证确定路径更可靠。

❌ 坑4:以为 mediaexplorer 是唯一依赖

恢复 mediaexplorer 后设置首页能开,但“通用设置”“输入源”仍打不开。说明依赖链是多层的,mitv.service 是另一条独立依赖线。

❌ 坑5:pm enable 报 SecurityException

1
2
adb shell pm enable com.xiaomi.mitv.mediaexplorer
# SecurityException: Permission Denial

普通 adb shell(uid=2000)没有权限修改 vendor/priv-app 系统应用的启用状态。这条路在无 root 下走不通。

❌ 坑6:am start 拉起 mediaexplorer 报 Activity 不存在

该包没有对外暴露的 MainActivity,只作为后台服务存在,am start 必然失败,不代表包损坏。


五、本次精简规则总结(适配本机 Android 6 小米电视)

  1. **无 root Android 6,优先只用 pm disable-user,尽量少用 pm uninstall --user 0**。disable-user 是冻结,保留用户记录,可用 pm enable 恢复,安全可逆;uninstall --user 0 清除注册记录,Android 6 没有 install-existing,恢复困难。

  2. 黑名单包(一律不动):

    • com.xiaomi.mitv.mediaexplorer(Settings 存储/U盘依赖)
    • mitv.service(通用设置/输入源依赖)
    • 名字带 mediaexplorer、fileprovider、settings 附属媒体组件的包
  3. 每卸载/冻结 1 个包,立刻测试打开设置,稳定之后再下一个,绝不一批操作完再测试。

  4. **priv-app 和 vendor/app 风险远高于普通 system/app**,精简优先避开这两类目录。

  5. 不要信任高版本盒子(Android 9/11)的精简脚本,它们有 install-existing,权限策略也不一样。

  6. 操作前先记录包的 APK 路径,万一需要恢复,能直接 cp + adb install,不用再 find 碰权限墙。


六、恢复流程速查卡(存档用)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# ========== 通用恢复流程 ==========
# 1. 定位 APK(优先 ls 确定路径,find 可能因权限中断)
adb shell ls -l /system/app/<包目录>/<包名>.apk
adb shell ls -l /system/vendor/app/<包目录>/<包名>.apk

# 2. 复制到可写临时目录
adb shell cp /system/.../XXX.apk /data/local/tmp/xxx.apk

# 3. 拉取到电脑
adb pull /data/local/tmp/xxx.apk ./xxx.apk

# 4. 关键:用 adb install 显式指定 --user 0
adb install -r -d --user 0 ./xxx.apk

# 5. 验证
adb shell pm list packages --user 0 | grep <包名>
adb shell pm path <包名>

# ========== 本次实际恢复的两个包 ==========
# mediaexplorer
adb shell cp /system/vendor/app/MiTVMediaExplorer/MiTVMediaExplorer.apk /data/local/tmp/mediaexplorer.apk
adb pull /data/local/tmp/mediaexplorer.apk ./mediaexplorer.apk
adb install -r -d --user 0 ./mediaexplorer.apk

# mitv.service
adb shell cp /system/app/TvService/TvService.apk /data/local/tmp/mitv.service.apk
adb pull /data/local/tmp/mitv.service.apk ./mitv.service.apk
adb install -r -d --user 0 ./mitv.service.apk

七、当前状态说明与后续风险

当前状态:两个包均以“更新”形式挂在 /data/app 下(pm path 显示 /data/app/com.xiaomi.mitv.mediaexplorer-1/base.apk),覆盖在 /system/vendor/app 和 /system/app 的原始 APK 之上。这是 Android 系统应用更新的标准机制,功能完全等效。

风险提示:

  • **不要再对这两个包执行 pm uninstall 或 pm disable-user**。
  • 任何清空 /data 的操作(恢复出厂、双清)会移除当前 /data/app 下的更新,但系统首次启动会重新扫描 /system 分区并注册原始 APK;同时你之前的 pm uninstall --user 0 记录也存储在 /data 中、会被一并清除。恢复出厂不会让问题复发,反而回到干净状态,是安全兜底。
  • 如果将来恢复出厂后设置再次异常,重新执行上面的速查卡即可。

一句话总结:Android 6 上 pm uninstall --user 0 卸载的包,恢复时**必须用 adb install --user 0 而不是 adb shell pm install**(后者返回 Success 但不会写入 user 0 注册记录);小米电视 Settings 的依赖是多层的,mediaexplorer 管设置首页,mitv.service 管通用设置和输入源,两条依赖线缺一不可。

Visitors

 

下一篇: AI 助手开发 Stremio Addon 标准操作手册 (AI-SOP) 

© 2026  by  Wangqifei