Android系统升级目前有两套机制:AB系统 和 Reocvery。
- AB系统升级:
- 两套系统除了版本以外完全一样,占用相同大小的存储空间。 即设备里面至少存在两个system分区(system_a和system_b)和vendor分区(vendor_a和vendor_b),分别用于A系统和B系统。
- 原理:使用A系统的时候后台升级B系统,升级结束重启切换到B系统,反之亦然。
- 好处:可以一边使用一边系统升级(就像更新王者荣耀时,可以使用微信聊天);当其中一个系统异常导致不开机可以切换到另外一个并且修复异常的系统(和售后的距离越来越远)。
- 缺点:鱼和熊掌不可兼得。边使用边升级系统可能会影响用户体验;同时两套系统浪费存储空间(RMB)。
- Recovery系统升级:
- Recovery系统升级本质上设备里面也是安装了两个系统,Main System和Recovery System,Main System相当于通常将的Android系统,但是目前手机Main System消耗的存储空间基本都超过4G,Recovery System一般不超过100M,确实相比于AB系统节约了不少存储空间(人民币)。
- 原理: Main System下载新版本升级包然后重启到Recovery System,Recovery拿到升级包升级Main System,然后再重启回到Main System。
- 好处:整套升级机制较为简单,节约存储空间。
- 缺点:升级时不能使用设备;升级过程稳定性较差;升级失败大概率无法开机或者回滚到原来的版本;
对于手机等消费电子来说存储空间同时存在两套system、vendor以及一些oem分区,存储空间(RMB)实在浪费,因此目前还没有广泛使用。
文章将基于Android R 源码详细介绍Recovery系统升级原理。将从以下几个方面展开: