问题描述:
在开发完HSP包后打包成.tgz
给使用方app使用,但是在自测正常引入demo时,报错9568329。
原因分析:
根据官方文档分析,HSP只能给bundleName
一样的项目使用。通俗说在HSP编译时,把bundleName
等主工程信息一起编译进module.json
里了。通过查看编译后的oh_modules.json5
可以验证这一言论。
解决方案:
集成态HSP:集成态HSP是应用内HSP的一种中间编译产物,目的就是解决使用方的bundleName和签名强耦合性。
根据官方文档,使用集成态HSP编译,可以解决bundleName与Hsp强耦合。
具体步骤:
-
开发方
- 修改工程级
build-profile.json5
,设置配置项useNormalizedOHMUrl
为true
,指定工程使用标准化的OHMUrl格式。
{ "app": { "products": { "name": "default", "signingConfig": "default", "compatibleSdkVersion": "5.0.0(12)", "runtimeOS": "HarmonyOS", "buildOption": { "strictMode": { "useNormalizedOHMUrl": true } } } } }
- 修改HSP
build-profile.json5
,设置配置项integratedHsp
为true
,指定构建的HSP模块为集成态HSP。
{ "apiType": "stageMode", "buildOption": { "arkOptions": { "integratedHsp": true } } }
- 打包(tgz包)
设置release打包模式:
打包: 选择library目录,Build -> Make Module ‘libray’。
- 修改工程级
-
使用方
- 添加依赖
"dependencies": { "hsp": "./lib/library-default.tgz" }
- 修改工程级
build-profile.json5
,设置配置项useNormalizedOHMUrl
为true
,指定工程使用标准化的OHMUrl格式。
{ "app": { "products": { "name": "default", "signingConfig": "default", "compatibleSdkVersion": "5.0.0(12)", "runtimeOS": "HarmonyOS", "buildOption": { "strictMode": { "useNormalizedOHMUrl": true } } } } }