简介
升级包装置组件运行在 updater 分区,其性能次要包含读取 misc 分区信息获取升级包状态,对升级包进行校验,确保升级包非法无效;而后从升级包中解析出降级的可执行程序,创立子过程并启动降级程序。具体降级的动作由降级脚本管制。本文将介绍如何针对 OpenHarmony L2 场景适配 updater 模式。次要内容包含:
1.OTA 降级实现原理
2.OTA 降级适配
3. 升级包制作工具
4. 升级包制作流程
5.OTA 降级 UX 界面适配
6. 示例服务器开发概述
前置条件
参考 OpenHarmony 官网领导,实现失常零碎编译和内核启动,能进入失常模式,且运行失常。
芯片需配置蕴含 updater 分区和 misc 分区的分区表。updater 分区大小不小于 32M。
1、OTA 降级实现原理
1.1 OTA 实现次要流程:
1.2 降级服务组件
降级服务组件是一个 SA(System Ability), 由 OHOS 的 init 过程负责启动。
降级服务器引擎次要性能包含:
1、查找可用的升级包
2、下载升级包
3、设置 / 获取降级策略
4、触发降级
代码目录
base/update/updateservice # 降级服务代码仓目录
├── interfaces # 降级客户端接口目录
│ ├── kits # 对外接口封装目录
│ │ └── js # 提供给降级客户端利用的 JS 接口目录
│ └── inner_api # SA 接口定义和封装目录
├── frameworks # 部件无独立过程的实现
│ └── js # JS API 的实现
│ └── napi # napi 代码实现
│ └── client # 降级客户端 napi 接口目录
├── services # 独立过程的实现
│ ├── callback # 提供给降级客户端利用的 callback 接口目录
│ └── engine # 降级客户端引擎服务目录
│ ├── etc # 降级客户端引擎 rc 配置文件目录
│ ├── include # 降级客户端引擎头文件目录
│ ├── sa_profile # SA 配置文件目录
│ └── src # 降级客户端引擎源码目录
├── test # 测试代码目录
│ ├── unittest # 降级客户端 UT 代码目录
│ └── fuzztest # 降级客户端 FT 代码目录
├── BUILD.gn # 编译入口
└── bundle.json # 部件形容文件
JS 接口阐明
接口 | 阐明 |
---|---|
checkNewVersion | 查看是否有可用的升级包版本 |
download() | 下载升级包 |
upgrade() | 将降级命令写入到 misc 分区,最终调用 reboot 命令,进入到 updater 子系统中。 |
getNewVersionInfo() | 降级实现后,获取降级后的版本信息 |
setUpgradePolicy | 设置降级策略 |
getUpgradePolicy | 获取降级策略 |
1,导入 updateclient lib
import client from 'libupdateclient.z.so'
2,获取 update 对象
let updater = client.getUpdater('OTA');
3,获取新版本信息
updater.getNewVersionInfo(info => {info "新版本信息"});
4,查看新版本
updater.checkNewVersion(info => {info "新版本信息"});
5,下载新版本,并监听下载过程
updater.download();
updater.on("downloadProgress", progress => {progress "下载进度信息"});
6,启动降级
……
……