目录

前言

一、制作升级包

1、安装依赖软件

2、获取制作工具

3、添加依赖工具

4、添加配置文件

(1)updater_binary

(2)signing_cert.crt和rsa_private_key.pem

(3)BOARD.list和VERSION.mbn

(4)updater_specified_config.xml

5、制作升级包:

(1)SD卡包:

(2)OTA全量包:

二、升级方法

1、SD卡包升级方法

2、OTA全量包升级方法

三、附录


前言

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主菜单页面:

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