简介:
Android系统更新简而言之就是将升级包从服务器下载到本地然后对当前系统进行升级的过程,主要包括三大块:升级包、应用层、recovery层。
主要功能流程如下如所示:
- 升级包:
版本编译完成后会生成target_file,这里的名称是:ota_target,升级包就是使用源版本的target_file跟目标版本的target_file通过imgdiff/bsdiff工具完成两个img文件的对比差分,做出升级所需的.new.dat、.patch.dat、.transfer.list文件,目录结构如下:
升级包解压后目录结构如下:
升级脚本和升级执行文件位于META-INF\com\google\android中
其中updater-script记录了升级时候需要执行的命令
update-binary则负责具体执行脚本中的命令语句
META-INFO下的CERT.RSA CERT.SF MANIFEST.MF三个文件用于在recovery执行代码中的校验过程
.img.p文件为特定分区的镜像升级文件
.new.dat .patch.dat .transfer.list三个文件共同负责完成一个分区的升级,比如升级system分区的文件为:system.new.dat system.patch.dat system.transfer.list
其在升级脚本中的升级命令为:
block_image_update(map_partition("system"),package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat") ||abort("E1001: Failed to update system image.");