今天才发现, root 之后不能用 OTA 更新,难受。

2017-01-06 08:32:09 +08:00
 JamesMackerel
买了 nexus 6p 之后一直都享受着用最新版本系统的快感(自虐感)。但是后来因为升级到 7.1 之后,通知栏的 bug 被修复,再也无法对流氓应用视而不见,我就折腾了一天 root 了手机装上了冰箱,其间的一波三折略去不表。

今天醒过来发现 OTA 推送了安全性更新,点击重启之后发现进到了 twrp recovery ,没见他安装更新。去 google 了一下,发现只要不是没有修改过的原厂系统就没法用 OTA 升级。

作为一个轻度强迫症,现在有点难受。有没有什么折衷的办法?
22681 次点击
所在节点    Android
86 条回复
ju5t4fun
2017-01-06 08:35:53 +08:00
恢复原厂设置之后再 OTA
warlue
2017-01-06 08:35:57 +08:00
绿色守护无 root
honeycomb
2017-01-06 08:36:32 +08:00
有啊,直接用工厂镜像,但不是直接运行 flash-all.bat
要把压缩文件解包自己一个一个用 fastboot 仅刷入需要的部分(bootloader,radio,boot,vendor,system),最后装一下 supersu 就成


用这个方法更新 pixel 可麻烦了
warlue
2017-01-06 08:36:46 +08:00
@ju5t4fun root 以后恢复出厂也没用的,只能取消 root 或者刷机
honeycomb
2017-01-06 08:37:13 +08:00
@ju5t4fun 其实这个方法也可以,但没必要了
lsmgeb89
2017-01-06 08:37:35 +08:00
我到现在 7.1.1 推送都没收到……

好像看见过有种 root 可以不破坏系统分区里的文件,从而可以 OTA 的。
JamesMackerel
2017-01-06 08:43:12 +08:00
@ju5t4fun 你是说完全恢复到出厂状态吗?那我不得被这些国产应用玩死。
JamesMackerel
2017-01-06 08:44:28 +08:00
@honeycomb 搞那么麻烦,我干脆去买个水果算了。😂😂😂
TangMonk
2017-01-06 08:46:16 +08:00
最新版的 twrp 好像是可以支持 OTA 的
JamesMackerel
2017-01-06 08:46:33 +08:00
@lsmgeb89 瞧你这欲言又止的。反正我是用 trwp 的 recovery 安装的 supersu ,就直接可以用 root 权限了。
JamesMackerel
2017-01-06 08:48:19 +08:00
@TangMonk 我 google 的时候找到了 trwp 的一篇官方博客说不能 OTA ,否则后果自负。如果能的话,怎么没有官方的 feature 公布呢……
Ellison
2017-01-06 08:53:14 +08:00
systemless
Jaspr
2017-01-06 08:54:40 +08:00
FlashFire 是最好的解决方式,类似 OTA 的体验完整刷系统,不容易出问题,同时保留 root ,还可以同时直接刷入其他需要的补丁包
logbang
2017-01-06 08:54:51 +08:00
没见过 root 后能 ota 的
herozzm
2017-01-06 08:55:28 +08:00
用 FlashFire 升级
wclebb
2017-01-06 09:09:21 +08:00
哥,没有 Root 也能玩得转。
datou
2017-01-06 09:17:03 +08:00
@Jaspr
@herozzm

flashfire 不能识别 android N 的 ota 包
honeycomb
2017-01-06 09:18:37 +08:00
@JamesMackerel
这很麻烦吗?

./fastboot flash bootloader bootloader.img
./fastboot reboot bootloader
./fastboot flash radio radio.img
./fastboot reboot bootloader
./fastboot flash boot boot.img
./fastboot flash vendor vendor.img
./fastboot flash system system.img

然后用手机的按钮重启到 recovery(也就是 twrp)

./adb sideload supersu.zip
重启到 system ,完事


@lsmgeb89
supersu 默认用一个叫做 systemless 的安装模式,即它只修改 boot 分区,不修改 system 分区
flashfire 的原理是,临时还原安装 supersu 时备份的原始 boot 分区,然后进行 OTA ,完成后再次安装 systemless 模式的 supersu 。

这个涉及的手动操作少,但我习惯用上面的办法

以上做法相当于:
1 ./fastboot flash boot boot.img
2 ./fastboot flash recovery recovery.img
3 重启到官方 recovery ,调出菜单,选择 adb sideload
4 ./adb sideload [OTA.zip's name]

对于这种只包含安全更新的小更新,第二步可能是不需要的

不能直接使用 ota 的原因是,现在 Android 的 OTA 机制是按 block 差分而不是按照文件差分的,所以只能在涉及到的分区完全没有改动过的情况下才能使用。
honeycomb
2017-01-06 09:20:43 +08:00
@JamesMackerel
以前还有一个方法,是把工厂镜像里初上上述提到的.img 以外的文件全删了
然后把 flash-all.bat 里的"-w"参数去掉,然后运行 flash-all.bat

原理是一样的,但这种做法更容易失败
TangMonk
2017-01-06 09:21:22 +08:00
@JamesMackerel https://twrp.me/faq/officialota.html 不好意思。。说明了不能 OTA

但是我记得我在刷 twrp 的时候提醒我选个模式,可以支持 OTA (实际上不行,我还以为是我手机问题)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/332573

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX