XDA 社区大神 El Daddy 编写的手动升级 Nexus 5 到 Android 4.4.3 版本 OTA 更新的方法。修改过或者破解过的手机可能无法自动升级新的 OTA,所以这里提供了手动升级的方法。
关于 OTA¶
根据 XDA 社区大神 El Daddy 的提示,OTA (Over the Air) 升级只是更新手机软件的一种方式,而且必须是原厂未动过的机器才能 OTA 成功。。当 OTA 下载到手机之后,会提示你重启手机并安装更新。OTA 并不是完整的镜像,而是一系列针对手机操作系统(Android)的升级包。OTA 中包括的升级包可以是:bootloader、基带版本、系统、Recovery 和 内核。安装 OTA 更新的时候,安装程序会检测要更新的文件,也就是手机原来自带的文件是否正确。如果不正确,更新过程就会终止。所以,确保手机里的系统是出厂状态是非常关键的。不过也不需要太担心,即使已经解锁了手机,或者是打了别的补丁(比如 Xposed、DPI 等),也是能够让它回复到原来的状态的。
当然也可以自己手动升级 OTA 更新,只要有正确的 OTA 软件包。只不过还需要 adb,或者自定义 recovery 来完成。所以呢,如果知道自己的手机已经不能正常进行推送的 OTA 更新了,或者不想等推送的 OTA 更新,那就可以按照 El Daddy 的方法自己手动升级手机了。
下面是水景一页编译的 El Daddy 提供的手动更新方法。
注意:这是 6月5日 编译的。请在应用时查看原帖状态是否更改。
要保证 OTA 能够顺利完成,手机必须是原厂状态:
- 从 KOT49H 升级;
- 当前 Bootloader:HHZ11k
- 基带版本:M8974A-1.0.25.0.23
- 原厂内核: 3.4.0-gadb2201
- 所有 /system 程序都在;
- 没有对原厂系统中 /system 里的文件做任何形式的修改。
注释:严格来讲,任何形式的修改都会破坏 OTA,导致失败。Xposed、DPI、build.prop、volume mod 等等。任何修改!
如果你符合上面的标准,OTA 就能够成功完成。上面部分信息可以从手机的设置 – 关于手机 页面查看。
如果不符合上述标准,那就只能按照下面的步骤来自己更新 OTA 了。
当前 OTA
4.4.3-KTU84M-from-4.4.2-KOT49H:
http://android.clients.google.com/packages/ota/google_hammerhead/d173d546ab2347ead90cb0978657f11046300511.signed-hammerhead-KTU84M-from-KOT49H.d173d546.zip Thanks @euqiddis
以前的 OTA
http://forum.xda-developers.com/showpost.php?p=46289250&postcount=1 Thanks @oldblue910
手动升级 OTA¶
下面是比较常见的情况。如果不清楚自己的手机属于哪种情况,请到原帖中咨询。
情形 #1
原厂系统。解锁/未解锁 bootloader。没有 root 权限。请从下面的 A 部分开始。
情形 #2
原厂系统,有 root 权限。修改了 Recovery 但没有对系统做任何修改或删除。请从下面的 B 部分开始。
情形 #3
原厂系统,安装了 Xposed Framework。请从下面的 C 部分开始。
情形 #4
原厂系统,自定义内核 和/或 旧的基带版本(Radio),且没有其它修改。请从下面的 D 部分第 1 节开始。
情形 #5
原厂系统。但是修改了 /system/ 文件夹中的内容,包括删除一个或多个系统 apk 和自定义内核。请从下面的 D 部分第 2 节开始。或者参考下面的特殊场景。 **特殊情形 #1 尚未更新**
情形 #6
自定义 ROM。请从下面的 D 部分第 3 节开始。
A 部分:adb sideload¶
注意:请确保你有最新版本的 adb。老版本的 adb 可能会有问题。本文最后有新版本 adb 下载。
1) 下载 OTA.zip 到电脑本地硬盘中,重命名为 update.zip,然后将它放到 adb 同一文件夹中。
2) 确保打开了“开发者选项”中的 “USB 调试模式”,然后连接手机到电脑。
3) 在 ADB 所在的文件夹里,按住 Shift 键的同时单击鼠标右键,选择“在此处打开命令窗口”,然后在窗口中输入命令,’adb reboot recovery
‘(注意仅输入引号里面的内容,不包括引号,下同)并回车确认,手机会自动重启。
4) 手机自动重启进入恢复模式,将会看到手机上显示一个躺着的安卓机器人。按音量 + 键后松开,就会打开菜单。按音量键上下滚动到选择 “apply update from adb”,并按电源键确认。
5) 回到电脑上的命令行窗口,根据提示输入:’adb sideload update.zip
‘,回车确认,该文件就会加载并开始升级。
6) 完成后,在手机上选择 “reboot”,手机重启后就是新系统了。
B 部分:使用自定义 Recovery 刷机(TWRP-CWM)¶
1) 下载 OTA.zip 到电脑本地硬盘,复制到手机中。
2) 手机重启进入 recovery 模式。
3) 按照普通刷机的方式安装 OTA 包。
4) 重启手机。
C 部分:卸载 Xposed Framework¶
在安装 OTA 之前使用 Xposed 安装器卸载 Xposed。进入 Xposed 安装器,框架,卸载。Xposed 安装器会卸载自己,并从备份中恢复原来的 /system 文件,然后重启手机。
特别注意:如果只是将 Xposed 安装器卸载,即使在重启后,/system/bin 中的“app_process”文件也还是被 Xposed Framework 修改过的那个,而不会恢复成原来的文件。所以要从 Xposed 安装器内置的卸载功能来卸载它。
关于 Xposed 安装器及相关信息请查看这里。
卸载 Xposed 安装器之后,跳转到前面的 A 部分(原厂 Recovery)或者 B 部分(自定义 Recovery)继续。
D 部分:恢复原厂状态¶
1) 使用 fastboot 从原厂镜像中刷回原厂的 boot.img 和/或 radio.img (根据自己的情况)。
需要用到的 Fastboot 指令为:
fastboot flash boot boot.img fastboot flash radio radio-hammerhead-M8974A-1.0.25.0.23.img
注意:一些自定义内核会修改 /system/ 文件夹中的文件。如果是这种情况,将会遇到 status 7 错误以及修改过的文件。最简单的处理方式是直接刷回原厂 system.img 镜像。
2) 将修改或删除过的原厂内核或者 .apk 文件替换回去原厂文件。如果之前没有备份,那就只能直接刷回原厂 system.img 镜像了。
注意:这些文件必须跟之前原厂 rom 中带的对应文件的版本号一致。
Fastboot 指令为:
fastboot flash boot boot.img fastboot flash system system.img
3) 刷回原厂的 KOT49H 镜像。需要的话可以参考 abaaaabbbb63 的教程。
——————————————————————————————————–
完成上面这些刷回原厂系统的步骤后,重新检查自己是否符合文章前面列出的标准,然后根据自己的情况选择跳转到前面的 A 部分(原厂 Recovery)或者 B 部分(自定义 Recovery)继续。
FAQ¶
Q: 我遇到了 error: device not found 错误
A: 这是因为进入恢复模式后需要使用的驱动没有正确安装。可以使用通用的 Android 驱动,下载并安装即可。虽然会在设备管理器中显示为 Google Galaxy Nexus Interface,但是不影响使用。下载链接在文章最后。
Q: I’m seeing a status 7 error when trying to install the OTA
A: Look at the error closely. It will describe on the file it is failing at. Post the file path so we can help resolve the issue.
Q: The ota applied successfully but I lost my custom recovery and I want to re-root. How do I get root back?
A: Flash the custom recovery of your choice in fastboot and use it to regain root permissions
Q: I’ve tried everything, but I’m still getting status 7 errors.
A: Unfortunately you may have to start from scratch. Follow Section C1.
Q: I flashed a .zip file that modified (insert mod here.) Will I the OTA install successfully?
A: No, any modification at all will cause the OTA to fail.
Q: Why do I get a “cannot read update.zip” error when trying to sideload?
A: If you named the file update.zip, the actual name would be update.zip.zip. Windows auto names extensions by default. That could be your problem. If not try another usb cable or a different usb port. If that still doesn’t work, make sure you type exactly what you renamed the file. You may have made a typo. It is also case-sensitive.
直接刷机¶
上面的方法对于系统文件没有搞乱(修改或者删除,或者即使修改或删除了,但是有先见之明做了备份)的情况而言是非常好的:可以在不丢失用户数据的情况下升级。
但是我的手机比较悲催,可能是之前安装 CM 程序包的时候替换过系统的计算器程序,而现在又找不到之前的备份而无法还原,升级多次都是提示,Calculator.apk 中内容有误,然后就,
...... E: Error in /tmp/update.zip (status 7) Installation aborted.
既然如此,那就别怕麻烦了吧,干脆把手机里的数据都备份出来,也就不到10个GB,备份起来还是很快的。而从 Google Play 安装的软件以及其运行状态都通过 Google 账户内置的备份功能备份过了。
备份完了,就参考 XDA 上的这个帖子直接连接电脑用 fastboot 线刷了。感谢 @abaaaabbbb63 的详细介绍。
操作步骤:
- 下载 Nexus 5 的 Android 4.4.3 原厂镜像,这里有下载列表。近 500MB,感谢给力的宽带 :D
- 下载后,文件名是 .tgz 的,解压它,然后进入到解压后的文件夹,里面的文件是 .tar 后缀的,再解压。得到一个名为 hammerhead-ktu84m 的文件夹,包括文件,
bootloader-hammerhead-hhz11k.img flash-all.bat flash-all.sh flash-base.sh image-hammerhead-ktu84m.zip radio-hammerhead-m8974a-2.0.50.1.13.img
- 下载下面提供的 platform-tools_19.0.1 工具包,解压,并将刚才 hammerhead-ktu84m 文件夹内部的所有 6 个文件剪切到该文件夹中,与里面的 fastboot.exe 等文件在一起。
- 手机关机。
- 同时按住音量减小键和电源键开机,进入 fastboot 界面。
- 用 USB 线连接手机到电脑。
- 双击运行 flash-all.bat 批处理文件(Windows 中)或者 flash-all.sh 脚本(Linux 或 Mac 中)(对于 Mac 而言,可能还需要编辑 flash-all.sh 脚本文件在每个 fastboot 指令前添加 “./” )。提示:如果不想完全擦除手机存储中的数据,可以将 flash-all.sh 中每条命令后面的 -w 参数删除。
- 等待程序运行,大概就几分钟吧。
- 程序运行完毕会自动开机。此时开机动画时间比较长,可能一两分钟吧,不要惊慌。
- 然后一会儿就会看到如同刚买回来手机时候那样开机选择语言、时区以及设置 Google 账号等操作。
- 把数据复制回去吧。
- root 也没有了,回头还需要再弄,还不知道以前的 root 方法管用不。
如果需要刷入定制的 Recovery,比如 TWRP,则接着进行下面的操作(下面的 9 步未经水景一页测试):
- 进入新的手机系统,打开“开发者模式”(进入 设置 – 关于手机 页面,在最下面的“版本号”上面连续轻触直到提示打开开发者模式为止)。
- 进入“开发者模式”中启用“USB 调试”,使得 fastboot 或者 ADB 可以从电脑上操作手机。
- 一旦启用,电脑应该能够检测到手机作为新硬件,等待驱动安装完成(如果失败,下面的下载中有提供)。
- 在 ADB 所在的文件夹里,按住 Shift 键的同时单击鼠标右键,选择“在此处打开命令窗口”,然后在窗口中输入命令,’
adb reboot bootloader
‘(注意仅输入引号里面的内容,不包括引号,下同)并回车确认,手机会自动重启。(没有 ADB 的话参考前面升级 OTA 的第 A 部分)。 - 下载最新的 TWRP 2.7.1.1 http://techerrata.com/browse/twrp2/hammerhead 并将 .img 文件放到 platform-tools 文件夹。(直链下载,如果速度慢,试试文后的镜像。)
- 然后在刚才的命令行窗口中输入,’
fastboot flash recovery openrecovery-twrp-2.7.1.1-hammerhead.img
‘ ,仔细检查不要输错了,回车确认。 - 等待完成并启动,按 音量减小 键直到显示 恢复 (Recovery) 模式,然后按一下 电源 键来确认选择。
- 现在,TWRP 应该已经安装好了。触摸 Reboot 重启系统,会提示安装 SuperSU,滑动以确认安装。好了 ,ROOT 也有了。
- 完成后启动系统,会收到 SuperUser 的提示升级/安装,按照提示操作即可。
参考:Reddit
下载¶
ADB 工具包 platform-tools_19.0.1:Google Drive 百度云盘
Android 设备 ADB 通用驱动:Google Drive 百度云盘
如果上面给出的 Android 4.4.3 OTA KTU84M 无法下载,可以使用这个 Google Drive 中的镜像。或者百度云盘中的镜像:http://pan.baidu.com/s/1dD9tZX3 。这两个下载中的软件包里面已经做好了批处理,用的时候仔细看看。(大小 92.2MB)
TWRP 2.7.1.1(13.3MB):Google Drive 百度云盘
更新¶
虽然很容易就用直接线刷的方式将 Nexus 5 升级到了最新的 4.4.3,但是因为大家都知道的原因,刚好碰上这些天 Google 服务无法访问,刚开机的时候连 Google 账户都无法登录。后来直接进入系统,最终想办法打开了 Google 账户,但是除了内置的 Google 应用及其同步保存在 Google 服务器上的配置和记录最后都同步回来了之外,自己下载安装的那些应用并没有自动下载过来。重新安装那些应用,其配置和历史数据也并没有同步回来。©
本文发表于水景一页。永久链接:<https://cnzhx.net/blog/manually-update-nexus-5-ota-4-4-3/>。转载请保留此信息及相应链接。
root后用钛备份备份数据吧…
始终信不过云同步啊
这次弄掉root之后到目前还没打算再root,貌似不需要了,现在用OpenVPN替代GAE了 :D
我很少动底层系统,我的升级方式:
1.设置》关于手机》系统更新》下载完更新包
2.Xposed 安装器卸载 Xposed 》重启
3.从“系统更新”中重启》升级至4.4.3
升级之后还得重新root!
谢谢反馈更新方法。
可能因为是习惯于编程的思路,原作者列出的方法有些流程图的意味,看起来不如你这个说明直接。