集成态HSP是应用内HSP的中间编译产物,用于解决使用方的bundleName和签名之间的强耦合问题。
HSP只能给bundleName一样的工程使用,集成态HSP可以给不同的bundleName的工程集成使用。
使用方使用集成态HSP时,需要采用使用方的签名文件对集成态HSP重新签名,且需要优先安装重新签名后的集成态HSP。
如果存在多个应用包含相同的基础能力,例如日志打印模块,为节约开发成本并实现代码和资源的共享,多个应用可以共用一个日志模块。此时,可以通过应用内HSP方式提供能力。由于应用内HSP的限制,每个应用在使用前都需要调整其bundleName,并使用当前应用的签名重新签名,构建一个新的HSP提供给当前应用使用。这意味着,每增加一个应用,就需要进行一次调整bundleName和重新签名的操作,导致签名和打包过程繁琐。而集成态HSP在DevEco Studio编译过程中,bundleName和重签名的动作会自动完成,开发者无需关注重复签名的操作,可以专注于功能业务的开发。
工程配置:配置工程级的build-profile.json5文件,将useNormalizedOHMUrl字段设置为true。
{
"app": {
"signingConfigs": [
],
"products": [
{
"name": "default",
"signingConfig": "default",
"targetSdkVersion": 19,
"compatibleSdkVersion": 19,
"compileSdkVersion": 19,
"runtimeOS": "HarmonyOS",
"buildOption": {
"strictMode": {
// ...
"useNormalizedOHMUrl": true,
}
}
}
],
// ...
},
// ...
} 模块配置:修改模块级构建配置文件build-profile.json5,将integratedHsp配置项设置为true,指定构建的HSP模块为集成态HSP。
// library/build-profile.json5
{
"apiType": "stageMode",
// ...
"buildOptionSet": [
{
// ...
"arkOptions": {
"integratedHsp": true,
// ...
},
},
],
// ...
} 打包配置(tgz包)。
(1) 配置项目签名信息,详情请参见配置调试签名。
(2) 配置release模式。

(3) 选择library目录,执行Build -> Make Module 'library'。
创建目录并拷贝文件:在entry目录下新建libs目录,将集成态打包产物tgz包拷贝到libs目录下。
工程依赖配置:在使用方主模块的oh-package.json5配置文件中添加依赖。
"dependencies": {
"library": "file:./libs/library-default.tgz"
}, 工程配置:在工程级的build-profile.json5文件中,将useNormalizedOHMUrl字段设置为true。
{
"app": {
"signingConfigs": [
],
"products": [
{
"name": "default",
"signingConfig": "default",
"targetSdkVersion": 19,
"compatibleSdkVersion": 19,
"compileSdkVersion": 19,
"runtimeOS": "HarmonyOS",
"buildOption": {
"strictMode": {
// ...
"useNormalizedOHMUrl": true,
}
}
}
],
// ...
},
// ...
} 配置签名。
安装和运行应用前,必须配置项目签名信息,详见配置调试签名。