问题描述
在尝试通过TWRP刷写最新版本的CM系统更新时,遇到了ContactsProvider.apk
文件的校验哈希错误(Hash miss-match)问题。具体表现为:
assert failed: apply_patch_check("/system/priv-app/ContactsProvider.apk", "fb6e94a195230a7d056372699dfe01a7ad7cefad", "4be1a92ade982716f9f64e53a48bdbb6dad997a")
刷写过程中因此失败。尝试回滚至之前的备份也未解决问题,且直接通过adb sideload
方式安装更新依然无效。
解决方案
方案一:恢复原厂文件
如果当前设备上的ContactsProvider.apk
已经非默认版本,则使用原厂备份的该文件来修复问题。步骤如下:
1. 确保TWRP已挂载:在刷写任何系统映像之前,务必先手动挂载/system
分区。
2. 恢复原厂文件:如果设备存有原厂备份文件,请恢复到最初的原厂状态:
bash
adb push original_contacts_provider.apk /path/to/system/priv-app/
adb shell mount -o remount,rw /system
adb shell cp /path/to/original_contacts_provider.apk /system/priv-app/
adb shell chmod 644 /system/priv-app/ContactsProvider.apk
3. 重新刷写OTA更新:使用TWRP从系统位置挂载/system
,进行完整的系统更新尝试。
方案二:全面重置
如果原厂文件已经丢失或者无法恢复,则需要进行更彻底的重置:
1. 下载完整系统映像:找到与设备当前状态兼容的CM官方系统镜像(如 bacon snapshot)。
2. 全刷CM系统更新:使用TWRP将整个系统镜像完全覆盖刷写,确保文件哈希不再冲突。命令为:
bash
fastboot flash system cm-system.img
3. 重置OTA机制:完成恢复操作后,请勿再对系统分区进行任何额外修改,否则可能会再次出现问题。
4. 重新启用OTA:设备重启并进入CM系统的正常模式后,将能够自动接收后续的OTA更新。
额外注意事项
- 在执行上述操作时务必确保数据的重要备份,尤其是应用和个人文件,以防不测之变。
- 计算机语言:确保所有手动命令使用正确的路径和分区命名方式,以避免不必要的错误发生。
以上解决方案希望可以帮助解决One Plus One – CM11设备上的OTA更新问题。若遇到复杂的情况,请参考官方论坛及社区获得更多技术支持与建议。