抛一个问题给读者。
为什么 AB 分区 在 recovery 中升级,可以不需要recovery.img ,而 non AB 却需要呢?
原因: AB 分区存在 双 分区, 当前分区是 slot A 时, 带有 recovery ramdisk 的版本可以直接 升级到 slot B 上去。即下次启动的是 boot_b.img 。
而 non AB ,只有单分区,所以 recovery.img 帮助 其他分区升级完毕后,在下次开机的时候,会将 recovery.img 升级到新版本。
如遇到极端情况,slot B 无法开机, rollback 到 slot A, 发现还是开不了机,则会进入recovery mode.
5. AB 升级包
metadata 中保存着 版本的信息,applyPayload 读取 payload.bin
6. 默认打开 VABC
AB , VABC 在从 S 版本开始都是默认打开的。
关闭 AB 方法:
设置为flase ,关闭 VAB 方法,但VAB会比 AB 更好用,所以不建议关闭:
/build/make/target/product/virtual_ab_ota.mk
Enable scratch support for super
17 PRODUCT_VIRTUAL_AB_OTA := true
18
19 PRODUCT_PROPERTY_OVERRIDES += ro.virtual_ab.enabled=true
Disable scratch support for super /build/make/target/product/virtual_ab_ota_retrofit.mk PRODUCT_VIRTUAL_AB_OTA_RETROFIT := true PRODUCT_PROPERTY_OVERRIDES += ro.virtual_ab.retrofit=true