• 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               | 是   | 应用的包名。                               |
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| 错误码ID | 错误信息 |
68| ------- | -------- |
69| 18500002 | The specified quick fix is invalid. It may not exist or inaccessible. |
70| 18500008 | Internal error. |
71
72在打补丁过程中发生的错误,其错误码及错误信息通过公共事件[COMMON_EVENT_QUICK_FIX_APPLY_RESULT](commonEventManager-definitions.md#common_event_quick_fix_apply_result-9)的参数返回给应用开发者。这部分错误码及错误信息如下:
73
74| 错误码ID | 错误信息 |
75| ------- | -------- |
76| 18500003 | Deploy hqf failed. |
77| 18500004 | Switch hqf failed. |
78| 18500005 | Delete hqf failed. |
79| 18500006 | Load patch failed. |
80| 18500007 | Unload patch failed. |
81
82以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
83
84> 说明:调用applyQuickFix接口时,补丁文件所在路径为应用沙箱路径。沙箱路径的获取参考[获取应用的沙箱路径](js-apis-bundle-BundleInstaller.md#获取应用的沙箱路径),映射到设备上的路径为/proc/&lt;应用进程Id&gt;/root/沙箱路径。
85
86**示例:**
87
88```ts
89  import quickFixManager from '@ohos.app.ability.quickFixManager';
90
91  try {
92    let hapModuleQuickFixFiles = ['/data/storage/el2/base/entry.hqf'];
93    quickFixManager.applyQuickFix(hapModuleQuickFixFiles, (error) => {
94      if (error) {
95          console.info( `applyQuickFix failed with error + ${error}`);
96      } else {
97          console.info( 'applyQuickFix success');
98      }
99    });
100  } catch (paramError) {
101    console.log('error: ' + paramError.code + ', ' + paramError.message);
102  }
103```
104
105## quickFixManager.applyQuickFix
106
107applyQuickFix(hapModuleQuickFixFiles: Array\<string>): Promise\<void>;
108
109快速修复的补丁安装接口。
110
111**需要权限**: ohos.permission.INSTALL_BUNDLE
112
113**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.QuickFix
114
115**系统API**: 此接口为系统接口,三方应用不支持调用。
116
117**参数:**
118
119  | 参数名 | 类型 | 必填 | 说明 |
120  | -------- | -------- | -------- | -------- |
121  | hapModuleQuickFixFiles | Array\<string> | 是 | 快速修复补丁文件(补丁文件需包含有效的文件路径)。 |
122
123**返回值:**
124
125  | 类型 | 说明 |
126  | -------- | -------- |
127  | Promise\<void> | 返回相应结果。 |
128
129**错误码**:
130
131| 错误码ID | 错误信息 |
132| ------- | -------- |
133| 18500002 | The specified quick fix is invalid. It may not exist or inaccessible. |
134| 18500008 | Internal error. |
135
136在打补丁过程中发生的错误,其错误码及错误信息通过公共事件[COMMON_EVENT_QUICK_FIX_APPLY_RESULT](commonEventManager-definitions.md#common_event_quick_fix_apply_result-9)的参数返回给应用开发者。这部分错误码及错误信息如下:
137
138| 错误码ID | 错误信息 |
139| ------- | -------- |
140| 18500003 | Deploy hqf failed. |
141| 18500004 | Switch hqf failed. |
142| 18500005 | Delete hqf failed. |
143| 18500006 | Load patch failed. |
144| 18500007 | Unload patch failed. |
145
146以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
147
148**示例:**
149
150```ts
151  import quickFixManager from '@ohos.app.ability.quickFixManager';
152
153  let hapModuleQuickFixFiles = ['/data/storage/el2/base/entry.hqf'];
154  try {
155    quickFixManager.applyQuickFix(hapModuleQuickFixFiles).then(() => {
156      console.info('applyQuickFix success');
157    }).catch((error) => {
158      console.info(`applyQuickFix err: + ${error}`);
159    });
160  } catch (paramError) {
161    console.log('error: ' + paramError.code + ', ' + paramError.message);
162  }
163```
164
165## quickFixManager.getApplicationQuickFixInfo
166
167getApplicationQuickFixInfo(bundleName: string, callback: AsyncCallback\<ApplicationQuickFixInfo>): void;
168
169获取应用的快速修复信息。
170
171**需要权限**: ohos.permission.GET_BUNDLE_INFO_PRIVILEGED
172
173**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.QuickFix
174
175**系统API**: 此接口为系统接口,三方应用不支持调用。
176
177**参数:**
178
179  | 参数名 | 类型 | 必填 | 说明 |
180  | -------- | -------- | -------- | -------- |
181  | bundleName | string | 是 |应用的包名。  |
182  | callback | AsyncCallback\<[ApplicationQuickFixInfo](#applicationquickfixinfo)> | 是 | 应用的快速修复信息。 |
183
184**错误码**:
185
186| 错误码ID | 错误信息 |
187| ------- | -------- |
188| 18500001 | The specified bundleName is invalid. |
189| 18500008 | Internal error. |
190
191以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
192
193**示例:**
194
195```ts
196  import quickFixManager from '@ohos.app.ability.quickFixManager';
197
198  try {
199    let bundleName = 'bundleName'
200    quickFixManager.getApplicationQuickFixInfo(bundleName, (error, data) => {
201      if (error) {
202        console.info(`getApplicationQuickFixInfo error: + ${error}`);
203      } else {
204        console.info(`getApplicationQuickFixInfo success: + ${data}`);
205      }
206    });
207  } catch (paramError) {
208    console.log('error: ' + paramError.code + ', ' + paramError.message);
209  }
210```
211
212## quickFixManager.getApplicationQuickFixInfo
213
214getApplicationQuickFixInfo(bundleName: string): Promise\<ApplicationQuickFixInfo>;
215
216获取应用的快速修复信息。
217
218**需要权限**: ohos.permission.GET_BUNDLE_INFO_PRIVILEGED
219
220**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.QuickFix
221
222**系统API**: 此接口为系统接口,三方应用不支持调用。
223
224**参数:**
225
226  | 参数名 | 类型 | 必填 | 说明 |
227  | -------- | -------- | -------- | -------- |
228  | bundleName | string | 是 | 应用的包名。  |
229
230**返回值:**
231
232  | 类型 | 说明 |
233  | -------- | -------- |
234  | Promise\<[ApplicationQuickFixInfo](#applicationquickfixinfo)> | 返回应用的快速修复信息。 |
235
236**错误码**:
237
238| 错误码ID | 错误信息 |
239| ------- | -------- |
240| 18500001 | The specified bundleName is invalid. |
241| 18500008 | Internal error. |
242
243以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
244
245**示例:**
246
247  ```ts
248  import quickFixManager from '@ohos.app.ability.quickFixManager';
249
250  try {
251    let bundleName = 'bundleName';
252    quickFixManager.getApplicationQuickFixInfo(bundleName).then((data) => {
253      console.info(`getApplicationQuickFixInfo success: + ${data}`);
254    }).catch((error) => {
255      console.info(`getApplicationQuickFixInfo err: + ${error}`);
256    });
257  } catch (paramError) {
258    console.log('error: ' + paramError.code + ', ' + paramError.message);
259  }
260```
261