鸿蒙HarmonyOS-HAR包(三方库)的构建和发布

2024-11-04  本文已影响0人  wuyukobe
HAR包的构建和发布

目录

一、HAR的介绍
二、构建HAR包
三、发布HAR包
四、发布成功HAR包的导入和使用
五、问题记录

一、HAR的介绍

1、什么是HAR?

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

2、HAR使用场景

3、HAR约束限制

二、构建HAR包

1、创建库模块

1)新建一个鸿蒙项目(或者使用原有项目也可以),以新建的鸿蒙项目 WXQHMProject 为例,鼠标移到工程目录顶部,单击右键,选择New > Module,在工程中添加模块:
1、创建Module
2)在Choose Your Ability Template界面中,选择Static Library,并单击Next:
2、选择Static Library
3)在Configure New Module界面中,设置新添加的模块信息(以新增模块 wxqcolor 为例),设置完成后,单击Finish完成创建。
3、设置Module名称
4)以下就是新建的Module展示:
4、新建的Module展示

2、HAR包的构建

1)将要发布使用的代码放在 src/main/ets/components 目录下,比如新增一个ets文件 WXQColor.ets。
5、新增module类
2)开发完库模块后,选中模块名,然后通过DevEco Studio菜单栏的Build > Make Module 'wxqcolor'进行编译构建,生成HAR。HAR可用于工程其它模块的引用,或将HAR上传至ohpm仓库,供其他开发者下载使用。若部分源码文件不需要打包至HAR中,可通过创建.ohpmignore文件,配置打包时要忽略的文件/文件夹。
6、Make Module 'wxqcolor'

构建成功后,会生成一个包 wxqcolor.har,在build/default/outputs/default/wxqcolor.har 路径下。


7、har构建成功

3、HAR包的导入和使用

1)验证下本地构建好的HAR包是否可以在项目中导入和使用,首先新建一个测试项目 WXQHarTest,工程目录下新建文件夹libs,并将 wxqcolor.har 包拷贝到该目录下(图中1),打开项目的oh-package.json5 添加har包的依赖(图中2和3),最后执行同步操作 Sync Now(图中4)。
8、har包的导入
2)导入成功后,会生成一个文件 oh-package-lock.json5,里面详细记录导入的包的信息(图中1),以及导入成功后打印的提示信息(图中2)。
9、har包导入成功
3)在Index.ets 中导入包的头文件(图中1和2),调用har包中的相关代码(图中3)。
10、har包的引用和代码使用
4)模拟器运行后效果截图
11、使用效果截图

三、发布HAR包

1、在库模块wxqcolor中(与src文件夹同一级目录下),修改oh-package.json5文件内容,如下:

{
  "name": "@wxqos/wxqcolor",
  "version": "1.0.0",
  "description": "自定义一套颜色,直接引用即可",
  "main": "Index.ets",
  "author": "wxq24",
  "license": "Apache-2.0",
  "dependencies": {},
  "compatibleSdkType": "HarmonyOS"
}
注意:在后面的 README.md 文件或者 CHANGELOG.md 中如果介绍包信息,其中包名一定要和name中设置的包名(@wxqos/wxqcolor)一致,否则有审核失败的风险!!!
12、oh-package-json5.png
以上信息中的name、author、description,会在OpenHarmony三方库中心仓中展示。
上传成功的包信息

2、在库模块wxqcolor中(与src文件夹同一级目录下),添加如下文件:

注意:以上内容要保证文件不缺失、内容正确且真实,不然之后的审核有可能会通不过!

3、修改完以上信息后,需要重新执行下 Make Module 'wxqcolor' 编译构建一个新的 wxqcolor.har 包。

4、利用工具ssh-keygen生成公、私钥,可通过执行以下命令来生成公钥和私钥:

ssh-keygen -m PEM -t RSA -b 4096 -f ~/.ssh_ohpm/mykey 

在命令执行过程中,会让你输入一个密码,这个密码是后面用来上传包用的,一定要记住!!!

Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

如果本地 ~/ 路径下没有隐藏文件夹.ssh_ohpm,需要先手动创建一个:cd到 ~/ 下,执行 mkdir .ssh_ohpm。
执行成功后会生成以下私钥和公钥文件:


16、公钥和私钥路径
官方说明:

5、登录OpenHarmony三方库中心仓官网,单击主页右上角的个人中心,新增OHPM公钥,将公钥文件(mykey.pub)的内容粘贴到公钥输入框中。

17、公钥添加

公钥添加成功后显示:


18、公钥添加成功后

6、打开命令行工具,将对应私钥文件路径配置到 .ohpmrc 文件中 key_path 字段上。

执行以下命令进行配置:

ohpm config set key_path  ~/.ssh_ohpm/mykey

在ohpmrc文件中会填充一条内容,表示命令执行成功:

key_path=/Users/xxx/.ssh_ohpm/mykey
19、ohpmrc文件路径

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

ohpm config set publish_id your_publish_id

执行完成后,会在步骤6中的 ohpmrc文件中会新增一条内容:

publish_id=your_publish_id

将其中的 your_publish_id 替换成你在官网复制的发布码(比如:5UABCDEFGH)即可。
也可以直接执行以下命令即可:

ohpm config set publish_id 5UABCDEFGH
20、官网复制发布码

8、执行如下命令发布HAR,<HAR路径>需指定为.har文件的具体路径。

ohpm publish /Users/xxx/WXQHMProject/wxqcolor/build/default/outputs/default/wxqcolor.har

