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

news2024/12/21 23:08:52

图片

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标签。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1351169.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言——操作符

一、算数操作符 1、(加操作符) 用于将两个数相加,例:3 3结果为6 2、-(减操作符) 用于将两个数相减,例:3 - 3结果为0 3、*(乘操作符) 用于将两个数相乘,例:3 * 3结果为9 4、/(除操作符) 用于将两个…

fastadmin学习02-修改后台管理员账号密码

问题 如果是别人部署好的fastadmin网站不知道后台登录地址和账号密码怎么办 后台登录地址 public目录下有一个很奇怪的php就是后台登录地址啦 忘记账号密码 找到fa_admin,fa_是前缀,肯能每个项目不太一样 UPDATE fa_admin set password1d020dee8ec…

计算机毕业论文内容参考|基于智能搜索引擎的图书管理系统的设计与实现

文章目录 摘要前言绪论课题背景国内外现状与趋势课题内容相关技术与方法介绍系统分析系统设计系统实现系统测试总结与展望摘要 本文介绍了基于智能搜索引擎的图书管理系统的设计与实现。该系统旨在提供一个高效、智能化的图书管理平台,帮助用户更快、更准确地找到所需的图书资…

使用Apache Commons SCXML实现状态机管理

第1章:引言 大家好,我是小黑,咱们程序员在开发过程中,经常会遇到需要管理不同状态和状态之间转换的场景。比如,一个在线购物的订单,它可能有“新建订单”、“已支付”、“配送中”、“已完成”等状态。在这…

Linux/Unix/国产化操作系统常用命令(二)

目录 后CentOS时代国产化操作系统国产化操作系统有哪些常用Linux命令关于Linux的LOGO 后CentOS时代 在CentOS 8发布后,就有了一些变化和趋势,可以说是进入了"后CentOS时代"。这个时代主要表现在以下几个方面: CentOS Stream的引入…

Spring技术内幕笔记之SpringMvc

WebApplicationContext接口的类继承关系 org.springframework.web.context.ContextLoader#initWebApplicationContext 对IOC容器的初始化 SpringMvc如何设计 DispatcherServlet类继承关系 MVC处理流程图如下: DispatcherServlet的工作大致可以分为两个部分&#xf…

Spring Boot 如何使用 Maven 实现多环境配置管理

Spring Boot 如何使用 Maven 实现多环境配置管理 实现多环境配置有以下几个重要原因: 适应不同的部署环境:在实际部署应用程序时,通常会有多个不同的部署环境,如开发环境、测试环境、生产环境等。每个环境可能需要不同的配置&…

Linux 命令tail

命令作用 tail 命令用于显示文件的末尾内容,默认显示文件的最后 10 行。通常情况下,tail 命令用于实时查看动态日志文件,可以使用 -f 参数跟踪文件内容的变化。 语法 tail [选项] [文件名] 参数 以 log.txt 为例演示参数效果 -n -linesK…

解决报错:找不到显卡

今天做实验碰到一个问题:torch找不到显卡: 打开任务管理器,独显直接没了,一度以为是要去修电脑了,突然想到上次做实验爆显存,屏蔽了gpu用cpu训练: import os os.environ["CUDA_DEVICE_OR…

【华为数据之道学习笔记】9-3构建以元数据为基础的安全隐私保护框架

以元数据为基础的安全隐私治理 有决策权的公司高层已经意识到安全隐私的重要性,在变革指导委员会以及各个高层会议纪要中都明确指明安全隐私是变革优先级非常高的主题,安全是一切业务的保障。 基于这个大前提,我们构建了以元数据为基础的安全…

【Spark精讲】记一个SparkSQL引擎层面的优化:SortMergeJoinExec

SparkSQL的Join执行流程 如下图所示,在分析不同类型的Join具体执行之前,先介绍Join执行的基本框架,框架中的一些概念和定义是在不同的SQL场景中使用的。 在Spark SQL中Join的实现都基于一个基本的流程,根据角色的不同&#xff0…

zookeeper未授权访问漏洞增加用户认证修复

linux机器中使用root命令行cd到zookeeper的bin文件夹下 启动zookeeper ./zkCli.sh # 启动zookeeper如果此时有未授权漏洞,可通过以下命令验证。 getAcl / #可以看到默认是world:anyone 就相当于无权限访问验证结果显示没有用户认证也可执行一些命令 增添用户认…

[GKCTF 2020]ez三剑客-eztypecho

[GKCTF 2020]ez三剑客-eztypecho 考点:Typecho反序列化漏洞 打开题目,发现是typecho的CMS 尝试跟着创建数据库发现不行,那么就搜搜此版本的相关信息发现存在反序列化漏洞 参考文章 跟着该文章分析来,首先找到install.php&#xf…

LeetCode第32题 : 最长有效括号

题目介绍 给你一个只包含 ( 和 ) 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 示例 1: 输入:s "(()" 输出:2 解释:最长有效括号子串是 "()" 示例 2&#xf…

DALLE·3的图片一致性火了!

DALLE3的图片一致性火了! DALLE3 利用种子值&GenID的一致性作图 防止大家不知道,这里拓展一下种子值,DALL每次生成的图像都会有一个新的、随机的种子值。我们可以利用种子值进行角色的变换 每次生成的图像都会有一个新的、随机的种子值…

主流大语言模型集体曝出训练数据泄露漏洞

内容概要: 安全研究人员发现,黑客可利用新的数据提取攻击方法从当今主流的大语言模型(包括开源和封闭,对齐和未对齐模型)中大规模提取训练数据。当前绝大多数大语言模型的记忆(训练数据)可被恢…

maven、springboot项目编译打包本地jar、第三方jar包

0. 引言 一般我们在maven项目中都是通过引入pom坐标的形式来引入第三方jar包,但某些场景下,第三方是直接提供的jar包文件,这就需要我们从本地引入第三方包并进行打包。所以我们今天来看下如何进行本地引入第三方包操作 1. 步骤 1、在项目下…

在pycharm中jupyter连接上了以后显示无此库,但是确实已经安装好了某个库,使用python可以跑,但是使用ipython就跑不了

今天遇到一个事情,就是用pycharm的jupyter时,连接不上,后来手动连接上了以后,发现环境好像不对。 一般来说,这里会是python3,所以里面的环境也是普通python的环境,并没有我下载的库,…

C#WPF界面MVVM框架下异步命令的启动和停止及绑定

框架采用CommunityToolkit.Mvvm&#xff0c;界面如下 View的XAML代码 <Window x:Class"WpfApp6.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns…

SpringBoot整合多数据源,并支持动态新增与切换

SpringBoot整合多数据源&#xff0c;并支持动态新增与切换 一、概述 在项目的开发过程中&#xff0c;遇到了需要从数据库中动态查询新的数据源信息并切换到该数据源做相应的查询操作&#xff0c;这样就产生了动态切换数据源的场景。为了能够灵活地指定具体的数据库&#xff0…