快速修复是HarmonyOS系统提供给开发者的一种技术手段,支持开发者以远快于应用升级的方式对应用程序包进行缺陷修复。和全量应用升级软件版本相比,快速修复的主要优势在小、快和用户体验好。在较短的时间内不中断正在运行的应用的情况下(即不需要重启应用),修复应用的缺陷。
上图是HarmonyOS应用程序发布的快速修复的包格式
从图中可以看出包含两种包格式:
appqf(Application Quick Fix)
appqf与应用的app pack包是一一对应关系,具体可参考应用程序包结构的介绍。
hqf(Harmony Ability Package Quick Fix)
hqf包是修复HAP中问题的快速修复包,用于安装到设备上的快速修复单元。一个hqf可以包含.abc的快速修复文件,.so的快速修复文件和描述该包的配置文件。
.abc文件:应用中修改后的ts代码,编译后生成的字节码文件。
libs目录:存放.so库文件的差分文件,以.so.diff为后缀。区分的不同的系统cpu架构,例如arm平台、x86平台。
patch.json:
该文件用于描述hqf包版本信息的配置文件,由开发者填写,具体内容如下:
{
"app" : {
"bundleName" : "com.ohos.quickfix",
"versionCode" : 1000000,
"versionName" : "1.0.0",
"patchVersionCode" : 1000000,
"patchVersionName" : "1.0.0"
},
"module" : {
"name" : "entry",
"type" : "patch",
"deviceTypes" : [
"default",
"tablet"
],
"originalModuleHash" : "11223344556677889900"
}
}
具体字段说明:
字段 | 类型 | 说明 | 备注 |
---|---|---|---|
bundleName | string | 对应应用的包名 | 不可缺省 |
versionCode | int | 对应应用版本号 | 不可缺省 |
versionName | string | 对应应用的版本名称 | patch类型不可缺省 |
patchVersionCode | int | 补丁包的版本号 | 不可缺省 |
patchVersionName | string | 补丁包的版本名称 | patch类型不可缺省 |
name | string | 对应应用的moduleName,用来修复该module的 | 不可缺省 |
type | string | 对应补丁包的类型,当前可选择为patch | 不可缺省 |
deviceTypes | array | 补丁包支持的设备类型 | 不可缺省 |
originalModuleHash | string | 原始module Name对应包的哈希值 | 不可缺省 |
上图是通过TS代码编译工具生成快速修复.abc文件的流程:
上图是通过差分工具生成快速修复.so文件的流程:
上图涉及到的模块如下:
上图是快速修复包的端到端发布部署流程: