
【RK3588】Android系统OTA升级详细流程(一)
介绍RK3588平台Android系统OTA升级流程(第一篇)
OTA(over the air)升级是Android系统提供的标准软件升级方式。它功能强大,提供了完全升级(完整包)、增量升级模式(差异包),既可以通过本地升级,也可以通过网络升级。
本文我们将编译三个版本的Android镜像,分别为V1.0.0版本、V1.0.1版本以及V1.0.2版本,其中V1.0.0版本作为基础版本直接烧录到RK3588开发板上;V1.0.0版本升级到V1.0.1版本采用完全升级的方式进行升级,测试OTA完全升级功能;V1.0.1版本升级到V1.0.2版本将采用增量升级方式进行升级,测试OTA增量升级功能。
测试平台:正点原子的RK3588开发板(ATK-DLRK3588)
1.编译V1.0.0版本镜像
在RK3588 Android SDK根目录下,打开device/rockchip/rk3588/device.mk文件,添加如下两行内容:
ro.product.ota.host = 192.168.6.67:8888 \
ro.product.version = 1.0.0 \
设置当前版本号为V1.0.0,同时将ro.product.ota.host修改为OTA升级服务器的IP地址(你需要将其修改为你的OTA升级服务器的IP地址),8888为端口号(Android系统OTA升级详细流程(三)这篇文章将会介绍如何搭建OTA升级服务器)。
在SDK根目录下执行如下命令编译U-Boot、Linux内核以及Android源码:
source build/envsetup.sh
lunch ATK_DLRK3588-userdebug
./build.sh -UCKAu -J20
编译完成后,会在rockdev/Image-ATK_DLRK3588/目录下生成所需镜像,如下所示:
将update.img烧录到开发板上,同时将update.img做个备份,以免在后续的编译过程中被覆盖。
2.编译V1.0.1版本完整升级包
打开device/rockchip/rk3588/device.mk文件,将当前版本号修改为V1.0.1,如下图所示:
修改完成后保存退出。执行如下命令编译OTA升级包:
source build/envsetup.sh
lunch ATK_DLRK3588-userdebug
./build.sh -UCKAuo -J20
编译完成后,会在rockdev/Image-ATK_DLRK3588/目录下生成OTA完整升级包ATK_DLRK3588-ota-eng.dengtao.zip(名字当中的“dengtao”对应Ubuntu当前用户,你如果用xxxx用户去编译,对应的文件名便是ATK_DLRK3588-ota-eng.xxxx.zip),如下图所示:
将ATK_DLRK3588-ota-eng.dengtao.zip重命名为update.zip即可拷贝到TF卡进行升级。
除此之外,rockdev/Image-ATK_DLRK3588/目录下生成的ATK_DLRK3588-target_files-eng.dengtao.zip将作为V1.0.1版本的基础素材包,制作V1.0.2版本增量升级包时将会使用到。将上面两个文件进行备份保存:
mv rockdev/Image-ATK_DLRK3588/ATK_DLRK3588-ota-eng.dengtao.zip ./update.zip
mv rockdev/Image-ATK_DLRK3588/ATK_DLRK3588-target_files-eng.dengtao.zip \
./target_files-v1.0.1.zip
3.编译V1.0.2版本增量升级包
打开device/rockchip/rk3588/device.mk文件,将当前版本号修改为V1.0.2,如下图所示:
修改完成后保存退出。执行如下命令编译OTA升级包:
source build/envsetup.sh
lunch ATK_DLRK3588-userdebug
./build.sh -UCKAuo -J20
编译完成后,会在rockdev/Image-ATK_DLRK3588/目录下生成V1.0.2版本的基础素材包ATK_DLRK3588-target_files-eng.dengtao.zip,如下图所示:
将该文件进行备份保存:
mv rockdev/Image-ATK_DLRK3588/ATK_DLRK3588-target_files-eng.dengtao.zip \
./target_files-v1.0.2.zip
接下来执行如下命令生成V1.0.1-V1.0.2的差异升级包(也就是增量升级包):
# 制作OTA差异包,需要安装python protobuf库,注意Ubuntu默认的python版本应为python2
sudo apt-get update
sudo apt-get install python3-pip python-protobuf
# 接着执行如下命令制作OTA差异包
./build/tools/releasetools/ota_from_target_files --block -v -i target_files-v1.0.1.zip \
-p out/host/linux-x86 -k build/target/product/security/testkey \
target_files-v1.0.2.zip rk3588_v1-v2.zip
命令参数说明:
ota_from_target_files
--block 使用block方式进行OTA升级,Android版本>=7.1时需要加上这个参数;
-v -i 用于比较的前一个target file;
-p host主机编译环境;
-k 打包密钥
target_files-v1.0.2.zip 这是用于比较的后一个target file;
rk3588_v1-v2.zip 这是生成的OTA差异包。
命令执行完后,将会生成OTA差异包rk3588_v1-v2.zip,如下所示:
接下来请阅读:Android系统OTA升级详细流程(二)
更多推荐
所有评论(0)