Skip to content

折腾日志 2026-06-29

🕒 Published at:

折腾日志 2026-06-29 ​

记录一整天的操作:从手机去 bloated → 变砖 → 抢救照片 → 跨设备迁移


一、开局:ADB 屠龙 ​

目标 ​

旧手机 A 预装软件太多,打算卸干净当服务器用。

方式 ​

adb shell pm uninstall -k --user 0 <pkg>

卸载范围(多轮) ​

  • 预装商店、浏览器、音乐、视频、阅读
  • 华为云、钱包、推送
  • 搜索、语音助手、游戏服务
  • 日历、闹钟、媒体中心
  • 短信、彩信、下载管理器
  • 蓝牙、WiFi 相关
  • 各类框架(HMS、HIAI、HiView...)
  • 安全中心、省电管理、设备管理

卸载统计 ​

累计卸载约 100+ 个包,全部返回 Success


二、作死:卸了不该卸的 ​

操作 ​

继续卸载电话/通讯相关包:

  • com.android.phone
  • com.android.server.telecom
  • com.android.incallui
  • com.android.contacts
  • com.android.providers.telephony
  • com.huawei.ims

结果 ​

手机重启后卡在 Logo 界面 → boot loop,变砖

教训 ​

  • pm uninstall --user 0 只移除当前用户可见部分,但安卓系统服务被移除后无法启动
  • 部分系统应用(phone、telecom)是核心组件,卸了直接崩
  • 进 recovery 可访问文件系统,但无法正常启动

三、抢救:取出照片 ​

方法 ​

  1. 按住音量上 + 电源 → 进入 eRecovery 模式
  2. 通过 MTP 连接电脑 → 手机存储显示为移动设备
  3. 手动拷贝照片到 PC

备份范围 ​

仅 Camera(相机照片)+ Screenshots(截图),2023 年+ 跳过 QQ / 微信等聊天图片文件夹


四、接盘:连上新手机 ​

背景 ​

数据曾从旧手机 A 迁移到新手机 B,但迁移不完整

连接 ​

adb connect 192.168.31.x:5555 — 无线 ADB

对比方式 ​

  1. adb shell ls 枚举 B 手机文件
  2. MTP Shell.Application 枚举 A 手机文件
  3. PowerShell Where-Object { $B -notcontains $_ } 找差异
  4. 缺失文件从 A 的 MTP → PC 临时目录 → adb push → B 手机

同步范围 ​

目录结果
DCIM/Camera补推约 140 张(2022–2023 缺失)
Pictures/Screenshots补推 66 张
Pictures/新建相册补推 72 张(原为空)
其他相册(~6个)补推约 15 张
QQ/微信跳过(按指示)

五、踩坑记录 ​

1. ADB 中文路径编码 bug ​

  • 现象:adb push xxx.jpg /sdcard/Pictures/中文目录/ 后,文件名被截断
  • 如 IMG_20230720_095918.jpg → IMG_20230720_0959
  • 原因:ADB 协议在传输中文路径时发生编码截断
  • 解决:出现残缺文件后 rm -rf 清空重建,重新推送

2. MTP 文件访问极慢 ​

  • Windows Shell.Application COM 对象访问 MTP 设备,每枚举一次 10~30s
  • 大目录(200+文件)容易超时
  • 策略:分批读取、保存列表到文件后离线比对

3. 文件名特殊字符转义 ​

  • [] () 空格在 adb shell 中有特殊含义
  • mv 操作需要转义或使用 cat > 重定向

4. PowerShell 中文编码 ​

  • 中文目录/文件名在控制台输出乱码,影响调试
  • ls 结果与 find -type f 结果可能不一致
  • 改用 find ... -exec basename 获取纯净文件名

六、当前状态 ​

  • [x] 旧手机照片已全部备份到 PC
  • [x] 旧手机照片已完整同步到新手机 B
  • [ ] 旧手机仍变砖(卡 logo,boot loop)

七、待办 ​

  1. 救旧手机 —— 方案:
    • 官方 HiSuite 系统修复
    • eRecovery 在线恢复
    • 恢复出厂设置(照片已安全,可接受)
  2. 救活后安装 Termux,搭建服务器环境

八、技术备忘 ​

项目命令/方法
卸载应用pm uninstall -k --user 0 <pkg>
恢复应用pm install-existing <pkg>
无线 ADB 连接adb connect <ip>:5555
MTP 编程访问Shell.Application COM 对象
MTP 文件拷贝folder.CopyHere(item, 0x14)
文件列表保存list | Out-File path.txt
文件名比对$A | Where-Object { $B -notcontains $_ }
push 到中文目录尽量避免,或用 cat + mv 替代
列出目录文件find /path -type f