Android OTA升级大家都有接触过,网上也有很多说明文章,我这边把Android OTA升级的架构移植到嵌入式设备上。
对Android OTA说明文章,我感觉比较好的是:https://blog.csdn.net/q1183345443/article/details/78042785
大家可以去看看,把整个OTA升级过程和一些文件说明写的很详细。
Android OTA升级有两种方式,
- 一种是recovery系统升级
- 一种是A/B互升的无缝升级
recovery升级是基于linux架构的,使用离不开各个分区
- Android中分区:bootload,misc,recovery,ramdisk,system,data,cache等分区
- 嵌入式linux分区:uboot,kernel,rootfs分区等
如果要移植升级架构,分区是一个基础
- uboot misc main_kernel recovery_kernel misc man_rootfs recovery_rootfs cache 等, 这7个分区是必须的,有一些uboot支持吧kernel和rootfs做到一起,就是Android的ramdisk。
- uboot分区主要判断misc分区的信息,来判断进入到mian_system,recovery_system,也可以直接配置bootcmd和bootages来实现这个
- kernel_recovery 和rootfs_recovery 可以进行裁剪到最小,
- cache分区主要放升级包和升级配置文件和升级log
Android OTA主要分为两个部分,
- mkotapackage,也就是升级包制作部分,主要用python写的,其中有使用JAVA进行签名等。
- 下位机中运行的程序recovery,recovery程序的源码在Android源码 /bootable/recovery 中,
他主要做了
- 挂载分区
- 读取/cache分区和misc分区的配制信息和同步这两个分区的信息,因为recovery有很多功能(OTA升级,分区擦写,恢复出厂设置),判断recovery功能,
- 日志保存
- 签名校验
- 读取升级包中install程序,放入到本地中。
- 等待神经结果,并重启回到主系统
- UI显示 (我这里没有用)