Android智能设备ota升级小结,包含高通,mtk,展锐三平台:
无论制作整包还是差分包,都需要进行source lunch加载编译环境:
. build/envsetup.sh
lunch
高通和mtk平台在升级命令中一样:
//整包
python ./build/make/tools/releasetools/ota_from_target_files -p out/host/linux-x86 -v target.zip zb.zip
关于target.zip获取路径,这边给一个参考路径,具体可以问cpm:
高通:out/dist/merged-qssi_bengal-target_files.zip
mtk:out/target/product/bsp/merged/target_files.zip
一般通过build.sh编译脚本整编完成后在制作target包时,对应的ota升级整包也会制作出来(这样就不用重新制作直接使用),也给一个参考包zip路径,具体可以问cpm:
高通:out/dist/merged-qssi_bengal-ota.zip
mtk:out/target/product/bsp/merged/otapackage.zip
//差分包
python ./build/make/tools/releasetools/ota_from_target_files -p out/host/linux-x86 -v -i old_target.zip new_target.zip cfb.zip
还有一个编译命令参数 -k:key的路径,给一个参考路径目录下选择:
user 版本为 build/target/product/security/release/releasekey
userdebug 版本为 build/target/product/security/testkey
整包编译命令几乎不会出问题,大部分都是差分包编译出问题,异常处理:
当终端编译报错 包含goodle,version之类关键词,基本上是编译环境有问题,查看个人的python版本,把python换成python3(具体修改编译环境 可以复制错误信息Google搜索一下)完成后的编译脚本:
python3 ./build/make/tools/releasetools/ota_from_target_files -p out/host/linux-x86 -v -i old_target.zip new_target.zip cfb.zip
终端编译报错包含check_vintf compatibility_matrix关键词,这是编译前后版本兼容性的问题:
方法一:重新编译,多试几次之后,就会惊喜的发现居然成功了
方法二:使用编译参数跳过兼容性检查,ota_from_target_files文件中有解释 --skip_compatibility_check( Skip checking compatibility of the input target files package.)
python ./build/make/tools/releasetools/ota_from_target_files -p out/host/linux-x86 -skip_compatibility_check -v -i old_target.zip new_target.zip cfb.zip
报错前后target包搞错,会报新旧包编译时间错误之类的信息,使用 - override_timestamp(不会擦除数据) 可以解决,忽略target包编译时间验证;
- downgrade(擦除数据) 可以解决降级是升级的问题。
展锐平台
展锐平台分为2中升级包制作方式,第一种和高通mtk一样,这里主要介绍第二种pac包制作升级包:
- Pac 包直接产生 OTA 升级包好处有:
- 无需进行 target 包编译,节省编译时间。
- 不会因 target 包遗失而无法产生升级包。
- 无需另辟很大存储空间进行 target 包和 OTA 整包存储。
首先是获取otatool工具包
- source build/envsetup.sh
- lunch 对应项目工程
- kheader
- make otatools
- 编译出的 otatool 在 out/target/product/spXXXX/otatools.zip(一次编译任何Linux环境都可以使用,建议保存)
整包:
./build/make/tools/releasetools/ota_from_pac_files –p product_name -k sign_key -t
pac_target full_update.zip
差分升级包
./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
- sign_key 编译用到的key
- delta_base-to-target.zip 基准版本到目标版本的差分 OTA 升级包。
- full_update.zip 目标版本整包。
- product_name base 对应的项目名称,只能是小写。如 sharkl3、sharkle、pike2、sharkl5、roc1 等。
- pac_base 基准版本 pac 包,既可为.gz 的压缩格式,也可为.pac 的非压缩格式。
- pac_target 目标版本 pac 包,压缩非压缩皆可。
/tmp/recovery.log