升级

About 40 min

升级

升级范围:升级整个OpenHarmony系统,包括内置的资源、预置应用;第三方的应用不在升级的范围。

升级依赖:升级分为SD卡升级和在线升级两种。

  • SD卡升级依赖升级包和SD卡安装。
  • 在线升级依赖手机厂商部署的用于管理升级包的服务器。服务器由手机厂商部署,IP由调用者传入,请求的request接口是固定的,由手机厂商开发。

导入模块

import client from 'libupdateclient.z.so'
1

权限列表

getNewVersionInfo(callback: AsyncCallback<NewVersionInfo>): void

获取新版本信息,使用callback方式作为异步方法。

  • 参数

    参数名

    类型

    必填

    说明

    callback

    AsyncCallback<NewVersionInfo>

    回调返回新版本信息

  • 返回值

  • 示例

    updater.getNewVersionInfo(info => {
      console.log("getNewVersionInfo success  " + info.status);
      console.log(`info versionName = ` + info.result[0].versionName);
      console.log(`info versionCode = ` + info.result[0].versionCode);
      console.log(`info verifyInfo = ` + info.result[0].verifyInfo);
    )};
    
    1
    2
    3
    4
    5
    6

getNewVersionInfo(): Promise<NewVersionInfo>

获取新版本信息,使用promise方式作为异步方法。

  • 参数

  • 返回值

    类型

    说明

    Promise<NewVersionInfo>

    Promise,用于异步获取结果

  • 示例

    var p = updater.getNewVersionInfo();
    p.then(function (value) {
      console.log(`info versionName = ` + value.result[0].versionName);
      console.log(`info versionCode = ` + value.result[0].versionCode);
      console.log(`info verifyInfo = ` + value.result[0].verifyInfo);
    }).catch(function (err) {
      console.log("getNewVersionInfo promise error: " + err.code);
    )};
    
    1
    2
    3
    4
    5
    6
    7
    8

checkNewVersion(callback: AsyncCallback<NewVersionInfo>): void

检查新版本,使用callback方式作为异步方法。

  • 参数

    参数名

    类型

    必填

    说明

    callback

    AsyncCallback<NewVersionInfo>

    回调返回新版本信息

  • 返回值

  • 示例

    updater.checkNewVersion(info => {
      console.log("checkNewVersion success  " + info.status);
      console.log(`info versionName = ` + info.result[0].versionName);
      console.log(`info versionCode = ` + info.result[0].versionCode);
      console.log(`info verifyInfo = ` + info.result[0].verifyInfo);
    )};
    
    1
    2
    3
    4
    5
    6

checkNewVersion(): Promise<NewVersionInfo>

检查新版本,使用promise方式作为异步方法。

  • 参数

  • 返回值

    类型

    说明

    Promise<NewVersionInfo>

    Promise函数返回新版本信息

  • 示例

    var p = updater.checkNewVersion();
    p.then(function (value) {
      console.log(`info versionName = ` + value.result[0].versionName);
      console.log(`info versionCode = ` + value.result[0].versionCode);
      console.log(`info verifyInfo = ` + value.result[0].verifyInfo);
    }).catch(function (err) {
      console.log("checkNewVersion promise error: " + err.code);
    )};
    
    1
    2
    3
    4
    5
    6
    7
    8

verifyUpdatePackage(upgradeFile: string, certsFile: string): void

升级前检查升级包是否有效。

  • 参数:

    参数名

    类型

    必填

    说明

    upgradeFile

    string

    待校验的升级包路径

    certsFile

    string

    证书路径

  • 返回值:

  • 示例:

    var getVar = update.getUpdater();
    getVar.on("verifyProgress", function (callback){
        console.info('on verifyProgress ' + callback.percent);
    });
    getVar.verifyUpdatePackage("XXX", "XXX");
    getVar.off("verifyProgress");
    
    1
    2
    3
    4
    5
    6

rebootAndCleanUserData(): Promise<number>

重启设备并清除用户分区数据。

  • 参数:

  • 返回值:

    类型

    说明

    Promise<number>

    Promise示例,用于异步获取结果。

  • 示例:

    var getVar = update.getUpdater();
    p = getVar.rebootAndCleanUserData();
    p.then(function (value) {
        console.info("rebootAndCleanUserData promise success: " + value);
    }).catch(function (err) {
        console.info("rebootAndCleanUserData promise error: " + err.code);
    });
    
    1
    2
    3
    4
    5
    6
    7

rebootAndCleanUserData(callback: AsyncCallback<number>): void

