这纯粹是隔离在家瞎折腾出的事故,做个备忘。

手机是 Oneplus 7T,习惯用 OxygenOS,之前几代还追 Public Beta 版,随着系统完善,不是 Android 跨代,就不尝鲜了。但是官方小版本更新,还是得有。

  • 原来是 O2OS 10.0.7,补丁到 2019.11
  • 看镜像网站,发现 10.0.7 更新,补丁到 2019.12;忽略了其实是 H2OS,结果就给升了。
  • 启动后发现错了,不能降级到 O2OS 10.0.7,因为同版本 H2OS 往往比同版本的 O2OS 要新(内部版本或时间不同)。
  • 尝试使用 OnePlus Updater 强制更新到刚发布 OTA 的 10.0.8,结果重启,一晚上没进系统;只能寻求恢复。
  • 进 Recovery 模式清缓存、数据,能恢复到 H2OS,是上一版系统;但不死心,想刷回 O2OS。
  • Android 在 project treble 改造后,分区形式有所变化,分离了 android 系统、驱动、厂商定制等分区,便于 android 系统的更新。这个模式下也移除了 Recovery 下直接刷用户分区 zip 或 adb update,需要走 fastboot 模式。
  • 而 fastboot 刷机需要的镜像跟官方默认刷机包不同,社区有人专门定制了 Oneplus 最近系统的 Fastboot 镜像,如 Stock Fastboot ROMs for OnePlus 7T,但是需要 Unlock 才能正常刷,于是:
    • 进 H2OS 初始化,进开发者菜单,关 OEM Lock 锁。
    • 进 Fastboot 模式,连 PC,执行 fastboot oem unlock
    • 解压 fastboot 包,执行 flashall.bat,没报错,可以进 O2OS 了。
    • 很高兴,但是这时 bootloader 还是 unlock 的,每次手机启动都有警告提示,不好。
    • 于是进 fastboot,连 PC,执行 fastboot oem lock
    • 重启,红色提示,boot 损坏,不允许启动,而且 10 几秒自动重启。
    • 此时,电源关机、电源+音量下都没效果。
    • 感觉凉了,真变砖了… 已经再思考是不是得再买个了…

一阵慌张,感觉之前大部分操作都没问题;只不过刷过 fastboot 镜像后,虽然标称 Stock 版本,但还不是完整官方镜像,还需要触发官方升级之后,确保官网镜像再 Relock。另外,如何跳出反复重启,进 Fastboot 模式。

整理后的操作如下:

  • 反复重启状态下,按住电源+音量上下三建,可进 Fastboot 模式。
  • 先 Unlock,fastboot oem unlock;再进 Fastboot 刷机。
  • 下载初始版本 Fastboot 镜像,比如这里的 10.0.3;还是执行 flashall.bat
    • 注意,升级过程有一次重启到 Fastboot,执行的是 fastboot boot fastboot,实际上手机进的是 Recovery 模式;保持不要操作,不要手动再进 Fastboot。
    • 在 Recovery 下完成 System 及后面几个 img 写入才对。
  • 完成后可以进入 O2OS,进系统更新升级;这时会弹出,识别到 Unlock 状态,需要下载完整系统镜像,不错;等自动更新重启完,进入系统,发现还是 10.0.3。
  • 这时,再进 Fastboot,连 PC,执行 fastboot oem lock
  • 重启,顺利启动,进入系统;再进开发者菜单,确保系统 OEM Lock 锁打开。
  • 终于恢复官方状态了。
  • 再执行一次系统更新,终于回到 O2OS 10.0.7 了。

折腾下来,又更新了一下对 Recovery、Fastboot 的理解,还有 Android 的镜像现状,从 flashall 的过程看一下:

aop.img
aop.img
bluetooth.img
boot.img
dsp.img
dtbo.img
LOGO.img
modem.img
oem_stanvbk.img
qupfw.img
storsec.img
multiimgoem.img
uefisecapp.img
recovery.img
vbmeta.img
vbmeta_system.img
opproduct.img
boot fastboot 
system.img
vendor.img
product.img

另外用到的 Android 工具: