制作OTA全量升级包
导入环境 source build/envsetup.sh
lunch 选择版本
首先全局 make -j16 一下,保证编译生成文件的完整
再次执行 make -j16 otapackage 生成ota全量包
两个重要的文件悉知
1. 全量升级包 -> out/target/product/.../*.zip, 2. 差分包中间文件 -> out/target/product/makena/obj/PACKAGING/target_files_intermediates/*.zip
拷贝 out/target/product/…/*.zip到优盘,重命名update.zip
(可选)adb shell到/cache/recovery/command,添加命令–update_package=root:path以告知Recovery进行升级:
1. touch cache/recovery/command 2. echo –update_package=root:path > cache/recovery/command
reboot recovery 进入recovery选择升级包升级
OTA差分包制作
make otapackage过程生成中间文件目录 out/target/product/…obj/PACKAGING/target_files_intermediates/拿到中间文件*.Mooney
拷贝文件到根目录下,重命名中间文件1.zip
根据修改源代码,重新编译OTA全量升级包,再次重复1步骤到指定文件夹下拿到第二次生成的中间文件
拷贝文件到根目录,重命名2.zip
命令制作差分包 ./build/tools/releasetools/ota_from_target_files -v -i 1.zip -p out/host/linux-x86 -k build/target/product/security/testkey 2.zip update_signed.zip
工具的命令行参数因版本不同有微小的变化,现列举一些常见参数说明: -b (--board_config) <file> 在代码中用pass处理这一参数匹配,不做处理。 -k (--package_key) <key> 指定签名用的密钥。如果缺省,会从指定的源或目标版本包的META/misc_info.txt文件中获取,或使用"build/target/product/security/testkey"。对于制作增量升级包,默认的密钥是基于源版本包文件META/misc_info.txt中的指定的路径下的密钥对,而不是从目标版本包里的文件中获取,这点应该注意到。 -i (--incremental_from) <file> -i参数后指定的zip将作为差分包制作的源版本包处理 -w (--wipe_user_data) 生成在安装时擦除user date分区的升级包 -n (--no_prereq) 忽略时间戳检查,用于开发过程中的OTA包的经常升降级 -e (--extra_script) <file> 在制作的升级包中的升级脚本中插入外部的脚本。 -a (--aslr_mode) <on|off> 指定是否打开升级包的aslr模式,默认为on状态 -p (--path) <dir> 指定一个路径,作为工具在运行过程中搜索二进制可执行文件的路径。在升级包制作中,我们一般指定/out/host/linux-x86目录,作为搜索签名工具的路径。 -f (--fota) <fota> 指定是否使用 fota升级方式,默认为不使用。