我知道你们一定和我一样在system分区干了奇怪的事情

然后验证通不过了吧

啊哈哈哈哈哈除了fastboot刷system镜像之外,你还可以这样修复。

首先我们先理解一下OTA包的原理

实际上解包以后可以发现其实是一大堆差量补丁。

这就是说,修改/system分区下原有的文件时会死的,往里面写新的文件时不会死的。

另外我们可以看到,这次升级只修改了/system和内核(/boot)和recovery,而没有修改radio

OTA包内容

准备

最省力的办法(大版本升级适用)

进入fastboot,抠出镜像中的img

fastboot flash boot boot.img

fastboot flash recovery recovery.img

fastboot flash system system.img

纠结的办法(小版本升级适用)

自查

  • 是否安装了Xposed,如果是,使用自带的卸载功能
  • 是否使用过修改build.prop的应用(改机型、分辨率,etc)。在官方镜像中找到/system/etc/build.prop覆盖
  • 是否使用幸运破解器Android核心破解?。在官方镜像中找到/system/framework/core.odex覆盖;自带的恢复功能无法变回一模一样
  • 刷过新的内核?从官方镜像里找到boot.img,在fastboot下刷入 fastboot flash boot boot.img
  • 刷过第三方recovery?从官方镜像里找到recovery.img,在fastboot下刷入 fastboot flash boot recovery.img
  • 某个版本的SuperSU之后,会在开机修改/system/bin/install-recovery.sh,需要手动替换
  • 可以在adb shell 中使用find /system -type f -mtime -xxx,xxx是镜像编译日期到今天的天数

这些操作不影响本次升级

  • root,安装了busybox,等
  • unlock bootloader
  • 刷了radio
  • 修改了hosts

搞定了?

  • adb reboot bootloader
  • 进入recovery
  • 音量+键调出菜单->apply update from adb;连电脑上,输入adb sideload c1a33561be84a8a6a7d5a4c8e3463c4db9352ce6.signed-hammerhead-LRX21O-from-KTU84P.c1a33561.zip
  • 喝杯茶

RP极好的话就成功了,但是一般来说会有某些文件hash失败,提示status 7

PS: 如果你使用Win8或以上系统,遇到device not found/未知设备,请高级启动->禁用驱动程序预先签名,并启动Device Install Service服务

这样的话就要再到镜像里抠出来覆盖了

我的情况是/system/lib/libbt-hci.so挂了,不知道哪个混蛋应用改掉的

以上ww

 

本文大部分姿势来自http://forum.xda-developers.com/google-nexus-5/general/info-nexus-5-ota-help-desk-t2523217