展锐Android 10平台OTA升级

OTA 整体升级包制作步骤(以SC9863A平台为例)

  1. 下载项目 AP 的代码。
  2. 通过以下命令设置编译环境。
    source build/envsetup.sh
    lunch
    kheader
  3. 通过 make 命令全编整个工程。
  4. 进入“device/sprd/sharkle/sl8541e_1h10_32b/”目录(board 对应目录),手动建立 modem_bins 子目录。
  5. 将展锐发布的对应 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,故此种升级包慎用。

  1. 下载 A 版本代码,执行“3.1 OTA 整体升级包制作步骤”中所有步骤,然后保存此版本对应的target 包 A-target.zip。
  2. 下载 B 版本代码,执行“3.1 OTA 整体升级包制作步骤”中所有步骤,然后保存此版本对应的target 包 B-target.zip。
  3. 执行命令制作差分升级包。“-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整包或者差分包。 

 单曲循环《如愿》

猜你喜欢

转载自blog.csdn.net/androidzmm/article/details/128285841