Google这几天开始给Nexus4推送Android 4.4的OTA更新了,本想着自己先不动,等OTA来了直接更新就行了,后来才知道我有多傻逼。

昨天早上,手机收到了4.4的OTA,我就直接点了升级,结果重启之后进度条走到一半,机器人倒地了。

我考虑了一下,我的Nexus4之前改了两个东西:一个Root,一个Franco内核,OTA失败应该和这两个因素中的某一个有关。我专门去V2EX上问了一下,大家说内核不会影响OTA,Root会影响,所以我就想着反Root之后再试一次。

反Root了手机之后,蛋疼的事情来了。。。OTA收不到了!怎么刷都刷不出来,后来在iNexus.co上看到清除Google服务框架数据就可以立即收到OTA更新,试了一下果然可以!但是!OTA进度走到一半又跪了。。。

既然已经反Root了还是OTA失败,那应该就是内核的问题了。我又专门去这里下载了Nexus4的官方内核,需要的童鞋可以去下载。用Franco内核自带的管理工具把官方内核刷回去,然后再试OTA,结果蛋疼的又挂了!!!

我都快被这破升级搞毛了!

继续研究教程,看到这篇文章,这里说了另外一种OTA的方法,即用ADB来手动更新OTA包。废话不多说,直接上手。

按照这篇文章上的方法,我把各种驱动都装上了,也下载了官方的OTA包,然后手动更新OTA包,走到“Verifying current system”这一步中断了,不过能比上面好的是,它告诉我了具体哪个文件被更改了。信息提示“/system/lib/hw/power.msm8960.so mismache”,把这个文件Google了一下,发现Franco内核会更改这个文件,既然这个文件有问题,那就换回来呗。从别人的手机上导出了这个文件,准备换到我的N4上,结果发现我刚才已经把手机反Root了,现在没有权限操作这个文件!!!

真蛋疼,我又屁颠屁颠的把手机连上电脑,开虚拟机,把手机又Root了。。。Root完了之后,把这个文件换成了官方原版的,然后又反Root。。。我想死的心都有了。

还好,反Root之后再用ADB手动更新OTA包,这次终于成功了。

这就是我今天蛋疼的OTA经历。总结了一下,以后OTA更新之前,先要弄清楚手机已经更改了哪些东西,包括内核,因为换内核有时候会更改一些系统文件导致系统验证失败。弄清了这些之后,全部更换成官方原版的,然后一次性OTA成功,成功之后再进行其他的操作,比如重新Root,更换内核等等。