制作并验证Android的OTA包

 当我们拿到一份Android源码后,要如何制作OTA升级包(实质上是Recovery升级的ZIP包,OTA升级是基于Recovery的机制再加上下载ZIP包和ZIP包版本管理等功能实现)呢?(注:下面命令如无特别说明,则均在Android源码目录下执行)
  1.进入Android源码目录下执行如下命令来初始化环境变量:
    source build/envsetup.sh
    lunch
    其中,lunch命令运行后会要求选择所要编译的产品名。
  2.编译生成OTA包(前提是Android需先完整编译过一次)
    make otapackage
    执行上述命令后(有些平台需要先执行make后再执行该命令),会生成out/target/product/XXX/YYY-ota-eng.guochongxin.zip和out/target/product/XXX/obj/PACKAGING/target_files_intermediates/YYY-target_files-eng.guochongxin.zip两个后期需要使用到的包,其中前一个为完整升级包,后一个为后期制作增量升级包时的基准对比包,那么如何制作增量升级包呢?假如机器里的Android系统软件是A版本,然后我们刚使用make otapackage命令制作了B版本,此时我们可以在之前保留的A版本的临时目标文件(即保留下来的编译A版本软件时target_files_intermediates目录下的YYY-target_files-eng.guochongxin.zip文件)基础上制作增量包,过程如下:
    ./build/tools/releasetools/ota_from_target_files -v -i A-target_files-eng.guochongxin.zip out/target/product/XXX/obj/PACKAGING/target_files_intermediates/YYY-target_files-eng.guochongxin.zip YYY-eng.guochongxin_incremental.zip
    执行上述命令后,会在当前目录下生成YYY-eng.guochongxin_incremental.zip增量包,其中A-target_files-eng.guochongxin.zip为A版本的临时目标文件,而YYY-target_files-eng.guochongxin.zip为刚编译好的B版本的临时目标文件。
  3.验证Recovery升级
    将上述ZIP包(YYY-ota-eng.guochongxin.zip或YYY-eng.guochongxin_incremental.zip)复制到内部存储的任一可写目录下,假设我们的ZIP包复制到/cache目录下,文件名为ota.zip,那么接下来我们只需要再执行echo "--update_package=/cache/ota.zip" > /cache/recovery/command命令,然后再执行reboot recovery命令即可重启进入Recovery模式进行升级验证。

评论

此博客中的热门博文

I/O映射之I/O端口

通过Netlink检测网线插拔

使用seq_file