基于rockchip平台制作ota差异包,废话不多说,直接上方法。
一、OTA完整包生成方法
OTA完整包可用于T卡本地升级和OTA在线升级。OTA完整包包含完整的system、recovery.
和boot.img。
发布一个版本固件正确顺序:
make -j4
make otapackage
./mkimage.sh ota
注意:发布固件必须使用./mkimage.sh ota,将boot与kernel打包,不需要单独烧kernel,如果量产固件是分开的,将会影响后面差异包升级,除非你不需要用差异升级!
在out/target/product/rk3188/目录下会生成ota完整包rk3188-ota-eng.root.zip,改名成
update.zip即可拷贝到T卡或内置flash中进行固件升级。
二、OTA差异包生成方法
OTA差异包只有差异内容,包大小比较小,主要用于OTA在线升级,也可T卡本地升级。OTA差异包制作需要特殊的编译进行手动制作。
- 首先发布v1版本的固件,生成v1版本的完整包
- 保存
out/target/product/rk3188/obj/PACKAGING/target_files_intermediates/rk3188-target_files-eng.root.zip 为rk3188-target_files-v1.zip,作为v1版本的基础素材包。
- 修改kernel代码或者android 代码,发布v2版本固件,生成v2版本完整包
(4)保存
out/target/product/rk3188/obj/PACKAGING/target_files_intermediates/rk3188-target_files-eng.root.zip 为rk3188-target_files-v2.zip,作为v2版本的基础素材包。
- 生成v1-v2的差异升级包:
./build/tools/releasetools/ota_from_target_files -v -i rk3188-target_files-v1.zip
-p out/host/linux-x86 -k build/target/product/security/testkey rk3188-target_files-v2.zip
out/target/product/rk3188/rk3188-v1-v2.zip
说明: 生成差异包命令格式:
ota_from_target_files
-v -i 用于比较的前一个target file
-p host主机编译环境
-k 打包密钥
用于比较的后一个target file
最后生成的ota差异包
- 版本管理
从生成差异包的方法可以知道,差异包是两个版本的素材包做差异生成,所以每发布一个版本固件必须保存obj下的素材包以及可升级的完整包和./mkimage.sh ota生成的各个image。
如果有使用在线升级,必须给每个版本固件配置唯一的ota版本号:
device/rockchip/rksdk/rksdk.mk中的
ro.product.version = 1.0.0(也可以是其他格式的版本号字符串)