• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 升级
2
3升级范围:升级整个系统,包括内置的资源、预置应用;第三方的应用不在升级的范围。
4
5升级依赖:升级分为SD卡升级和在线升级两种。
6
7- SD卡升级依赖升级包和SD卡安装。
8- 在线升级依赖设备厂商部署的用于管理升级包的服务器。服务器由设备厂商部署,IP由调用者传入,请求的request接口是固定的,由设备厂商开发。
9
10> **说明:**
11>
12> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
13>
14> 本模块接口为系统接口。
15
16## 导入模块
17
18```js
19import update from '@ohos.update'
20```
21
22## 权限列表
23
2425
26## update.getUpdater
27
28getUpdater(upgradeFile: string, updateType?: UpdateTypes): Updater
29
30获取本地升级Updater。
31
32**系统能力**:SystemCapability.Update.UpdateService
33
34**参数:**
35
36| 参数名         | 类型                          | 必填   | 说明   |
37| ----------- | --------------------------- | ---- | ---- |
38| upgradeFile | string                      | 是    | 升级文件 |
39| updateType  | [UpdateTypes](#updatetypes) | 是    | 升级类型 |
40
41**返回值:**
42
43| 类型                  | 说明   |
44| ------------------- | ---- |
45| [Updater](#updater) | 升级对象 |
46
47**示例:**
48
49```js
50try {
51  let updater = update.getUpdater('/data/updater/updater.zip', 'OTA');
52} catch(error) {
53  console.error(" Fail to get updater error: " + error);
54}
55```
56
57## update.getUpdaterForOther
58
59getUpdaterForOther(upgradeFile: string, device: string, updateType?: UpdateTypes): Updater
60
61获取升级对象给待升级设备。
62
63**系统能力**:SystemCapability.Update.UpdateService
64
65**参数:**
66
67| 参数名         | 类型                          | 必填   | 说明    |
68| ----------- | --------------------------- | ---- | ----- |
69| upgradeFile | string                      | 是    | 升级文件  |
70| device      | string                      | 是    | 待升级设备 |
71| updateType  | [UpdateTypes](#updatetypes) | 是    | 升级类型  |
72
73**返回值:**
74
75| 类型                  | 说明   |
76| ------------------- | ---- |
77| [Updater](#updater) | 升级对象 |
78
79**示例:**
80
81```js
82try {
83  let updater = update.getUpdaterForOther('/data/updater/updater.zip', '1234567890', 'OTA');
84} catch(error) {
85  console.error(" Fail to get updater error: " + error);
86}
87```
88
89## update.getUpdaterFromOther
90
91getUpdaterFromOther(upgradeFile: string, device: string, updateType?: UpdateTypes): Updater
92
93获取其它设备为本设备升级的Updater。
94
95**系统能力**:SystemCapability.Update.UpdateService
96
97**参数:**
98
99| 参数名         | 类型                          | 必填   | 说明    |
100| ----------- | --------------------------- | ---- | ----- |
101| upgradeFile | string                      | 是    | 升级文件  |
102| device      | string                      | 是    | 待升级设备 |
103| updateType  | [UpdateTypes](#updatetypes) | 是    | 升级类型  |
104
105**返回值:**
106
107| 类型                  | 说明   |
108| ------------------- | ---- |
109| [Updater](#updater) | 升级对象 |
110
111**示例:**
112
113```js
114try {
115  let updater = update.getUpdaterFromOther('/data/updater/updater.zip', '1234567890', 'OTA');
116} catch(error) {
117  console.error(" Fail to get updater error: " + error);
118}
119```
120
121## Updater
122
123###  getNewVersionInfo
124
125getNewVersionInfo(callback: AsyncCallback\<NewVersionInfo>): void
126
127获取新版本信息,使用callback方式作为异步方法。
128
129**系统能力**:SystemCapability.Update.UpdateService
130
131**参数:**
132
133| 参数名      | 类型                                       | 必填   | 说明        |
134| -------- | ---------------------------------------- | ---- | --------- |
135| callback | AsyncCallback<[NewVersionInfo](#newversioninfo)> | 否    | 回调返回新版本信息 |
136
137**示例:**
138
139```js
140updater.getNewVersionInfo((err, info) => {
141  console.log("getNewVersionInfo success  " + info.status);
142  console.log(`info versionName = ` + info.checkResults[0].versionName);
143  console.log(`info versionCode = ` + info.checkResults[0].versionCode);
144  console.log(`info verifyInfo = ` + info.checkResults[0].verifyInfo);
145});
146```
147
148### getNewVersionInfo
149
150getNewVersionInfo(): Promise\<NewVersionInfo>
151
152获取新版本信息,使用promise方式作为异步方法。
153
154**系统能力**:SystemCapability.Update.UpdateService
155
156**返回值:**
157
158| 类型                                       | 说明               |
159| ---------------------------------------- | ---------------- |
160| Promise\<[NewVersionInfo](#newversioninfo)> | Promise,用于异步获取结果 |
161
162**示例:**
163
164```js
165updater.getNewVersionInfo().then(value => {
166  console.log(`info versionName = ` + value.checkResults[0].versionName);
167  console.log(`info versionCode = ` + value.checkResults[0].versionCode);
168  console.log(`info verifyInfo = ` + value.checkResults[0].verifyInfo);
169}).catch(err => {
170  console.log("getNewVersionInfo promise error: " + err.code);
171});
172```
173
174### checkNewVersion
175
176checkNewVersion(callback: AsyncCallback\<NewVersionInfo>): void
177
178检查新版本,使用callback方式作为异步方法。
179
180**系统能力**:SystemCapability.Update.UpdateService
181
182**参数:**
183
184| 参数名      | 类型                                       | 必填   | 说明        |
185| -------- | ---------------------------------------- | ---- | --------- |
186| callback | AsyncCallback\<[NewVersionInfo](#newversioninfo)> | 否    | 回调返回新版本信息 |
187
188**示例:**
189
190```js
191updater.checkNewVersion((err, info) => {
192  console.log("checkNewVersion success  " + info.status);
193  console.log(`info versionName = ` + info.checkResults[0].versionName);
194  console.log(`info versionCode = ` + info.checkResults[0].versionCode);
195  console.log(`info verifyInfo = ` + info.checkResults[0].verifyInfo);
196});
197```
198
199### checkNewVersion
200
201checkNewVersion(): Promise\<NewVersionInfo>
202
203检查新版本,使用promise方式作为异步方法。
204
205**系统能力**:SystemCapability.Update.UpdateService
206
207**返回值:**
208
209| 类型                                       | 说明               |
210| ---------------------------------------- | ---------------- |
211| Promise\<[NewVersionInfo](#newversioninfo)> | Promise函数返回新版本信息 |
212
213**示例:**
214
215```js
216updater.checkNewVersion().then(value => {
217  console.log(`info versionName = ` + value.checkResults[0].versionName);
218  console.log(`info versionCode = ` + value.checkResults[0].versionCode);
219  console.log(`info verifyInfo = ` + value.checkResults[0].verifyInfo);
220}).catch(err => {
221  console.log("checkNewVersion promise error: " + err.code);
222});
223```
224
225### verifyUpdatePackage
226
227verifyUpdatePackage(upgradeFile: string, certsFile: string): void
228
229升级前检查升级包是否有效。
230
231**系统能力**:SystemCapability.Update.UpdateService
232
233**参数:**
234
235| 参数名         | 类型     | 必填   | 说明        |
236| ----------- | ------ | ---- | --------- |
237| upgradeFile | string | 是    | 待校验的升级包路径 |
238| certsFile   | string | 是    | 证书路径      |
239
240**示例:**
241
242```js
243updater.on("verifyProgress", callback => {
244  console.info('on verifyProgress ' + callback.percent);
245});
246update.verifyUpdatePackage("XXX", "XXX");
247```
248
249### rebootAndCleanUserData<sup>8+</sup>
250
251rebootAndCleanUserData(): Promise\<number>
252
253重启设备并清除用户分区数据。
254
255**系统能力**:SystemCapability.Update.UpdateService
256
257**返回值:**
258
259| 类型               | 说明                  |
260| ---------------- | ------------------- |
261| Promise\<number> | Promise示例,用于异步获取结果。 |
262
263**示例:**
264
265```js
266updater.rebootAndCleanUserData().then(result => {
267  console.log("rebootAndCleanUserData " + result);
268}).catch(err => {
269  console.info("rebootAndCleanUserData promise error: " + err.code);
270});
271```
272
273### rebootAndCleanUserData<sup>8+</sup>
274
275rebootAndCleanUserData(callback: AsyncCallback\<number>): void
276
277重启设备并清除用户分区数据。
278
279**系统能力**:SystemCapability.Update.UpdateService
280
281**参数:**
282
283| 参数名      | 类型       | 必填   | 说明                     |
284| -------- | -------- | ---- | ---------------------- |
285| callback | Function | 是    | AsyncCallback\<number> |
286
287**示例:**
288
289```js
290updater.rebootAndCleanUserData((err, result) => {
291  console.log("rebootAndCleanUserData ", result)
292});
293```
294
295### applyNewVersion
296
297applyNewVersion(): Promise\<number>
298
299重启设备后安装升级包。
300
301**系统能力**:SystemCapability.Update.UpdateService
302
303**返回值:**
304
305| 类型               | 说明                  |
306| ---------------- | ------------------- |
307| Promise\<number> | Promise示例,用于异步获取结果。 |
308
309**示例:**
310
311```js
312updater.applyNewVersion().then(result => {
313    console.log("appVewVersion ", result)
314}).catch(err => {
315    console.info("applyNewVersion promise error: " + err.code);
316});
317```
318
319### applyNewVersion
320
321applyNewVersion(callback: AsyncCallback\<number>): void
322
323重启设备后安装升级包。
324
325**系统能力**:SystemCapability.Update.UpdateService
326
327**参数:**
328
329| 参数名      | 类型       | 必填   | 说明                     |
330| -------- | -------- | ---- | ---------------------- |
331| callback | Function | 是    | AsyncCallback\<number> |
332
333**示例:**
334
335```js
336updater.applyNewVersion((err, result) => {
337  console.log("applyNewVersion ", result)
338});
339```
340
341### download
342
343download(): void
344
345下载新版本,并监听下载进程。
346
347**系统能力**:SystemCapability.Update.UpdateService
348
349**示例:**
350
351```js
352updater.on("downloadProgress", progress => {
353  console.log("downloadProgress on" + progress);
354  console.log(`downloadProgress status: ` + progress.status);
355  console.log(`downloadProgress percent: ` + progress.percent);
356});
357updater.download();
358```
359
360### upgrade
361
362upgrade():void
363
364启动升级。
365
366**系统能力**:SystemCapability.Update.UpdateService
367
368**示例:**
369
370```js
371updater.on("upgradeProgress", progress => {
372  console.log("upgradeProgress on" + progress);
373  console.log(`upgradeProgress status: ` + progress.status);
374  console.log(`upgradeProgress percent: ` + progress.percent);
375});
376updater.upgrade();
377```
378
379### setUpdatePolicy
380
381setUpdatePolicy(policy: UpdatePolicy, callback: AsyncCallback\<number>): void
382
383设置升级策略,使用callback方式作为异步方法。
384
385**系统能力**:SystemCapability.Update.UpdateService
386
387**参数:**
388
389| 参数名      | 类型                            | 必填   | 说明     |
390| -------- | ----------------------------- | ---- | ------ |
391| policy   | [UpdatePolicy](#updatepolicy) | 是    | 设置升级策略 |
392| callback | AsyncCallback\<number>        | 是    | 回调返回结果 |
393
394**示例:**
395
396```js
397// 设置策略
398let policy = {
399  autoDownload: false,
400  autoDownloadNet: true,
401  mode: 2,
402  autoUpgradeInterval: [ 2, 3 ],
403  autoUpgradeCondition: 2
404}
405updater.setUpdatePolicy(policy, (err, result) => {
406  console.log("setUpdatePolicy ", result)
407});
408```
409
410### setUpdatePolicy
411
412setUpdatePolicy(policy: UpdatePolicy): Promise\<number>
413
414设置升级策略,使用promise方式作为异步方法。
415
416**系统能力**:SystemCapability.Update.UpdateService
417
418**参数:**
419
420| 参数名    | 类型                            | 必填   | 说明     |
421| ------ | ----------------------------- | ---- | ------ |
422| policy | [UpdatePolicy](#updatepolicy) | 是    | 设置升级策略 |
423
424**返回值:**
425
426| 类型               | 说明              |
427| ---------------- | --------------- |
428| Promise\<number> | Promise函数返回设置结果 |
429
430**示例:**
431
432```js
433let policy = {
434  autoDownload: false,
435  autoDownloadNet: true,
436  mode: 2,
437  autoUpgradeInterval: [ 2, 3 ],
438  autoUpgradeCondition: 2
439}
440updater.setUpdatePolicy(policy).then(result =>
441  console.log("setUpdatePolicy ", result)
442).catch(err => {
443  console.log("setUpdatePolicy promise error: " + err.code);
444});
445```
446
447### getUpdatePolicy
448
449getUpdatePolicy(callback: AsyncCallback\<UpdatePolicy>): void
450
451获取升级策略信息,使用callback方式作为异步方法。
452
453**系统能力**:SystemCapability.Update.UpdateService
454
455**参数:**
456
457| 参数名      | 类型                                       | 必填   | 说明         |
458| -------- | ---------------------------------------- | ---- | ---------- |
459| callback | AsyncCallback\<[UpdatePolicy](#updatepolicy)> | 否    | 回调返回升级策略信息 |
460
461**示例:**
462
463```js
464updater.getUpdatePolicy((err, policy) => {
465  console.log("getUpdatePolicy success");
466  console.log(`policy autoDownload = ` + policy.autoDownload);
467  console.log(`policy autoDownloadNet = ` + policy.autoDownloadNet);
468  console.log(`policy mode = ` + policy.mode);
469});
470```
471
472### getUpdatePolicy
473
474getUpdatePolicy(): Promise\<UpdatePolicy>
475
476获取升级策略,通过promise方式作为异步方法。
477
478**系统能力**:SystemCapability.Update.UpdateService
479
480**返回值:**
481
482| 类型                                      | 说明                |
483| --------------------------------------- | ----------------- |
484| Promise\<[UpdatePolicy](#updatepolicy)> | Promise函数返回升级策略信息 |
485
486**示例:**
487
488```js
489updater.getUpdatePolicy().then(value => {
490  console.log(`info autoDownload = ` + value.autoDownload);
491  console.log(`info autoDownloadNet = ` + value.autoDownloadNet);
492  console.log(`info mode = ` + value.mode);
493}).catch(err => {
494  console.log("getUpdatePolicy promise error: " + err.code);
495});
496```
497
498## UpdateTypes
499
500升级类型。
501
502**系统能力**:SystemCapability.Update.UpdateService
503
504| 参数名   | 说明    |
505| ----- | ----- |
506| OTA   | OTA升级 |
507| patch | 补丁升级  |
508
509## PackageTypes
510
511升级包类型。
512
513**系统能力**:SystemCapability.Update.UpdateService
514
515| 参数名                  | 默认值  | 说明      |
516| -------------------- | ---- | ------- |
517| PACKAGE_TYPE_NORMAL  | 1    | 通用升级包   |
518| PACKAGE_TYPE_BASE    | 2    | 基础升级包   |
519| PACKAGE_TYPE_CUST    | 3    | 定制升级包   |
520| PACKAGE_TYPE_PRELOAD | 4    | 预装升级包   |
521| PACKAGE_TYPE_COTA    | 5    | 参数配置升级包 |
522| PACKAGE_TYPE_VERSION | 6    | 版本升级包   |
523| PACKAGE_TYPE_PATCH   | 7    | 补丁包     |
524
525## InstallMode
526
527安装模式。
528
529**系统能力**:SystemCapability.Update.UpdateService
530
531| 参数名                 | 默认值  | 说明   |
532| ------------------- | ---- | ---- |
533| INSTALL_MODE_NORMAL | 0    | 正常升级 |
534| INSTALL_MODE_NIGHT  | 1    | 夜间升级 |
535| INSTALL_MODE_AUTO   | 2    | 自动升级 |
536
537## NewVersionStatus
538
539新版本检测状态。
540
541**系统能力**:SystemCapability.Update.UpdateService
542
543| 参数名                 | 默认值  | 说明       |
544| ------------------- | ---- | -------- |
545| VERSION_STATUS_ERR  | -1   | 检测版本时出错  |
546| VERSION_STATUS_NEW  | 0    | 检测到新版本   |
547| VERSION_STATUS_NONE | 1    | 没有检测到新版本 |
548| VERSION_STATUS_BUSY | 2    | 检测版本时忙   |
549
550## UpdatePolicy
551
552升级策略。
553
554**系统能力**:SystemCapability.Update.UpdateService
555
556| 名称                  | 参数类型                        | 必填   | 说明      |
557| ------------------- | --------------------------- | ---- | ------- |
558| autoDownload        | bool                        | 是    | 自动升级开关  |
559| installMode         | [InstallMode](#installmode) | 是    | 安装模式    |
560| autoUpgradeInterval | Array\<number>              | 是    | 自动升级时间段 |
561
562## NewVersionInfo
563
564新版本信息。
565
566**系统能力**:SystemCapability.Update.UpdateService
567
568| 名称              | 参数类型                                     | 必填   | 说明   |
569| --------------- | ---------------------------------------- | ---- | ---- |
570| status          | [NewVersionStatus](#newversionstatus)    | 是    | 升级状态 |
571| errMsg          | string                                   | 是    | 错误信息 |
572| checkResults    | Array<[CheckResult](#checkresult)>       | 是    | 检测结果 |
573| descriptionInfo | Array\<[DescriptionInfo](#descriptioninfo)> | 是    | 描述信息 |
574
575## CheckResult
576
577检测结果。
578
579**系统能力**:SystemCapability.Update.UpdateService
580
581| 名称            | 参数类型                          | 必填   | 说明     |
582| ------------- | ----------------------------- | ---- | ------ |
583| versionName   | string                        | 是    | 版本名称   |
584| versionCode   | number                        | 是    | 版本编码   |
585| size          | number                        | 是    | 版本大小   |
586| verifyInfo    | string                        | 是    | 版本校验信息 |
587| packageType   | [PackageTypes](#packagetypes) | 是    | 版本类型   |
588| descriptionId | string                        | 是    | 版本描述信息 |
589
590## DescriptionInfo
591
592版本描述信息。
593
594**系统能力**:SystemCapability.Update.UpdateService
595
596| 名称            | 参数类型   | 必填   | 说明            |
597| ------------- | ------ | ---- | ------------- |
598| descriptionId | string | 是    | 版本versionId信息 |
599| content       | string | 是    | 版本changelog信息 |