HAR(Harmony Archive)是静态共享包,可以包含代码、C++库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。HAR不同于HAP,不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。
接下来,将简单介绍库模块的工程结构,如下图所示:

相关字段的描述如下。
后续将介绍如何创建库模块、如何编译共享包、如何引用共享包资源,以及如何发布共享包。
1. 鼠标移到工程目录顶部,单击右键,选择New > Module,在工程中添加模块。
2. 在Choose Your Ability Template界面中,选择Static Library,并单击Next。

3. 在Configure New Module界面中,设置新添加的模块信息,设置完成后,单击Finish完成创建。

创建完成后,会在工程目录中生成库模块及相关文件。

开发完库模块后,选中模块名,然后通过DevEco Studio菜单栏的Build > Make Module ${libraryName}进行编译构建,生成HAR。HAR可用于工程其它模块的引用,或将HAR上传至ohpm仓库,供下载使用。若部分源码文件不需要打包至HAR中,可通过创建.ohpmignore文件,配置打包时要忽略的文件/文件夹。

编译构建的HAR可在模块下的build目录下获取,包格式为*.har。

在编译构建HAR时,请注意以下事项:
DevEco Studio支持开发动态共享包HSP(Harmony Shared Package)。在应用/元服务开发过程中部分功能按需动态下载,或开发元服务场景时需要分包加载,可使用HSP实现相应功能。当有多个安装包需要资源共享时,也可利用HSP减少公共资源和代码重复打包。
说明
1. 通过如下两种方法,在工程中添加新的Module。
2. 模板类型选择Shared Library,点击Next。

3. 在Configure New Module界面中,设置新添加的模块信息,设置完成后,单击Finish完成创建。

创建完成后,会在工程目录中生成库模块及相关文件。

说明
如果HSP未开启混淆,则后续HSP被集成使用时,将不会再对HSP包进行混淆。
开发完库模块后,选中模块名,然后通过DevEco Studio菜单栏的Build > Make Module ${libraryName}进行编译构建,生成HSP。

打包HSP时,会同时默认打包出HAR,在模块下build目录下可以看到*.har和*.hsp。

如需在应用内共享HSP,请将HSP共享包上传至私仓,请先按以下操作编译生成*.tgz包。
1. 点击工具栏图标将编译模式切换成release模式。

2. 选中HSP模块的根目录,点击Build > Make Module ${libraryName}启动构建。

构建完成后,build目录下生成HSP包产物,其中.tgz用来上传至私仓。

发布打包的HAR,可供安装和引用。接下来将介绍如何发布HAR共享包。
说明
OpenHarmony三方库中心仓仅支持HAR共享包发布,不支持HSP共享包发布。如需在应用内共享HSP,可将HSP共享包发布至私仓使用。
1. 在库模块中(与src文件夹同一级目录下),添加如下文件:
2. 重新编译库模块,生成*.har文件。
3. 利用工具ssh-keygen生成公、私钥,可执行以下命令:
ssh-keygen -m PEM -t RSA -b 4096 -f ~/.ssh_ohpm/mykey 说明
4. 登录OpenHarmony三方库中心仓官网,单击主页右上角的个人中心, 新增OHPM公钥,将公钥文件(mykey.pub)的内容粘贴到公钥输入框中。

5. 打开命令行工具,将对应私钥文件路径配置到 .ohpmrc 文件中 key_path 字段上,可执行以下命令进行配置:
ohpm config set key_path ~/.ssh_ohpm/mykey6. 登录OpenHarmony三方库中心仓官网,单击主页右上角的个人中心,复制发布码,获取发布码并配置到 .ohpmrc 文件中,可执行如下命令:
ohpm config set publish_id your_publish_id7. 执行如下命令发布HAR,<HAR路径>需指定为.har文件的具体路径。
ohpm publish <HAR路径>