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/<应用进程Id>/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```