乐趣区

关于openharmony:OpenHarmony手把手教你OTA升级开发

简介
升级包装置组件运行在 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,启动降级
……
……

退出移动版