注意:其中会让你输入一个密码,就是上面说的上传包的密码。

终端打印以下信息就表示发布提交完成了,发布的包是需要审核的,只有审核通过后才会在OpenHarmony三方库中心仓展示:

>  ohpm publish /Users/xxx/WXQHMProject/wxqcolor/build/default/outputs/default/wxqcolor.har
registry:https://ohpm.openharmony.cn/ohpm/

package:@wxqos/wxqcolor@1.0.0

=== Harball Contents ===
519B    BuildProfile.ets
66B     CHANGELOG.md
198B    Index.ets
587B    LICENSE
1004B   README.md
27B     ResourceTable.txt
500B    build-profile.json5
0B      consumer-rules.txt
234B    hvigorfile.ts
93.3kB  img.png
1008B   obfuscation-rules.txt
300B    oh-package.json5
593B    src/main/module.json
274B    src/main/ets/components/MainPage.ets
1.1kB   src/main/ets/components/WXQColor.ets
96B     src/main/resources/base/element/string.json
96B     src/main/resources/en_US/element/string.json
96B     src/main/resources/zh_CN/element/string.json

=== Harball Details ===
name:           @wxqos/wxqcolor
version:        1.0.0
filename:       @wxqos/wxqcolor-1.0.0.har
package size:   95.7 kB
unpacked size:  99.8 kB
shasum:         TKIo4iIPMFmZMfG2MVlUPqH0O4U=
integrity:      sha512-yEZi/38AayT9zGjJxJWJxviuB9F4F7W6O9se2Ok49CYxVGiPDRSP+1qSWjRdj9WN9N9sv3++t6pOCRJl4foqYw==
total files:    18


ohpm WARN: The HAR package to be uploaded contains source code, which may cause code asset leakage. Please abort if you do not want to procceed.
what is your passphrase of the private key: *******
+@wxqos/wxqcolor 1.0.0 
Thanks for your contribution, the submitted OHPM library is under review, you can check the package status from https://ohpm.openharmony.cn/#/cn/personalCenter/package

OpenHarmony三方库中心仓的消息中能查看到你提交的信息,以及审核结果的信息:

21、发布消息

审核通过后,就可以在OpenHarmony三方库中心仓中搜索到了:

22、搜索结果

四、发布成功HAR包的导入和使用

1、在项目的Terminal 执行导入命令:

 ohpm install @wxqos/wxqcolor  

输出以下信息,即导入成功:

 > ohpm install @wxqos/wxqcolor                 
ohpm INFO: MetaDataFetcher fetching meta info of package '@wxqos/wxqcolor' from https://ohpm.openharmony.cn/ohpm/
ohpm INFO: fetch meta info of package '@wxqos/wxqcolor' success https://ohpm.openharmony.cn/ohpm/@wxqos/wxqcolor
ohpm INFO: fetch package done 1 @wxqos/wxqcolor from https://ohpm.openharmony.cn/ohpm/@wxqos/wxqcolor/-/wxqcolor-1.0.0.har
ohpm INFO: remove useless folder succeed: "/Users/wxq/Desktop/HMApp_ArkTS/oh_modules/.ohpm/@abner+net@1.1.1/oh_modules/@abner/.DS_Store"
install completed in 0s 431ms

项目中导入成功截图:


23、远程导入成功

2、具体的使用和上面本地har包使用一样:

pages引用:

import { WXQColor, firstPublicFuncColor } from '@wxqos/wxqcolor'

代码使用参考:

this.CustomText('主题-红色 firstColor', WXQColor.firstColor)
this.CustomText('文字-重要 textMajorColor', WXQColor.textMajorColor)
this.CustomText('激励、价格等高亮 textLightColor', WXQColor.textLightColor)
this.CustomText('文字-不可用 textUnableColor', WXQColor.textUnableColor)
this.CustomText('-------------------------', WXQColor.lineColor)
this.CustomText('自定义内部主颜色 firstInternalFuncColor', WXQColor.firstInternalFuncColor())
this.CustomText('自定义外部主颜色 firstPublicFuncColor', firstPublicFuncColor())

五、问题记录

1、ohpm ERROR: Publish failed, detail: You have to specify a correct har_file or tgz_file path.

解决方案:使用命令 ohpm publish 发布HAR包的路径不对。

2、ohpm ERROR: HttpCode 400 The OHPM package author information is empty or the format is invalid.

解决方案:发布的HAR包oh-package.json5中的信息不对,比如name。

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

解决方案:发布时填写的密码不对,就是生成私钥和公钥时候填写的密码。

4、ohpm ERROR: Publish failed, detail: The "main" or "types" field declare file "Index.d.ets" does not exist in package.

解决方案:发布的HAR包oh-package.json5中填写的"main": "Index.ets"不对

5、ohpm ERROR: HttpCode 400 The description of the OHPM packet contains 6 to 512 characters.

解决方案:发布的HAR包oh-package.json5中填写的description的长度在 6 到 512字符,重新修改即可。

6、ohpm ERROR: HttpCode 400 Failed to verify the OHPM package group. Ensure that you are a developer of the organization and the organization has been authenticated.

解决方案:发布的HAR包oh-package.json5中填写的name中所使用的group组织名(wxqos)还没有审核通过,等审核通过后再提交即可。

 "name": "@wxqos/wxqcolor",

github 源码参考:WXQHMProject
OpenHarmony三方库中心仓地址:@wxqos/wxqcolor(V1.0.0)

上一篇 下一篇

猜你喜欢

热点阅读