• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.app.ability.quickFixManager (quickFixManager)
2
3quickFixManager模块提供快速修复的能力,快速修复是OpenHarmony提供给开发者的一种技术手段,支持开发者以远快于(小时级、分钟级)应用升级的方式进行缺陷修复。
4
5> **说明:**
6>
7> 本模块首批接口从API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9## 导入模块
10
11```ts
12import quickFixManager from '@ohos.app.ability.quickFixManager';
13```
14
15## HapModuleQuickFixInfo
16
17hap级别的快速修复信息。
18
19**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.QuickFix
20
21**系统API**: 此接口为系统接口,三方应用不支持调用。
22
23| 名称        | 类型                 | 必填 | 说明                                                         |
24| ----------- | -------------------- | ---- | ------------------------------------------------------------ |
25| moduleName    | string               | 是   | HAP的名称。                               |
26| originHapHash    | string               | 是   | 指示hap的哈希值。                               |
27| quickFixFilePath    | string               | 是   | 指示快速修复文件的安装路径。                               |
28
29## ApplicationQuickFixInfo
30
31应用级别的快速修复信息。
32
33**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.QuickFix
34
35**系统API**: 此接口为系统接口,三方应用不支持调用。
36
37| 名称        | 类型                 | 必填 | 说明                                                         |
38| ----------- | -------------------- | ---- | ------------------------------------------------------------ |
39| bundleName    | string               | 是   | 应用Bundle名称。                       |
40| bundleVersionCode    | number               | 是   | 应用的版本号。                               |
41| bundleVersionName    | string               | 是   | 应用版本号的文字描述。                               |
42| quickFixVersionCode    | number               | 是   | 快速修复补丁包的版本号。                               |
43| quickFixVersionName    | string               | 是   | 快速修复补丁包版本号的文字描述。                               |
44| hapModuleQuickFixInfo    | Array\<[HapModuleQuickFixInfo](#hapmodulequickfixinfo)>      | 是   | hap级别的快速修复信息。     |
45
46## quickFixManager.applyQuickFix
47
48applyQuickFix(hapModuleQuickFixFiles: Array\<string>, callback: AsyncCallback\<void>): void;
49
50快速修复的补丁安装接口。
51
52**需要权限**: ohos.permission.INSTALL_BUNDLE
53
54**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.QuickFix
55
56**系统API**: 此接口为系统接口,三方应用不支持调用。
57
58**参数:**
59
60  | 参数名 | 类型 | 必填 | 说明 |
61  | -------- | -------- | -------- | -------- |
62  | hapModuleQuickFixFiles | Array\<string> | 是 | 快速修复补丁文件(补丁文件需包含有效的文件路径)。 |
63  | callback | AsyncCallback\<void> | 是 | 表示指定的回调方法。 |
64
65**错误码**:
66
67在打补丁过程中发生的错误,其错误码及错误信息通过公共事件[COMMON_EVENT_QUICK_FIX_APPLY_RESULT](commonEvent-definitions.md#common_event_quick_fix_apply_result9)的参数返回给应用开发者。
68
69| 错误码ID | 错误信息 |
70| ------- | -------- |
71| 18500002 | The specified quick fix is invalid. It may not exist or inaccessible. |
72| 18500008 | Internal error. |
73
74以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
75
76> 说明:调用applyQuickFix接口时,补丁文件所在路径为应用沙箱路径。沙箱路径的获取参考[获取应用的沙箱路径](js-apis-bundle-BundleInstaller.md#获取应用的沙箱路径),映射到设备上的路径为/proc/&lt;应用进程Id&gt;/root/沙箱路径。
77
78**示例:**
79
80```ts
81import quickFixManager from '@ohos.app.ability.quickFixManager';
82
83  try {
84    let hapModuleQuickFixFiles = ['/data/storage/el2/base/entry.hqf'];
85    quickFixManager.applyQuickFix(hapModuleQuickFixFiles, (error) => {
86      if (error) {
87          console.error( `applyQuickFix failed with error: ${error}`);
88      } else {
89          console.info( 'applyQuickFix success');
90      }
91    });
92  } catch (paramError) {
93    console.error('error.code: ${paramError.code}, error.message: ${paramError.message}');
94  }
95```
96
97## quickFixManager.applyQuickFix
98
99applyQuickFix(hapModuleQuickFixFiles: Array\<string>): Promise\<void>;
100
101快速修复的补丁安装接口。
102
103**需要权限**: ohos.permission.INSTALL_BUNDLE
104
105**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.QuickFix
106
107**系统API**: 此接口为系统接口,三方应用不支持调用。
108
109**参数:**
110
111  | 参数名 | 类型 | 必填 | 说明 |
112  | -------- | -------- | -------- | -------- |
113  | hapModuleQuickFixFiles | Array\<string> | 是 | 快速修复补丁文件(补丁文件需包含有效的文件路径)。 |
114
115**返回值:**
116
117  | 类型 | 说明 |
118  | -------- | -------- |
119  | Promise\<void> | 返回相应结果。 |
120
121**错误码**:
122
123在打补丁过程中发生的错误,其错误码及错误信息通过公共事件[COMMON_EVENT_QUICK_FIX_APPLY_RESULT](commonEvent-definitions.md#common_event_quick_fix_apply_result9)的参数返回给应用开发者。
124
125| 错误码ID | 错误信息 |
126| ------- | -------- |
127| 18500002 | The specified quick fix is invalid. It may not exist or inaccessible. |
128| 18500008 | Internal error. |
129
130以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
131
132**示例:**
133
134```ts
135import quickFixManager from '@ohos.app.ability.quickFixManager';
136import { BusinessError } from '@ohos.base';
137
138  let hapModuleQuickFixFiles = ['/data/storage/el2/base/entry.hqf'];
139  try {
140    quickFixManager.applyQuickFix(hapModuleQuickFixFiles).then(() => {
141      console.info('applyQuickFix success');
142    }).catch((error: BusinessError) => {
143      console.error(`applyQuickFix err: ${error}`);
144    });
145  } catch (paramError) {
146    console.error(`error: ${paramError.code}, ${paramError.message}`);
147  }
148```
149
150## quickFixManager.getApplicationQuickFixInfo
151
152getApplicationQuickFixInfo(bundleName: string, callback: AsyncCallback\<ApplicationQuickFixInfo>): void;
153
154获取应用的快速修复信息。
155
156**需要权限**: ohos.permission.GET_BUNDLE_INFO_PRIVILEGED
157
158**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.QuickFix
159
160**系统API**: 此接口为系统接口,三方应用不支持调用。
161
162**参数:**
163
164| 参数名 | 类型 | 必填 | 说明 |
165| -------- | -------- | -------- | -------- |
166| bundleName | string | 是 |应用Bundle名称。  |
167| callback | AsyncCallback\<[ApplicationQuickFixInfo](#applicationquickfixinfo)> | 是 | 应用的快速修复信息。 |
168
169**错误码**:
170
171| 错误码ID | 错误信息 |
172| ------- | -------- |
173| 18500001 | The specified bundleName is invalid. |
174| 18500008 | Internal error. |
175
176以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
177
178**示例:**
179
180```ts
181import quickFixManager from '@ohos.app.ability.quickFixManager';
182
183  try {
184    let bundleName = 'bundleName';
185    quickFixManager.getApplicationQuickFixInfo(bundleName, (error, data) => {
186      if (error) {
187        console.error(`getApplicationQuickFixInfo error: ${error}`);
188      } else {
189        console.info(`getApplicationQuickFixInfo success: ${data}`);
190      }
191    });
192  } catch (paramError) {
193    console.error(`error: ${paramError.code}, ${paramError.message}`);
194  }
195```
196
197## quickFixManager.getApplicationQuickFixInfo
198
199getApplicationQuickFixInfo(bundleName: string): Promise\<ApplicationQuickFixInfo>;
200
201获取应用的快速修复信息。
202
203**需要权限**: ohos.permission.GET_BUNDLE_INFO_PRIVILEGED
204
205**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.QuickFix
206
207**系统API**: 此接口为系统接口,三方应用不支持调用。
208
209**参数:**
210
211| 参数名 | 类型 | 必填 | 说明 |
212| -------- | -------- | -------- | -------- |
213| bundleName | string | 是 | 应用Bundle名称。 |
214
215**返回值:**
216
217  | 类型 | 说明 |
218  | -------- | -------- |
219  | Promise\<[ApplicationQuickFixInfo](#applicationquickfixinfo)> | 返回应用的快速修复信息。 |
220
221**错误码**:
222
223| 错误码ID | 错误信息 |
224| ------- | -------- |
225| 18500001 | The specified bundleName is invalid. |
226| 18500008 | Internal error. |
227
228以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
229
230**示例:**
231
232  ```ts
233import quickFixManager from '@ohos.app.ability.quickFixManager';
234import { BusinessError } from '@ohos.base';
235
236  try {
237    let bundleName = 'bundleName';
238    quickFixManager.getApplicationQuickFixInfo(bundleName).then((data) => {
239      console.info(`getApplicationQuickFixInfo success: ${data}`);
240    }).catch((error: BusinessError) => {
241      console.error(`getApplicationQuickFixInfo err: ${error}`);
242    });
243  } catch (paramError) {
244    console.error(`error: ${paramError.code}, ${paramError.message}`);
245  }
246  ```
247
248## quickFixManager.revokeQuickFix<sup>10+<sup>
249
250revokeQuickFix(bundleName: string, callback: AsyncCallback\<void>): void;
251
252撤销快速修复的接口,使用callback方式返回结果。
253
254**需要权限**:ohos.permission.GET_BUNDLE_INFO_PRIVILEGED, ohos.permission.INSTALL_BUNDLE
255
256**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.QuickFix
257
258**系统API**:此接口为系统接口,三方应用不支持调用。
259
260**参数:**
261
262  | 参数名 | 类型 | 必填 | 说明 |
263  | -------- | -------- | -------- | -------- |
264  | bundleName | string | 是 | 需要撤销补丁的应用Bundle名称。 |
265  | callback | AsyncCallback\<void> | 是 | 表示指定的回调方法。 |
266
267**错误码**:
268
269以下错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
270
271| 错误码ID | 错误信息 |
272| ------- | -------- |
273| 18500001 | The bundle is not exist or no patch has applied. |
274| 18500009 | The application has a apply quick fix task that is being processed. |
275
276在撤销补丁过程中发生的错误,其错误码及错误信息通过公共事件[COMMON_EVENT_QUICK_FIX_REVOKE_RESULT](./common_event/commonEvent-ability.md#common_event_quick_fix_revoke_result10)的参数返回给应用开发者。
277
278**示例:**
279
280```ts
281import quickFixManager from '@ohos.app.ability.quickFixManager';
282
283  let bundleName = "com.example.myapplication";
284  quickFixManager.revokeQuickFix(bundleName, (err) => {
285    console.info("revokeQuickFix " + bundleName + " " + JSON.stringify(err));
286  });
287```
288
289## quickFixManager.revokeQuickFix<sup>10+<sup>
290
291revokeQuickFix(bundleName: string): Promise\<void>;
292
293撤销快速修复的接口,使用Promise方式返回结果。
294
295**需要权限**:ohos.permission.GET_BUNDLE_INFO_PRIVILEGED, ohos.permission.INSTALL_BUNDLE
296
297**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.QuickFix
298
299**系统API**:此接口为系统接口,三方应用不支持调用。
300
301**参数:**
302
303  | 参数名 | 类型 | 必填 | 说明 |
304  | -------- | -------- | -------- | -------- |
305  | bundleName | string | 是 | 需要撤销补丁的应用Bundle名称。 |
306
307**返回值:**
308
309  | 类型 | 说明 |
310  | -------- | -------- |
311  | Promise\<void> | 返回相应结果。 |
312
313**错误码**:
314
315以下错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
316
317| 错误码ID | 错误信息 |
318| ------- | -------- |
319| 18500001 | The bundle is not exist or no patch has applied. |
320| 18500009 | The application has a apply quick fix task that is being processed. |
321
322在撤销补丁过程中发生的错误,其错误码及错误信息通过公共事件[COMMON_EVENT_QUICK_FIX_REVOKE_RESULT](./common_event/commonEvent-ability.md#common_event_quick_fix_revoke_result10)的参数返回给应用开发者。这部分错误码及错误信息如下:
323
324**示例:**
325
326```ts
327import quickFixManager from '@ohos.app.ability.quickFixManager';
328import { BusinessError } from '@ohos.base';
329
330  let bundleName = "com.example.myapplication";
331  quickFixManager.revokeQuickFix(bundleName).then(() => {
332    console.info("revokeQuickFix " + bundleName +" ok");
333  }).catch((err: BusinessError) => {
334    console.info("revokeQuickFix " + bundleName +" failed, error code is ", JSON.stringify((err)));
335  });
336```