OTA升级Google官方文档翻译——OTA Package Tools

来源:互联网 发布:windows apache域控 编辑:程序博客网 时间:2024/04/26 07:45

英语是硬伤,本文仅为个人理解,希望能与大家一起学习进步,如果有翻译不当之处,欢迎大家指正,以免误导他人,谢谢。

原文网址:https://source.android.com/devices/tech/ota/tools


OTA Package Tools

build/tools/releasetools 目录下的ota_from_target_files工具可以生成两种类型的更新包:整包和差分增量升级包。工具以target-files.zip中间包作为输入。

整包升级

整包更新会更新包括system、boot、recovery分区在内的左右数据。只要设备可以接受到升级包并且可以进入到recovery模式下,那么升级就可以进行,同时整包升级对设备当前的版本没有要求。

以下是给出的举例:

# first, build the target-files .zip

. build/envsetup.sh && lunch tardis-eng

mkdir dist_output

make dist DIST_DIR=dist_output

 

./build/tools/releasetools/ota_from_target_files dist_output/tardis-target_files.zip ota_update.zip

重点是最后一步,根据target中间包生成ota_update.zip升级包,也就是最终的整包。默认可以用testkey签名调试用,对于正式发货的机器,各家会生成自己的private key,这个具体怎么做后面也会介绍。

差分增量升级

差分增量升级与整包不同,升级包中包含的是一个个的二进制patch,这么做的主要原因是减少升级包的大小,毕竟每次都用整包下载的时间较长,而且有些设备还只能用流量下载。

  • 对于不涉及更新的文件升级包中不会涉及
  • 对于有差异的文件升级包中只会包含前后两个版本之间的变化部分

对于差分升级,不同于整包对基础版本的不限制,差分要求固定的基础版本,同时在做包时,需要前后两个版本的target.zip中间包去做差分升级包。命令如下:

./build/tools/releasetools/ota_from_target_files -i PREVIOUS-tardis-target_files.zip dist_output/tardis-target_files.zip incremental_ota_update.zip # make incremental from the older version

如果是做block-based的差分升级包,在其中加入—block参数即可。

差分升级包的制作类似于整包,但是大小会小很多,大概是1MB代替60MB。

差分升级包只能发布到具有相同基础版本的设备上,如果尝试安装到其他基础版本的设备上会发生错误,在recovery正式升级之前,会有一步校验的操作,校验升级包的来源,这样在校验失败后,重启设备后可以返回到原始的系统中,避免升级包与基础版本的不匹配造成升级一半失败的情况。

升级包

升级包(不论是整包还是差分增量升级包)是一个zip格式的压缩包,包含了一个可执行的二进制脚本,路径在META-INF/com/google/android/update-binary下。在完成升级包的签名校验后,recovery会解压这个脚本到/tmp目录下,然后运行,脚本对应的解析部分在bootable/recovery/updater目录下,详细后面继续介绍。

 

原创粉丝点击