重启设备并清除用户分区数据。

  • 参数:

    参数名

    类型

    必填

    说明

    callback

    Function

    AsyncCallback<number>

  • 返回值:

  • 示例:

    var getVar = update.getUpdater();
    getVar.rebootAndCleanUserData(function (err, data) {
        if (err.code == 0) {
            console.info("rebootAndCleanUserData callback success:" + data)
        } else {
            console.info("rebootAndCleanUserData callback err:" + err.code)
        }
    });
    
    1
    2
    3
    4
    5
    6
    7
    8

applyNewVersion(): Promise<number>

重启设备后安装升级包。

  • 参数:

  • 返回值:

    类型

    说明

    Promise<number>

    Promise示例,用于异步获取结果。

  • 示例:

    var getVar = update.getUpdater();
    p.then(function (value) {
        console.info("applyNewVersion promise success: " + value);
    }).catch(function (err) {
        console.info("applyNewVersion promise error: " + err.code);
    });
    
    1
    2
    3
    4
    5
    6

applyNewVersion(callback: AsyncCallback<number>): void

重启设备后安装升级包。

  • 参数:

    参数名

    类型

    必填

    说明

    callback

    Function

    AsyncCallback<number>

  • 返回值:

  • 示例:

    var getVar = update.getUpdater();
    getVar.applyNewVersion(function (err, data) {
        if (err.code == 0) {
            console.info("applyNewVersion callback success:" + data)
        } else {
            console.info("applyNewVersion callback err:" + err.code)
        }
    });
    
    1
    2
    3
    4
    5
    6
    7
    8

download(): void

下载新版本,并监听下载进程。

  • 参数

  • 返回值

  • 示例

updater.on("downloadProgress", progress => {
  console.log("downloadProgress on" + progress);
  console.log(`downloadProgress status: ` + progress.status);
  console.log(`downloadProgress percent: ` + progress.percent);
)};
updater.download();
1
2
3
4
5
6

updater.upgrade():void

启动升级。

  • 参数

  • 返回值

  • 示例

updater.on("upgradeProgress", progress => {
  console.log("upgradeProgress on" + progress);
  console.log(`upgradeProgress status: ` + progress.status);
  console.log(`upgradeProgress percent: ` + progress.percent);
)};
updater.upgrade();
1
2
3
4
5
6

setUpdatePolicy(policy: UpdatePolicy, callback: AsyncCallback<number>): void

设置升级策略,使用callback方式作为异步方法。

  • 参数

    参数名

    类型

    必填

    说明

    policy

    UpdatePolicy

    设置升级策略

    callback

    AsyncCallback<number>

    回调返回结果

  • 返回值

  • 示例

    // 设置策略
    let policy = {
    autoDownload: false,
    autoDownloadNet: true,
    mode: 2,
    autoUpgradeInterval: [ 2, 3 ],
    autoUpgradeCondition: 2
    }
    updater.setUpdatePolicy(policy, function(result) {
    console.log("setUpdatePolicy ", result)});
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

setUpdatePolicy(policy: UpdatePolicy): Promise<number>

设置升级策略,使用promise方式作为异步方法。

  • 参数

    参数名

    类型

    必填

    说明

    policy

    UpdatePolicy

    设置升级策略

  • 返回值

    类型

    说明

    Promise<number>

    Promise函数返回设置结果

  • 示例

    let policy = {
    autoDownload: false,
    autoDownloadNet: true,
    mode: 2,
    autoUpgradeInterval: [ 2, 3 ],
    autoUpgradeCondition: 2
    }
    updater.setUpdatePolicy(policy)
    .then(data=>
    console.log('set policy success')
    )
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

getUpdatePolicy(callback: AsyncCallback<UpdatePolicy>): void

获取升级策略信息,使用callback方式作为异步方法。

  • 参数

    参数名

    类型

    必填

    说明

    callback

    AsyncCallback<UpdatePolicy>

    回调返回升级策略信息

  • 返回值

    参数名

    类型

    说明

    policy

    UpdatePolicy

    升级策略信息

  • 示例

    updater.getUpdatePolicy(policy => {
      console.log("getUpdatePolicy success");
      console.log(`policy autoDownload = ` + policy.autoDownload);
      console.log(`policy autoDownloadNet = ` + policy.autoDownloadNet);
      console.log(`policy mode = ` + policy.mode);
    )};
    
    1
    2
    3
    4
    5
    6

getUpdatePolicy(): Promise<UpdatePolicy>

