【HarmonyOS开发】共享包HAR和HSP的创建和使用以及三方库的发布

2024-01-02 18:05:32

图片

OpenHarmony提供了两种共享包,HAR(Harmony Archive)静态共享包,和HSP(Harmony Shared Package)动态共享包。?

HAR与HSP都是为了实现代码和资源的共享,都可以包含代码、C++库、资源和配置文件,最大的不同之处在于:HAR中的代码和资源跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份相同拷贝;而HSP中的代码和资源可以独立编译,运行时在一个进程中代码也只会存在一份。

图片

1、HAR:静态共享包(模块)

1.1?创建/编译

图片

图片

1.2 引用/使用

1.2.1 从ohpm三方库中引用

ohpm?install?发布成功的包名(eg:?@ohos/lottie)

1.2.2?从本地引用HAR包

ohpm install ./package.har

开发及引用静态共享包icon-default.png?t=N7T8https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/creating_har_api9-0000001518082393-V3#section143510369612

1.3?发布我们的HAR包到三方开源库

1.3.1 OpenHarmony中心仓创建账号

OpenHarmony三方库中心仓icon-default.png?t=N7T8https://ohpm.openharmony.cn/#/cn/personalCenter/notifications

1.3.2?利用工具ssh-keygen生成公钥和私钥文件

//?/d/SSH/ohpm.pub为密钥存放的位置
ssh-keygen?-m?PEM?-t?RSA?-b?4096?-f?/d/SSH/ohpm-test.pub
?
//?输入量两次一致的密码,即可自动生成密钥
Enter?passphrase?(empty?for?no?passphrase):
Enter?same?passphrase?again:

1.3.3?OpenHarmony中心仓中配置ohpm公钥

注册成功后,进入个人中心【认证管理】,用我们生成的密钥,进行配置,具体见下图:

图片

1.3.4?配置本地的环境变量.ohrmrc

// 1、配置私钥,d/SSH/ohpm.pub为我们生成的私钥文件位置
ohpm config set key_path d/SSH/ohpm-test.pub

// 2、配置发布码:publish_id,或者找到.ohrmrc直接修改publish_id字段
ohpm config set publish_id CQF******Z

// 结果
// ohpm WARN: invalid config key_path="d/SSH/ohpm.pub" set in C:\Users\*****\.ohpm\.ohpmrc - invalid filesystem path.

图片

1.3.5?发布HAR到三方库

// 1、执行推包命令
ohpm publish D:\workspace-hw-OS\HAR\GridEdit.har

// 2、输入开源仓配置的密码即可完成

图片

1.3.6?三方库审核

审核通过,即可通过ohpm从开源仓下载我们的包

图片

图片

工具扫描包括完整性检查与安全性检查两部分。完整性检查将基于创建三方库的具体要求进行三方库目录、内容审核,如果您提交的三方库缺少必要性文件,三方库将被退回,请您根据提示完善三方库内容后再次提交上架审核;安全性检查将结合目前已有的安全检测工具,对三方库进行定期检测。

1.3.7?发布失败问题整理

  • 模块源码中缺少文件

    • 缺少开源声明文件:ohpm ERROR: HttpCode 400 The OHPM package must contain a non-empty license file.

    • 缺少README.md说明文件:ohpm ERROR: HttpCode 400 The OHPM package must contain a non-empty readme.md file.

    • 缺少GHANGELOG.md版本说明文件:ohpm ERROR: HttpCode 400 The OHPM package must contain a non-empty changelog.md file.

2、HSP:动态共享包(模块)

2.1?创建/编译

图片

图片

2.2?引用

2.2.1 在使用方entry/feature模块的oh-package.json5文件中添加HSP模块引用

{
  ...
  "dependencies": {
    "sharedlibrary": "file:../libraryTest"
  }
}

2.2.2 点击执行?Run 'ohpm install'

HSP目录将映射到entry/feature的oh_modules目录下

2.3 使用

图片

HSP旨在解决HAR存在的几个问题:

  • 多个HAP引用相同的HAR,导致的APP包大小膨胀问题。

  • 多个HAP引用相同的HAR,HAR中的一些状态变量无法共享的问题。

HSP的一些约束:

  • HSP及其使用方都必须是Stage模型。

  • HSP及其使用方都必须使用esmodule编译模式。

  • HSP不支持在配置文件中声明abilities、extensionAbilities标签。

文章来源:https://blog.csdn.net/qq_23334071/article/details/135344250
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。