admin管理员组

文章数量:1615372

A/B System 概述

Android从7.0开始,引入了新的OTA升级方式 A/B System Updates

A/B系统是指设备上有A和B两套可以工作的系统(用户数据只有一份,为两套系统共用),我们可以理解为一套系统分区,另外一套为备份分区.其系统版本可能一样,也可能不一样;通过升级,可以将旧版本也更新为新版本.当然,设备出厂时这两套系统肯定是一样的.

Android 7.0上传统OTA方式和新的A/B系统方式都存在,编译时只能选择其中的一种OTA方式.由于A/B系统在分区上与传统OTA的分区设计不一样,二者无法兼容,所以7.0以前的系统无法通过OTA方式升级为A/B系统.

7.0以前传统的OTA方式:
设备上有一个Android主系统和一个Recovery系统,Android主系统运行时检测是否需要升级,如果需要升级,
则将升级的数据包下载并存放到cache分区,重启系统后进入Recovery系统,并用cache分区下载好的数据更新Android主系统,
更新完成后重新启动进入Android主系统。如果更新失败,设备重启后就不能正常使用了,唯一的办法就是重新升级,直到成功为止。

而A/B系统主要由运行在Android后台的update_engine和两套分区‘slot A’和‘slot B’组成。
Android系统从其中一套分区启动,在后台运行update_engine监测升级信息并下载升级数据,
然后将数据更新到另外一套分区,写入数据完成后从更新的分区启动

与传统OTA方式相比,A/B系统的变化主要有:

1、系统的分区设置 
    传统方式只有一套分区
    A/B系统有两套分区,称为slot A和slot B
2、跟bootloader沟通的方式 
    传统方式bootloader通过读取misc分区信息来决定是进入Android主系统还是Recovery系统
    A/B系统的bootloader通过特定的分区信息来决定从slot A还是slot B启动
3、系统的编译过程 
    传统方式在编译时会生成boot.img和recovery.img分别用于Android主系统和Recovery系统的ramdisk
    A/B系统只有boot.img,而不再

本文标签: 系统ABOTA