前言
类似于 Android 项目中的 jar/aar ,鸿蒙肯定也是支持第三方依赖库的。
鸿蒙提供了 静态共享包 HAR(Harmony Archive) 和 动态共享包 HSP(Harmony Shared Package) 两种方式。根据官网的介绍:
HAR中的代码和资源跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份相同拷贝。
HSP中的代码和资源可以独立编译,运行时在一个进程中代码也只会存在一份。
看起来 HSP 应该是个更好的选择,但是 HSP 的限制又很多。
应用内 HSP 指的是专门为某一应用开发的HSP,只能被该应用内部其他HAP/HSP使用,用于应用内部代码、资源的共享。
应用间 HSP 暂不支持。
所以,理论上,HSP 只支持应用内部源码编译,应用内 HAP 可以共享使用。
如果是需要公开发布产物的 sdk 的话,目前只能选择 HAR 。
准备工作
- 首先到 OpenHarmony 三方库中心仓 注册账号,进入到个人中心页面。
-
执行
ssh-keygen -m PEM -t RSA -b 4096 -f your_key_path
生成公私钥对,在个人中心 -》认证管理 -》 新增,填入公钥内容。 -
执行
ohpm config set key_path your_key_path
配置私钥路径。 -
个人中心 头像下方,点击复制发布码。
-
执行
ohpm config set publish_id your_publish_id
配置发布码。
准备工作完成。
编写依赖库
以写 WanHarmony 的过程中,编写的一个标签布局组件为例,进行发布过程。
代码实现很简单,总共两个文件,且都需要对外暴露。
HAR 中需要导出的组件/接口,除了常规的 export 修饰符之外,还需要在 Index.ets
中进行声明。
css
export { FlowLayout } from './src/main/ets/components/flowlayout/FlowLayout'
export { FlowLayoutConfig } from './src/main/ets/components/flowlayout/FlowLayoutConfig'
然后配置到 oh-packages.json5
文件中:
css
{
"main": "Index.ets"
}
其他的一些项目配置:
README.md
: 必须包含包的介绍和引用方式,如果没有包含安装命令ohpm install xxx
,审核会被拒CHANGELOG.md
: 更新记录LICENSE
文件
oh-package.json5
这里是依赖库的一些发布信息。示例如下:
perl
{
"name": "@luyao/flowlayout", // 必选,@group/packagename
"version": "1.0.0", // 必须,版本号,从 1.0.0 开始
"description": " xxxx", // 必须,必须大于一定字符,好像是 32
"keywords": ['flowlayout'], // 可选
"main": "Index.ets", // 必须,入口文件
"author": "luyao", // 必须
"homepage": "https://github.com/lulululbj/WanHarmony",
"license": "Apache-2.0", // 必须
"dependencies": {} // 可选,用到的依赖
}
完整介绍在这里: ohpm.openharmony.cn/#/cn/help/c...
发布
首先要构建 HAR 产物,选中依赖库的 module,工具栏 Build -》 Make,产物在依赖库 Module 的 build/default/outputs/default/xxx.har
。
执行发布命令,发布过程中会要求输入密码。
ohpm publish <HAR路径>
不出意外的话,应该就发布成功了。但一般情况,肯定是会发生意外的。
如果你遇到这个错误:
说明你在 oh-package.json 文件中的 name 属性填写的组织未经过认证。比如我填写的是 @luyao/flowlayout
,luyao
这个组织就是未经认证的。
但也不麻烦,申请一下就行。到 OpenHarmony 三方库中心仓 的 个人中心 -》组织管理 -》新增,然后等到审核通过即可。
截止完成本文,因为没有说明安装命令被拒一次,后续如果发布成功,在这个 ohpm.openharmony.cn/#/cn/detail... 地址应该可以看到我发布的库。
资料推荐
- 如何创建 HAR 来自 OpenHarmony 网站
- 发布 HAR 来自 HarmonyOS 网站
- 创建及发布三方库 来自 OpenHarmony 三方库中心仓文档 OpeOpenHarmony三方库中心仓rmony三方库中心仓
一门全新技术的发展早期一定伴随着大量的问题,开发者们的相互交流就必不可少了。所以建立了一个鸿蒙技术交流群。你可以在掘金私信我,或者关注我的公众号: 路遥的世界 。