鸿蒙动态共享包HSP
本文介绍一下如何编译动态共享包以及如何使用动态共享包。
动态共享包当然有很多好处了,譬如说给其他项目组用。其他的就不过多的说明了。以下是如何构建一个动态共享包。
动态共享包的两种状态
动态共享包有两种状态,感觉给公司内部使用的时候使用第一种应用内 hsp 比较好,还能避免被分享出去导致的一些问题。
- 应用内 hsp:在编译过程中与应用包名(bundleName)强耦合,只能给某个特定的应用使用,本页面介绍应用内 HSP。
- 集成态 hsp:构建、发布过程中,不与特定的应用包名耦合;使用时,工具链支持自动将集成态 HSP 的包名替换成宿主应用包名,并且会重新签名生成一个新的 HSP 包,作为宿主应用的安装包,这个新的 HSP 也属于宿主应用 HAP 的应用内 HSP。
大概的步骤
- 新建一个项目/或者使用已有项目;
- 通过文件->新建->模块->动态共享包->输入名称 cc;
- 同之前的项目,譬如说 entry 同目录下会有一个新的加粗的项目;
- coding...
- 打包,把编译模式(build mode)切换成 release 模式;
- 项目窗口选中文件夹 cc,菜单栏->构建->构建动态共享包 cc;
- 在 cc 文件夹下会生成 ./cc/build/default/outputs/default/cc-default.tgz
- 使用 ohpm 安装 cc 库;
- 在项目中使用 cc 库;
这里边基本上没有什么需要特殊注意的地方。不过强行解释一下最后两步吧。
注意
包安装方式
ohpm 安装动态共享包,最好使用 dev eco 编译器的终端进行安装,避免安装失败。
bash
ohpm install ./cc/build/default/outputs/default/cc-default.tgz
或者修改项目 oh-package.json5 中的依赖并同步文件,不过最好用 ohpm 安装;
json
"dependencies": {
"wisetv": "file:../cc-default.tgz"
},
项目中使用
在项目中使用 cc 库。
javascript
import { add } from 'cc'
add(1, 1) // => 2
集成态 hsp
如果是集成态的,创建方和集成方都需要配置工程级别的 build-profile.json5, 将 useNormalizedOHMUrl 字段设置为 true。
json
"app": {
"products": [
{
"name": "default",
"signingConfig": "default",
"compatibleSdkVersion": "5.0.3(15)",
"runtimeOS": "HarmonyOS",
"buildOption": {
"strictMode": {
"useNormalizedOHMUrl": true
}
}
// ...
}
]
// ...
}
创建方还需要修改模块级别的 build-profile.json5,将 integratedHsp 配置项设置为 true,配置如下:
json
{
"apiType": "stageMode",
"buildOption": {
"arkOptions": {
"integratedHsp": true
}
}
}