Android 9 差分包制作
示例:
现在原版本中进行编译:
source build/envsetup.sh
lunch xxx //我也不知道你们的编译命令是不是一样,按照你们平时的来
make otapackage -j
编译完成后在\out\target\product\xxx\obj\PACKAGING\target_files_intermediates\目录下找到xxx-target_files-eng.xxx.zip 复制到项目根目录上。 ~/OTA_A.zip
进行二次编译,删除或者添加改动。清除OUT 目录下的原有ZIP包。
我是直接make clean清除掉out目录。再次进行编译
source build/envsetup.sh
lunch xxx //我也不知道你们的编译命令是不是一样,按照你们平时的来
make otapackage -j
编译完成后在\out\target\product\xxx\obj\PACKAGING\target_files_intermediates\目录下找到xxx-target_files-eng.xxx.zip 复制到项目根目录上。。~/OTA_B.zip
最后就是根目录上执行
./build/tools/releasetools/ota_from_target_files -v -p out/host/linux-x86/ -i OTA_A.zip OTA_B.zip update.zip
生成的差分包就是update.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升级方式,默认为不使用。