OTA 整体升级包制作步骤(以SC9863A平台为例)
- 下载项目 AP 的代码。
- 通过以下命令设置编译环境。
source build/envsetup.sh lunch kheader
- 通过 make 命令全编整个工程。
- 进入“device/sprd/sharkle/sl8541e_1h10_32b/”目录(board 对应目录),手动建立 modem_bins 子目录。
- 将展锐发布的对应 AP 版本的 modem bins 按照“device/sprd/sharkle/common/ModemBuild.mk”中的规定名字改名后拷贝到“device/sprd/sharkle/sl8541e_1h10_32b/modem_bins/”目录下。
以下是 SC9863A平台 示例
device/sprd/sharkle/common/ModemBuild.mk
MODEM_COPY_LIST := ltemodem ltegdsp ltedsp pmsys ltenvitem wcnmodem ltedeltanv \
gnssmodem gnssbdmodem
改名对应规则请参考“文档最后 Modem bins 改名映射”。
主 modem 以“.dat”为后缀的文件也要改为“.bin”为文件名后缀的文件。
ps:也可以根据ini文件中ota_partition中绿框是改名后的名字,实际的modem根据对应红框的大写名字去flash.cfg里面找
- 通过命令“make otapackage”编译 OTA 整包 此命令运行完后会产生版本 target 包和 OTA 整包。整包目录:out/target/product/sl8541e_1h10_32b/sl8541e_1h10_32b_Natv-ota-eng.q.zip
PS:为了以后在版本升级时可以使用差分升级,要保留此版本对应的 target 文件。路径为:
out/target/product/sl8541e_1h10_32b/obj/PACKAGING/target_files_intermediates/sl8541e_1h10_32b_Natv-target_files-eng.q.zip
- 如果要制作版本 PAC 包,请在此时执行命令生成 PAC 包。
PS:请严格在执行完 make otapackage 后做 PAC 包,因为 make otapackage 命令会对很多 img 重新编译,只有在此步骤后做的 PAC 包才是跟 target 包严格对应的。
我们也可以根据target包做ota整包:
./build/tools/releasetools/ota_from_target_files -k build/target/product/security/testkey sl8541e_1h10_32b_Natv-target_files-eng.q.zip update.zip
增量升级包制作步骤
差分升级包分为升级差分包和降级差分包。降级差分包是从新版本向老版本进行降级,Android 7.0 之后的版本支持该种升级包,由于是回退降级,要擦除 userdata,故此种升级包慎用。
- 下载 A 版本代码,执行“3.1 OTA 整体升级包制作步骤”中所有步骤,然后保存此版本对应的target 包 A-target.zip。
- 下载 B 版本代码,执行“3.1 OTA 整体升级包制作步骤”中所有步骤,然后保存此版本对应的target 包 B-target.zip。
- 执行命令制作差分升级包。“-k”后面参数 sign_key_dir 为实际版本的 key 的放置目录,在 user 版本是“build/target/product/security/release/releasekey”,在 userdebug 版本是“build/target/product/security/testkey”。
升级差分包制作: ./build/tools/releasetools/ota_from_target_files –k sign_key_dir -i A-target.zip B-target.zip A-B_update.zip 降级差分包制作此处须注意 A 版本必须要比 B 版本新,即编译时间靠后。这种差分包需要加入“--downgrade”参数。 ./build/tools/releasetools/ota_from_target_files --downgrade –k sign_key_dir -i A-target.zip B-target.zip A-B__downgrade_update.zip 举例子: ./build/tools/releasetools/ota_from_target_files -k build/target/product/security/testkey -i sl8541e_1h10_32b_Natv-target_files-eng.q.V1.zip sl8541e_1h10_32b_Natv-target_files-eng.q.zip update.zip
通过 PAC 包产生 OTA 升级包
PAC 包直接产生 OTA 升级包好处有:
- 无需进行 target 包编译,节省编译时间。
- 不会因 target 包遗失而无法产生升级包。
- 无需另辟很大存储空间进行 target 包和 OTA 整包存储。
具有该种功能的 OTATOOLS 思路是从 PAC 包中的 imgs 和分区表中解析出制作 OTA 升级包所必须的要素,并最终制作出 OTA 升级包。
目前已有的 OTATOOLS 能同时使用 PAC 包和 target 包产生升级包,能产生 OTA 整包、差分包、downgrade 包等。
OTATOOLS 工具获取
依次执行如下命令即可编译出项目对应 otatool:
1. source build/envsetup.sh
2. lunch 对应项目工程
3. kheader
4. make otatools
编译出的 otatool 在 out/target/product/spXXXX/目录下,由于该目录可能会被频繁的删除并重编,请将otatool 文件夹(otatools.zip 解压也行)直接挪至其他非工程代码 linux 环境的单独目录使用。
该 otatool 的特点:
- 经一次编译,可长期使用,无需每个版本都重新产生。
- 该 tool 即能用 target 包产生 OTA 升级包,也能用 PAC 包产生 OTA 升级包。
具体做包指令
制作 OTA 整包
./build/make/tools/releasetools/ota_from_pac_files -p product_name -k sign_key -t pac_target full_update.zip
制作 OTA 差分升级包
./build/make/tools/releasetools/ota_from_pac_files -p product_name -k sign_key -b pac_base -t pac_target delta_base-to-target.zip
制作降级差分升级包
./build/make/tools/releasetools/ota_from_pac_files -d -p product_name -k sign_key -b pac_newer_build -t pac_oldrget delta_update_newer-to-old.zip
Modem bins 改名映射
以上即可做出OTA整包或者差分包。
单曲循环《如愿》