" />

Android

浅谈Android A/B System OTA


       在Android 7.0 发布之前,Google发布了一项新功能,该功能将与第一批Pixel系列手机配套使用。那就是Google Pixel和Pixel XL设备上的新的OTA升级方式,A/B System Updates新的分区布局彻底改变了Android设备上处理软件更新的方式,即“ 无缝更新 ”(seamless updates)。Google在其第二代Pixel设备上也采用了这种分区方式,其他OEM厂商也开始加入,比如Oneplus6,Essential Phone,Moto Z2 Force,Nokia7,小米Mi A1已经有一些设备支持它。但目前受支持的设备列表仍相当有限。Google虽然推广这种方式但并没有完全要求强制。但我们确信在未来的时间内,这种新的分区方式将成为趋势,甚至将作为多个Android制造商的标准。

什么是Android上的无缝更新或A / B系统更新?

顾名思义,A/B系统就是设备上有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监测升级信息并下载升级数据,然后将数据更新到另外一套分区,写入数据完成后从更新的分区启动。

A / B分区的优点

A/B 系统更新可带来以下好处:

  1. OTA 更新可以在系统运行期间进行,而不会打断用户(包括在重新启动后进行的应用优化)。这意味着用户可以在 OTA 期间继续使用其设备。在更新期间,唯一的一次宕机发生在设备重新启动到更新后的磁盘分区时。
  2. 如果 OTA 失败,设备会启动到 OTA 之前的磁盘分区,并且仍然可以使用。您可以再次尝试进行 OTA 下载。采用这种方式可以降低更新之后设备无法启动的可能性,这意味着用户需要将设备送到维修和保修中心进行更换和刷机的情况将会减少。
  3. 任何错误(例如 I/O 错误)都只会影响未使用的分区组,并且用户可以进行重试。由于 I/O 负载被特意控制在较低水平,以免影响用户体验,因此发生此类错误的可能性也会降低。
  4. 更新包可以流式传输到 A/B 设备,因此在安装之前不需要先下载更新包。流式更新意味着用户没有必要在 /data 或 /cache 上留出足够的可用空间来存储更新包。
  5. 缓存分区不再用于存储 OTA 更新包,因此无需调整缓存分区的大小。
  6. dm-verity 可保证设备使用的启动映像未损坏。如果设备因 OTA 错误或 dm-verity 问题而无法启动,则可以重新启动到旧映像。(Android 验证启动不需要 A/B 更新。)

由于A/B 系统分区没有独立的Recovery分区,是不是就没法刷Twrp了?并不,实际上只会影响Twrp没法永久化,Twrp可以捆绑在Boot.img里面,也就是说每当你刷一个Custom rom的时候由于替换了原来的boot,之后都要再刷一遍Twrp.zip使twrp重新刷入到新的boot里。

如何检查自己的设备是否支持无缝更新(A / B系统更新)

1.   使用终端模拟器,下载app ‘’Termux”并打开,输入

                     getprop ro.boot.slot_suffix
如果它输出一个插槽后缀(_a或_b),则表示您的设备受支持。
或者输入
                     getprop ro.build.ab_update
该命令应返回truefalsetrue即为支持。

2.   直接下载Treble Check打开

 

虽然它主要侧重于告诉您的设备是否支持Project Treble,但它还提供有关Android手机是否支持A / B分区系统的信息。这些是检查Android设备的无缝更新支持(A / B系统更新)的两种方法。而对于只有单个分区的旧设备来支持它当然是不可能的。

参考资料:Android A/B System OTA分析(一)概览

A/B(无缝)系统更新

Check Seamless Updates Support on Android Devices

 

 

 

 

 

 

 

(4)

本文由 易新网管理组想的名字 作者:Million_Force_S 发表,转载请注明来源!

热评文章


Warning: count(): Parameter must be an array or an object that implements Countable in /www/wwwroot/nvtnet.com/wp-includes/class-wp-comment-query.php on line 405

发表评论

电子邮件地址不会被公开。 必填项已用*标注