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