获取升级策略,通过promise方式作为异步方法。

  • 参数

  • 返回值

    类型

    说明

    Promise<UpdatePolicy>

    Promise函数返回升级策略信息

  • 示例

    p = updater.getUpdatePolicy();
    p.then(function (value) {
      console.log(`info autoDownload = ` + value.autoDownload);
      console.log(`info autoDownloadNet = ` + value.autoDownloadNet);
      console.log(`info mode = ` + value.mode);
    }).catch(function (err) {
      console.log("getUpdatePolicy promise error: " + err.code);
    )};
    
    1
    2
    3
    4
    5
    6
    7
    8

getUpdater(upgradeFile: string, updateType?: UpdateTypes): Updater

获取本地升级Updater。

  • 参数

    参数名

    类型

    必填

    说明

    upgradeFile

    string

    升级文件

    updateType

    UpdateTypes

    升级类型

  • 返回值

    参数名

    类型

    说明

    updater

    Updater

    升级对象

  • 示例

    try {
      page.data.updater = client.getUpdater('/data/updater/updater.zip', 'OTA');
    } catch(error) {
      console.error(" Fail to get updater error: " + error);
    }
    
    1
    2
    3
    4
    5

getUpdaterForOther(upgradeFile: string, device: string, updateType?: UpdateTypes): Updater

获取升级对象给待升级设备。

  • 参数

    参数名

    类型

    必填

    说明

    upgradeFile

    string

    升级文件

    device

    string

    待升级设备

    updateType

    UpdateTypes

    升级类型

  • 返回值

    参数名

    类型

    说明

    updater

    Updater

    升级对象

  • 示例

    try {
      page.data.updater = client.getUpdaterForOther('/data/updater/updater.zip', '1234567890', 'OTA');
    } catch(error) {
      console.error(" Fail to get updater error: " + error);
    }
    
    1
    2
    3
    4
    5

getUpdaterFromOther(upgradeFile: string, device: string, updateType?: UpdateTypes): Updater

获取其它设备为本设备升级的Updater。

  • 参数

    参数名

    类型

    必填

    说明

    upgradeFile

    string

    升级文件

    device

    string

    待升级设备

    updateType

    UpdateTypes

    升级类型

  • 返回值

    参数名

    类型

    说明

    updater

    Updater

    升级对象

  • 示例

    try {
      page.data.updater = client.getUpdaterFromOther('/data/updater/updater.zip', '1234567890', 'OTA');
    } catch(error) {
      console.error(" Fail to get updater error: " + error);
    }
    
    1
    2
    3
    4
    5

UpdateTypes

升级类型

参数名

说明

OTA

OTA升级

patch

补丁升级

PackageTypes

升级包类型

参数名

默认值

说明

PACKAGE_TYPE_NORMAL

1

通用升级包

PACKAGE_TYPE_BASE

2

基础升级包

PACKAGE_TYPE_CUST

3

定制升级包

PACKAGE_TYPE_PRELOAD

4

预装升级包

PACKAGE_TYPE_COTA

5

参数配置升级包

PACKAGE_TYPE_VERSION

6

版本升级包

PACKAGE_TYPE_PATCH

7

补丁包

InstallMode

安装模式

参数名

默认值

说明

INSTALL_MODE_NORMAL

0

正常升级

INSTALL_MODE_NIGHT

1

夜间升级

INSTALL_MODE_AUTO

2

自动升级

NewVersionStatus

新版本检测状态

参数名

默认值

说明

VERSION_STATUS_ERR

-1

检测版本时出错

VERSION_STATUS_NEW

0

检测到新版本

VERSION_STATUS_NONE

1

没有检测到新版本

VERSION_STATUS_BUSY

2

检测版本时忙

UpdatePolicy

升级策略

名称

参数类型

必填

说明

autoDownload

bool

自动升级开关

installMode

InstallMode

安装模式

autoUpgradeInterval

Array<number>

自动升级时间段

NewVersionInfo

新版本信息

名称

参数类型

必填

说明

status

NewVersionStatus

升级状态

errMsg

string

错误信息

checkResults

Array<CheckResult>

检测结果

descriptionInfo

Array<DescriptionInfo>

描述信息

CheckResult

检测结果

名称

参数类型

必填

说明

versionName

string

版本名称

versionCode

number

版本编码

size

number

版本大小

verifyInfo

string

版本校验信息

packageType

PackageTypes

版本类型

descriptionId

string

版本描述信息

DescriptionInfo

版本描述信息

名称

参数类型

必填

说明

descriptionId

string

版本versionId信息

content

string

版本changelog信息