【鸿蒙】开发和引用静态共享包

1. 背景

我最近自己在使用云端一体化搞一个App,在开发过程中发现有许多地方可以封装成组件,虽然封装在本地项目已经满足需求,当时为了以后也会遇到,就打算学习一下鸿蒙的静态共享包开发和发布,这里只简述Api 9的静态共享包,动态共享包可以看鸿蒙官网,我这里就不描述了,过程差不多。

2. 介绍

HAR(Harmony Archive)是静态共享包,可以包含代码、C++库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。

3. 步骤

1. 在项目中创建一个静态的模块(静态共享包不能单独运行在设备上,只能作为应用模块的依赖项被引用)。
  • Module name:新增模块的名称。
  • Language:开发语言。
  • Device type:支持的设备类型。
  • Enable native:是否创建一个用于调用C++代码的模块。

2.  在项目中引入本地的模块,用于查看模块。

在 项目->entry->oh-package.json5 文件中,导入本地模块,然后同步一下包,最后在页面中使用即可。

当然,还有另一种方式——引入.har包,但是我不建议,因为引入.har包不方便调试查看,在查看前都需要重新打包才能同步,而引入模块的方式,会自动进行同步,便于调试查看。

3. 在库模块中(与src文件夹同级目录下)创建详细介绍、更新记录和许可文件
  • README.md:文件不能为空,用于包的介绍和使用等信息
  • CHANGELOG.md:文件不能为空,用于填写包的版本及更新记录
  • LICENSE:文件不能为空,可以参考这个许可证
4. 配置共享包是否开源(可选步骤)

在 模块->build-profile.json5 文件中设置 artifactType 字段,默认值为 original(开源),如有需要可以设置为 obfuscation(闭源),obfuscation表示为使用混淆模式

5. 配置打包时要忽略的文件(可选步骤)

若部分工程源文件无需构建到HAR包中,可在module目录下新建.ohpmignore文件,用于配置打包时要忽略的文件,支持正则表达式写法。将无需打包进HAR包的文件/文件夹名称写入.ohpmignore文件中。DevEco Studio构建时将过滤掉.ohpmignore文件中所包含的文件目录。

6. 编译构建库模块

 鼠标点击一下你要编译构建的库模块,然后选择Build,点击Make Module '模块名',构建成功之后会在 库模块->build->default->outputs->default 文件目录下生成一个.har文件

7. 发布共享包

7.1 生成公钥和私钥(类似于git的私钥),执行一下命令

(如果直接写文件名,它会默认在当前目录生成文件)

有.pub后缀的文件是公钥文件,没有后缀的则是私钥文件

OHPM包管理器只支持加密密钥认证,请在生成公私钥时输入密码。(这个密码需要记住,发布时需要用到)

ssh-keygen -m PEM -t RSA -b 4096 -f 路径+文件名

7.2 登录OpenHarmony三方库中心仓官网,单击主页右上角的个人中心,选择认证管理,新增一个公钥,将.pub后缀文件(公钥文件)的内容复制到公钥输入框中

7.3 在终端执行如下命令,设置私钥路径

ohpm config set key_path 私钥文件的绝对路径+私钥文件名

7.4 登录OpenHarmony三方库中心仓官网,单击主页右上角的个人中心,复制发布码,获取发布码并配置到 .ohpmrc 文件中,可执行如下命令

ohpm config set publish_id 发布码

7.5 执行如下命令发布HAR

ohpm publish .har文件的绝对路径+.har文件

发布成功会有如下提示

4. 常见问题 

1. ohpm ERROR: Publish failed, error: Error: The key_path is empty - configure key_path in tthe .ohpmrc file

这个问题的原因是:.ohpmrc配置文件中没有设置 key_path 私钥路径,也就是7.3的步骤执行失败或者没有执行

2. 

ohpm ERROR: Private key without passphrase is noot supportedohpm ERROR: You must config a encrypted private key using a non-empty passphrase.
ohpm ERROR: Publish failed, error: Error: Not supported private key

这个问题的原因是:私钥没有设置密码或者不符合加密等级,参考7.1

 3. key_path ohpm ERROR: The content of private key in the error.

上传时输入的密码与生成私钥时的密码不匹配

 4. ohpm ERROR: HttpCode 400 No valid publicKeyfound!

在OpenHarmony三方库中心设置公钥,参考7.2

5. HttpCode 400 The OHPM package must contain a non-empty license file.

表示LICENSE文件为空,参考步骤3,填写许可认证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值