OpenHarmony OTA全量包与SD卡包制作及升级方法
(2)添加证书路径,在packaging_tools下创建sign_cert目录,用于存放signing_cert.crt,signing_cert.crt位于base/update/updater/test/unittest/test_data/src中;SD卡包:python3 build_update.py ./target/ ./out -pk ./target/updater_confi
目录
(2)signing_cert.crt和rsa_private_key.pem
(4)updater_specified_config.xml
前言
1、文章由移远通信技术股份有限公司提供。
2、以下内容包含了个人理解,仅供参考,如有不合理处,请联系笔者修改/删除,18107158288(微信同号)。
一、制作升级包
做包工具下载命令:
repo init -u https://gitcode.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c base/update/packaging_tools
1、安装依赖软件
pip3 install xmltodict asn1crypto cryptography cffi
2、获取制作工具
制作工具位于base/update/packaging_tools,最好是使用与版本一致的工具,避免出现兼容性问题
3、添加依赖工具
(1)在packaging_tools创建目录lib
mkdir lib
(2)拷贝out/(product*)/clang_x64/updater/updater/diff和
out/oriole/clang_x64/thirdparty/e2fsprogs/*到packaging_tools/lib中
cp -rf ****/out/(product*)/clang_x64/updater/updater/diff packaging_tools/lib/
cp -rf ****/out/(product*)/clang_x64/thirdparty/e2fsprogs/* packaging_tools/lib/
4、添加配置文件
这里的配置文件均来源于社区源码,证书和密钥也可以换成自己的,一定要确保做包的证书与设备中的证书是同一个,否则会导致安装包校验失败。
(1)updater_binary
在packaging_tools下创建目标版本镜像存放目录target,并把updater_binary放在target目录,
updater_binary需要先编译源码才能获取,路径是out/(product*)/packages/phone/updater/bin;
mkdir target
cp -rf out/(product*)/packages/phone/updater/bin/updater_binary ./ target/
(2)signing_cert.crt和rsa_private_key.pem
在packaging_tools下创建sign_cert目录,用于存放signing_cert.crt,可以使用base/update/updater/test/unittest/test_data/src中的signing_cert.crt;
mkdir sign_cert
cp -rf base/update/updater/test/unittest/test_data/src/signing_cert.crt ./sign_cert/
rsa_private_key.pem需要放在target/updater_config路径下,可以使用base/update/updater/test/unittest/test_data/src中的rsa_private_key2048.pem;
cp -rf base/update/updater/test/unittest/test_data/src/rsa_private_key2048.pem ./target/updater_config/
(3)BOARD.list和VERSION.mbn
BOARD.list:存在平台代号,一个代号占一行,用来校验平台,如果设备不在本列表中,则不允许升级该升级包,当前是HI3516,由于updater中GetLocalBoardId写死是HI3516,所以BOARD.list中必须要有HI3516,否则会导致boardId校验失败,当然也可以把GetLocalBoardId改成自己的。
VERSION.mbn:存放版本号,一个版本号占一行,用来进行版本校验,只有设备的版本号在本文件中才允许升级这个升级包。示例:
OpenHarmony 5.0.0.71
OpenHarmony 5.0.0.72
OpenHarmony 5.0.0.73
OpenHarmony 5.0.0.74
(4)updater_specified_config.xml
updater_specified_config.xml需要放在target/updater_config中,其内容如下:
<?xml version="1.0"?>
<package>
<head name="Component header information">
<info fileVersion="02" prdID="OpenHarmony" softVersion="OpenHarmony 5.0.0.71" date="2025-08-01" time="12:30">head info</info>
</head>
<group name = "Component information">
<component compAddr="system" compId="16" resType="05" compType="0" compVer="0o00">./system.img</component>
<component compAddr="vendor" compId="17" resType="05" compType="0" compVer="0o00">./vendor.img</component>
</group>
</package>
5、制作升级包:
(1)SD卡包:
python3 build_update.py ./target/ ./out -pk ./target/updater_config/rsa_private_key2048.pem -sc,
(2)OTA全量包:
python3 build_update.py ./target/ ./out -pk ./target/updater_config/rsa_private_key2048.pem
生成的升级包在out目录下
二、升级方法
1、SD卡包升级方法
(1)取出做好的 SD卡包updater_sd.zip重命名为updater.zip
(2)在SD卡根路径下创建updater文件夹,并把重命名后的SD卡包放到updater文件夹中;
(3)开始升级
hdc shell "write_updater sdcard_update"
hdc shell reboot updater
执行完毕后设备将自动重启进入updater模式开始SD卡升级。
2、OTA全量包升级方法
(1)取出做好的 OTA全量包updater_full.zip重命名为updater.zip,并把updater.zip传到设备的/data/update路径下:
hdc file send D:\updater.zip /data/update
(2)写入升级包路径
执行hdc shell "write_updater updater /data/update/updater.zip"或者hdc shell "echo 000000000000000000000000000000000000000000000000000000000000000\\n--update_package=/data/update/updater.zip\\n > /dev/block/by-name/misc",这里第二条命令是通过写直接写misc的方式,所以命令行内容需要与misc的结构保持一致,否则会在升级时解析不到升级包路径;
(3)开始升级
hdc shell reboot updater
执行完毕后设备将自动重启进入updater模式开始升级。
三、附录
OTA升级页面:

updater主菜单页面:

更多推荐
所有评论(0)