js-apis-update.md 15.5 KB
Newer Older
Z
zengyawen 已提交
1 2
# 升级

3
升级范围:升级整个系统,包括内置的资源、预置应用;第三方的应用不在升级的范围。
Z
zengyawen 已提交
4 5 6 7 8 9 10 11 12

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

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

## 导入模块

```js
Z
zengyawen 已提交
13
import update from '@ohos.update'
Z
zengyawen 已提交
14 15 16 17 18 19
```

## 权限列表



20
## update.getUpdater
Z
zengyawen 已提交
21 22 23 24 25

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

获取本地升级Updater。

26
**系统能力**:SystemCapability.Update.UpdateService
27

Z
zengyawen 已提交
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
**参数:**

| 参数名      | 类型                        | 必填 | 说明     |
| ----------- | --------------------------- | ---- | -------- |
| upgradeFile | string                      | 是   | 升级文件 |
| updateType  | [UpdateTypes](#updatetypes) | 是   | 升级类型 |

**返回值:**

| 类型                | 说明     |
| ------------------- | -------- |
| [Updater](#updater) | 升级对象 |

**示例:**

```
try {
  let updater = update.getUpdater('/data/updater/updater.zip', 'OTA');
} catch(error) {
  console.error(" Fail to get updater error: " + error);
}
```

51
## update.getUpdaterForOther
Z
zengyawen 已提交
52 53 54 55 56

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

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

57
**系统能力**:SystemCapability.Update.UpdateService
58

Z
zengyawen 已提交
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
**参数:**

| 参数名      | 类型                        | 必填 | 说明       |
| ----------- | --------------------------- | ---- | ---------- |
| upgradeFile | string                      | 是   | 升级文件   |
| device      | string                      | 是   | 待升级设备 |
| updateType  | [UpdateTypes](#updatetypes) | 是   | 升级类型   |

**返回值:**

| 类型                | 说明     |
| ------------------- | -------- |
| [Updater](#updater) | 升级对象 |

**示例:**

```
try {
  let updater = update.getUpdaterForOther('/data/updater/updater.zip', '1234567890', 'OTA');
} catch(error) {
  console.error(" Fail to get updater error: " + error);
}
```

83
## update.getUpdaterFromOther
Z
zengyawen 已提交
84 85 86 87 88

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

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

89
**系统能力**:SystemCapability.Update.UpdateService
90

Z
zengyawen 已提交
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
**参数:**

| 参数名      | 类型                        | 必填 | 说明       |
| ----------- | --------------------------- | ---- | ---------- |
| upgradeFile | string                      | 是   | 升级文件   |
| device      | string                      | 是   | 待升级设备 |
| updateType  | [UpdateTypes](#updatetypes) | 是   | 升级类型   |

**返回值:**

| 类型                | 说明     |
| ------------------- | -------- |
| [Updater](#updater) | 升级对象 |

**示例:**

```
try {
  let updater = update.getUpdaterFromOther('/data/updater/updater.zip', '1234567890', 'OTA');
} catch(error) {
  console.error(" Fail to get updater error: " + error);
}
```

Z
zengyawen 已提交
115 116
## Updater

117 118
**系统能力**:以下各项对应能力均为:SystemCapability.Update.UpdateService

Z
zengyawen 已提交
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
###  getNewVersionInfo

getNewVersionInfo(callback: AsyncCallback\<NewVersionInfo>): void

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

**参数:**

| 参数名   | 类型                                             | 必填 | 说明               |
| -------- | ------------------------------------------------ | ---- | ------------------ |
| callback | AsyncCallback<[NewVersionInfo](#newversioninfo)> | 否   | 回调返回新版本信息 |

**示例:**

```
Z
zengyawen 已提交
134
update.getNewVersionInfo(info => {
Z
zengyawen 已提交
135 136 137 138
  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);
Z
zengyawen 已提交
139
});
Z
zengyawen 已提交
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
```

### getNewVersionInfo

getNewVersionInfo(): Promise\<NewVersionInfo>

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

**返回值:**

| 类型                                        | 说明                      |
| ------------------------------------------- | ------------------------- |
| Promise\<[NewVersionInfo](#newversioninfo)> | Promise,用于异步获取结果 |

**示例:**

```
Z
zengyawen 已提交
157
updater.getNewVersionInfo().then(value => {
Z
zengyawen 已提交
158 159 160
  console.log(`info versionName = ` + value.result[0].versionName);
  console.log(`info versionCode = ` + value.result[0].versionCode);
  console.log(`info verifyInfo = ` + value.result[0].verifyInfo);
Z
zengyawen 已提交
161
}).catch(err => {
Z
zengyawen 已提交
162
  console.log("getNewVersionInfo promise error: " + err.code);
Z
zengyawen 已提交
163
});
Z
zengyawen 已提交
164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
```

### checkNewVersion

checkNewVersion(callback: AsyncCallback\<NewVersionInfo>): void

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

**参数:**

| 参数名   | 类型                                              | 必填 | 说明               |
| -------- | ------------------------------------------------- | ---- | ------------------ |
| callback | AsyncCallback\<[NewVersionInfo](#newversioninfo)> | 否   | 回调返回新版本信息 |

**示例:**

```
Z
zengyawen 已提交
181
update.checkNewVersion(info => {
Z
zengyawen 已提交
182 183 184 185
  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);
Z
zengyawen 已提交
186
});
Z
zengyawen 已提交
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203
```

### checkNewVersion

checkNewVersion(): Promise\<NewVersionInfo>

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

**返回值:**

| 类型                                        | 说明                      |
| ------------------------------------------- | ------------------------- |
| Promise\<[NewVersionInfo](#newversioninfo)> | Promise函数返回新版本信息 |

**示例:**

```
Z
zengyawen 已提交
204
update.checkNewVersion().then(value => {
Z
zengyawen 已提交
205 206 207
  console.log(`info versionName = ` + value.result[0].versionName);
  console.log(`info versionCode = ` + value.result[0].versionCode);
  console.log(`info verifyInfo = ` + value.result[0].verifyInfo);
Z
zengyawen 已提交
208
}).catch(err => {
Z
zengyawen 已提交
209
  console.log("checkNewVersion promise error: " + err.code);
Z
zengyawen 已提交
210
});
Z
zengyawen 已提交
211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228
```

### verifyUpdatePackage

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

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

**参数:**

| 参数名      | 类型   | 必填 | 说明               |
| ----------- | ------ | ---- | ------------------ |
| upgradeFile | string | 是   | 待校验的升级包路径 |
| certsFile   | string | 是   | 证书路径           |

**示例:**

```
Z
zengyawen 已提交
229 230
update.on("verifyProgress", callback => {
  console.info('on verifyProgress ' + callback.percent);
Z
zengyawen 已提交
231
});
Z
zengyawen 已提交
232
update.verifyUpdatePackage("XXX", "XXX");
Z
zengyawen 已提交
233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249
```

### rebootAndCleanUserData

rebootAndCleanUserData(): Promise\<number>

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

**返回值:**

| 类型             | 说明                            |
| ---------------- | ------------------------------- |
| Promise\<number> | Promise示例,用于异步获取结果。 |

**示例:**

```
Z
zengyawen 已提交
250 251 252 253
update.rebootAndCleanUserData().then(result => {
  console.log("rebootAndCleanUserData " + result);
}).catch(err => {
  console.info("rebootAndCleanUserData promise error: " + err.code);
Z
zengyawen 已提交
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271
});
```

### rebootAndCleanUserData

rebootAndCleanUserData(callback: AsyncCallback\<number>): void

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

**参数:**

| 参数名   | 类型     | 必填 | 说明                   |
| -------- | -------- | ---- | ---------------------- |
| callback | Function | 是   | AsyncCallback\<number> |

**示例:**

```
Z
zengyawen 已提交
272 273
update.rebootAndCleanUserData(result => {
  console.log("rebootAndCleanUserData ", result)
Z
zengyawen 已提交
274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291
});
```

### applyNewVersion

applyNewVersion(): Promise\<number>

重启设备后安装升级包。

**返回值:**

| 类型             | 说明                            |
| ---------------- | ------------------------------- |
| Promise\<number> | Promise示例,用于异步获取结果。 |

**示例:**

```
Z
zengyawen 已提交
292 293 294
update.applyNewVersion().then(result => {
    console.log("appVewVersion ", result)
}).catch(err => {
Z
zengyawen 已提交
295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313
    console.info("applyNewVersion promise error: " + err.code);
});
```

### applyNewVersion

applyNewVersion(callback: AsyncCallback\<number>): void

重启设备后安装升级包。

**参数:**

| 参数名   | 类型     | 必填 | 说明                   |
| -------- | -------- | ---- | ---------------------- |
| callback | Function | 是   | AsyncCallback\<number> |

**示例:**

```
Z
zengyawen 已提交
314 315
update.applyNewVersion(result => {
  console.log("applyNewVersion ", result)
Z
zengyawen 已提交
316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331
});
```

### download

download(): void

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

**示例:**

```
updater.on("downloadProgress", progress => {
  console.log("downloadProgress on" + progress);
  console.log(`downloadProgress status: ` + progress.status);
  console.log(`downloadProgress percent: ` + progress.percent);
Z
zengyawen 已提交
332
});
Z
zengyawen 已提交
333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348
updater.download();
```

### upgrade

updater.upgrade():void

启动升级。

**示例:**

```
updater.on("upgradeProgress", progress => {
  console.log("upgradeProgress on" + progress);
  console.log(`upgradeProgress status: ` + progress.status);
  console.log(`upgradeProgress percent: ` + progress.percent);
Z
zengyawen 已提交
349
});
Z
zengyawen 已提交
350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370
updater.upgrade();
```

### setUpdatePolicy

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

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

**参数:**

| 参数名   | 类型                          | 必填 | 说明         |
| -------- | ----------------------------- | ---- | ------------ |
| policy   | [UpdatePolicy](#updatepolicy) | 是   | 设置升级策略 |
| callback | AsyncCallback\<number>        | 是   | 回调返回结果 |

**示例:**

```
// 设置策略
let policy = {
Z
zengyawen 已提交
371 372 373 374 375
  autoDownload: false,
  autoDownloadNet: true,
  mode: 2,
  autoUpgradeInterval: [ 2, 3 ],
  autoUpgradeCondition: 2
Z
zengyawen 已提交
376
}
Z
zengyawen 已提交
377 378 379
update.setUpdatePolicy(policy, result => {
  console.log("setUpdatePolicy ", result)
});
Z
zengyawen 已提交
380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403
```

### setUpdatePolicy

setUpdatePolicy(policy: UpdatePolicy): Promise\<number>

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

**参数:**

| 参数名 | 类型                          | 必填 | 说明         |
| ------ | ----------------------------- | ---- | ------------ |
| policy | [UpdatePolicy](#updatepolicy) | 是   | 设置升级策略 |

**返回值:**

| 类型             | 说明                    |
| ---------------- | ----------------------- |
| Promise\<number> | Promise函数返回设置结果 |

**示例:**

```
let policy = {
Z
zengyawen 已提交
404 405 406 407 408
  autoDownload: false,
  autoDownloadNet: true,
  mode: 2,
  autoUpgradeInterval: [ 2, 3 ],
  autoUpgradeCondition: 2
Z
zengyawen 已提交
409
}
Z
zengyawen 已提交
410 411 412 413 414
update.setUpdatePolicy(policy).then(result => 
  console.log("setUpdatePolicy ", result)
).catch(err => {
  console.log("setUpdatePolicy promise error: " + err.code);
});
Z
zengyawen 已提交
415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431
```

### getUpdatePolicy

getUpdatePolicy(callback: AsyncCallback\<UpdatePolicy>): void

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

**参数:**

| 参数名   | 类型                                          | 必填 | 说明                 |
| -------- | --------------------------------------------- | ---- | -------------------- |
| callback | AsyncCallback\<[UpdatePolicy](#updatepolicy)> | 否   | 回调返回升级策略信息 |

**示例:**

```
Z
zengyawen 已提交
432
update.getUpdatePolicy(policy => {
Z
zengyawen 已提交
433 434 435 436
  console.log("getUpdatePolicy success");
  console.log(`policy autoDownload = ` + policy.autoDownload);
  console.log(`policy autoDownloadNet = ` + policy.autoDownloadNet);
  console.log(`policy mode = ` + policy.mode);
Z
zengyawen 已提交
437
});
Z
zengyawen 已提交
438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454
```

### getUpdatePolicy

getUpdatePolicy(): Promise\<UpdatePolicy>

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

**返回值:**

| 类型                                    | 说明                        |
| --------------------------------------- | --------------------------- |
| Promise\<[UpdatePolicy](#updatepolicy)> | Promise函数返回升级策略信息 |

**示例:**

```
Z
zengyawen 已提交
455
update.getUpdatePolicy().then(value => {
Z
zengyawen 已提交
456 457 458
  console.log(`info autoDownload = ` + value.autoDownload);
  console.log(`info autoDownloadNet = ` + value.autoDownloadNet);
  console.log(`info mode = ` + value.mode);
Z
zengyawen 已提交
459
}).catch(err => {
Z
zengyawen 已提交
460
  console.log("getUpdatePolicy promise error: " + err.code);
Z
zengyawen 已提交
461
});
Z
zengyawen 已提交
462 463 464 465 466 467
```

## UpdateTypes

升级类型。

468 469
**系统能力**:以下各项对应的系统能力均为:SystemCapability.Update.UpdateService

Z
zengyawen 已提交
470 471
| 参数名 | 说明     |
| ------ | -------- |
472 473
| OTA    | OTA升级  |
| patch  | 补丁升级 |
Z
zengyawen 已提交
474 475 476 477 478 479 480

## PackageTypes

升级包类型。

| 参数名               | 默认值 | 说明           |
| -------------------- | ------ | -------------- |
481 482 483 484 485 486 487
| 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      | 补丁包         |
Z
zengyawen 已提交
488 489 490 491 492 493 494

## InstallMode

安装模式。

| 参数名              | 默认值 | 说明     |
| ------------------- | ------ | -------- |
495 496 497
| INSTALL_MODE_NORMAL | 0      | 正常升级 |
| INSTALL_MODE_NIGHT  | 1      | 夜间升级 |
| INSTALL_MODE_AUTO   | 2      | 自动升级 |
Z
zengyawen 已提交
498 499 500 501 502 503 504

## NewVersionStatus

新版本检测状态。

| 参数名              | 默认值 | 说明             |
| ------------------- | ------ | ---------------- |
505 506 507 508
| VERSION_STATUS_ERR  | -1     | 检测版本时出错   |
| VERSION_STATUS_NEW  | 0      | 检测到新版本     |
| VERSION_STATUS_NONE | 1      | 没有检测到新版本 |
| VERSION_STATUS_BUSY | 2      | 检测版本时忙     |
Z
zengyawen 已提交
509 510 511 512 513 514 515

## UpdatePolicy

升级策略。

| 名称                | 参数类型                    | 必填 | 说明           |
| ------------------- | --------------------------- | ---- | -------------- |
516 517 518
| autoDownload        | bool                        | 是   | 自动升级开关   |
| installMode         | [InstallMode](#installmode) | 是   | 安装模式       |
| autoUpgradeInterval | Array\<number>              | 是   | 自动升级时间段 |
Z
zengyawen 已提交
519 520 521 522 523 524 525

## NewVersionInfo

新版本信息。

| 名称            | 参数类型                                    | 必填 | 说明     |
| --------------- | ------------------------------------------- | ---- | -------- |
526 527 528 529
| status          | [NewVersionStatus](#newversionstatus)       | 是   | 升级状态 |
| errMsg          | string                                      | 是   | 错误信息 |
| checkResults    | Array<[CheckResult](#checkresult)>          | 是   | 检测结果 |
| descriptionInfo | Array\<[DescriptionInfo](#descriptioninfo)> | 是   | 描述信息 |
Z
zengyawen 已提交
530 531 532 533 534 535 536

## CheckResult

检测结果。

| 名称          | 参数类型                      | 必填 | 说明         |
| ------------- | ----------------------------- | ---- | ------------ |
537 538 539 540 541 542
| versionName   | string                        | 是   | 版本名称     |
| versionCode   | number                        | 是   | 版本编码     |
| size          | number                        | 是   | 版本大小     |
| verifyInfo    | string                        | 是   | 版本校验信息 |
| packageType   | [PackageTypes](#packagetypes) | 是   | 版本类型     |
| descriptionId | string                        | 是   | 版本描述信息 |
Z
zengyawen 已提交
543 544 545 546 547 548 549

## DescriptionInfo

版本描述信息。

| 名称          | 参数类型 | 必填 | 说明              |
| ------------- | -------- | ---- | ----------------- |
550 551
| descriptionId | string   | 是   | 版本versionId信息 |
| content       | string   | 是   | 版本changelog信息 |