HarmonyOS开发:超详细介绍如何开源静态共享包,实现远程依赖

前言

当我们开发了一个独立的功能,想让他人进行使用,一般的方式就是开源出去,有源码的方式,也有文件包的形式,当然了也有远程依赖的方式,比如在Android中,我们可以提供源码,也可以打包成一个aar,当然了也可以maven仓库形式的远程依赖。

无论是内部多项目形式的开发,还是开源供他人使用,无疑远程依赖的方式是最方便的,有了更改,只需变动版本号就可以了,当然了,如果是内部,仅仅是单一项目使用,大可不必采用远程依赖,直接在放入到项目中开发即可。

需要注意的是,静态共享包的远程发布和是否是NEXT系统没有直接的关联,你是Api9,也是可以发布至远程的,当然了,考虑到NEXT的到来,很多Api有些许的差异,也希望大家可以基于NEXT进行发布。

本篇文章分享如下:

1、如何打一个静态共享包

2、静态共享包上传前的文件配置

3、上传一个静态共享包

4、静态共享包的使用、更新与删除

5、总结

一、如何打一个静态共享包

这个就太简单了,在之前的文章HarmonyOS开发:走进静态共享包的依赖与使用中,关于静态包的创建以及使用,做了很详细的介绍了,有兴趣的同学可以查看,当然了,这里也简单的概述一下。

1、创建静态共享包

在项目右键,新建Module:

选择Static Library:

填写Module名,选择设备,目前支持三种设备,手机、平板、2和1的平板电脑。

创建完成。

2、编译静态共享包

静态共享包创建完成之后,大家就可以编写自己的代码了,可以包含代码、C++库、资源和配置文件,具体的功能性使用,大家可以看之前分享的文章,由于NEXT和之前的版本有部分语法上的区别,大家在NEXT版本上需要注意。

这里有一点需要注意,那就是混淆方式,之前的混淆方式,build-profile.json5文件中添加artifactType属性为obfuscation,但是在NEXT版本之后就不支持了

NEXT版本混淆如下,在模块级的build-profile.json5配置文件中开启混淆功能,有点类似于Android Studio里的混淆方式。

{"apiType": "stageMode",..."buildOptionSet": [{"name": "release","arkOptions": {"obfuscation": {"ruleOptions": {"enable": true,               // true表示进行混淆,false表示不进行混淆。默认值为true"files": ["./obfuscation-rules.txt"  // 混淆规则文件]}}}},],...
}

一切功能都开发完成之后,点击当前的静态共享包,选择Build中第一个选项。

编译之后,在静态共享包下,如下的位置,就会产生一个har包,证明就编译成功了,这个就是我们最终要上传的包。

二、静态共享包上传前的文件配置

在OpenHarmony三方库中心仓中,仅仅上传一个har包,是不能上传成功的,必须得有针对静态共享包的描述也就是README文件,更新版本信息CHANGELOG 文件,还有就是开源协议license,这些都是必要的。

1、README文件

和大多数开源项目一样,主要介绍静态共享包的功能,使用方式等等,当然,大家也可以去OpenHarmony三方库中心仓看看别人是如何写的,当然了,有条件的,可以写两份,一份中文,一份英文。

这些信息,主要展示在描述信息里,如下所示:

2、CHANGELOG 文件

CHANGELOG文件也是md文件,主要记录当前的更新版本信息,如下所示:

以上呢,主要展示在版本信息里,如下所示:

3、开源协议license

LICENSE 文件的存在对于三方库开源尤其重要,因为它确保了软件的自由和开放,同时也允许作者保留某些权利,支持大部分的开源协议。

除了以上之外呢,还有一处是比较重要的,那就静态共享包的基本信息填写,会展示在右侧的模块里:

主要是oh-package.json5文件,包含了静态包的名字,版本,描述信息等。

{"name": "名字","version": "版本号","description": "描述信息","main": "Index.ets","author": "作者","license": "Apache-2.0","keywords": ["搜索关键词"],"homepage": "主页地址","repository": "仓库地址","dependencies": {}
}

三、上传一个静态共享包

当一个静态共享包,所有的准备工作完成之后,我们就可以上传远程仓库了,也就是OpenHarmony三方库中心仓。

1、注册账号

第一步就是注册账号,地址是:OpenHarmony三方库中心仓。

2、新增组织管理

也就是以后你的开源包上传到哪个组织下,这个有审核,之前审核特别慢,但是最近审核还是很快的。

组织名称,一般简单的英文即可。

3、生成公、私钥

打开命令行窗口,执行如下命令,your_key_path就是你要生成到哪个路径下:

ssh-keygen -m PEM -t RSA -b 4096 -f  your_key_path

中间有一步需要设置密码,这个密码一定要记住,以后发布都会用到。

执行成功后,会生成两个文件,一个公钥一个私钥,如下所示:

4、新增OHPM公钥

回到OpenHarmony三方库中心仓,点击个人中心,点击认证管理,新增即可。

点击新增之后,把第3步中生成的公钥,也就是.pub文件内容复制过来,保存即可。

5、配置私钥文件

同样的,打开命令行工具,执行如下命令,your_key_path就是私钥文件路径。

ohpm config set key_path your_key_path

6、复制发布码并配置

去OpenHarmony三方库中心仓个人中心中,点击复制发布码。

打开命令行工具,设置发布码,your_publish_id就是刚才复制的发布码。

ohpm config set publish_id your_publish_id

7、发布HAR

执行如下命令,HAR路径就是打出的静态包路径。

ohpm publish HAR路径  

执行完命令后,输入配置的秘钥密码即可:

命令执行成功之后,就可以在个人中心的消息里,看到审核记录。

审核成功之后,在OpenHarmony三方库中心仓里就可以看到了,之后就可以远程依赖使用了。

四、静态共享包的使用、更新与删除

1、使用静态共享包

静态共享包,发布成功,并且审核通过之后,那么使用,则是非常的简单,只需要在oh-package.json5文件里的dependencies属性里,把远程依赖即可,当然了,这里需要进行同步项目。

这种远程依赖的方式,是不是要比本地har包或者Module的方式要简单的多了。需要注意的是,关于三方库的名字,需要规划化:

OpenHarmony 三方库命名规范:格式如 @group/package_name,全局唯一;
除了 @ 和 / 之外,group 和 package_name 只能由小写字母、数字、_和 - 组成;
总长度小于等于 128 个字符;
须以字母开头;
不能是 ArkTS 的保留关键字。

当然了,除了以上的手动输入依赖之外,你也可以进行命令操作,会自动的在oh-package.json5文件里的dependencies属性里进行配置。

ohpm install <package_name> 

2、更新静态共享包

更新有两种方式,一种是手动更改版本号,也就是在oh-package.json5文件里的dependencies里进行手动更改,重新同步项目即可,另一种就是命令操作。

更新所有三方库:

ohpm update

更新指定名称的三方库:

ohpm update <package_name>

3、移除静态共享包

移除,最简单的方式就是在oh-package.json5文件里的dependencies里进行手动移除,然后同步项目即可。当然,你也可以执行命令移除。

移除单个:

ohpm uninstall <package_name>

移除所有三方库:

ohpm uninstall

五、总结

有的同学可能会有疑问,静态共享包中的代码和资源跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份相同拷贝,而动态共享包可以让多个HAP共享同一公共资源代码,极大程度上减少了包体积,为什么不把动态共享包上传至远程,进行依赖呢?

可以告诉大家的是,是因为目前官方还不支持,当下远程依赖仅支持静态共享包的发布,不过呢,在私仓可以使用;毕竟动态共享包只支持在应用内共享,不支持跨应用共享,可能也是趋于这一层原因。

好了,本篇文章就到这里,下一篇,我们探究下共享包的私服搭建和使用。

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

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

相关文章

SQLiteC/C++接口详细介绍sqlite3_stmt类(一)

返回目录&#xff1a;SQLite—免费开源数据库系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类简介 下一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;二&#xff09; ​ 序言&#xff1a; 本文开始了SQLite的第二个类的详细介绍…

Qt 容器类控件

Group Box 使用 QGroupBox 实现一个带有标题的分组框可以把其他的控件放到里面作为一组&#xff0c;这样看起来能更好看一点. 核心属性 属性说明title分组框的标题alignment分组框内部内容的对齐方式flat是否是 “扁平” 模式checkable是否可选择. 设为 true&#xff0c;则在…

鸿蒙Harmony应用开发—ArkTS-高级组件:@ohos.advertising.AdComponent (非全屏广告展示组件))

本模块提供展示非全屏广告的能力。 说明&#xff1a; 本模块首批接口从API Version 11开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import { AdComponent } from ohos.advertising.AdComponent; AdComponent AdComponent(ads: Ar…

webpack5零基础入门-12搭建开发服务器

1.目的 每次写完代码都需要手动输入指令才能编译代码&#xff0c;太麻烦了&#xff0c;我们希望一切自动化 2.安装相关包 npm install --save-dev webpack-dev-server 3.添加配置 在webpack.config.js中添加devServer相关配置 /**开发服务器 */devServer: {host: localhos…

华为中心AP 配置入侵防御实验

配置入侵防御示例 组网图形 图1 入侵防御组网图 组网需求配置思路操作步骤中心AP的配置文件 组网需求 如图1所示&#xff0c;某企业部署了WLAN网络&#xff0c;内网用户可以访问Internet的Web服务器。现需要在中心AP上配置入侵防御功能&#xff0c;具体要求如下&#xff1a; 保…

Bert的一些理解

Bert的一些理解 Masked Language Model (MLM)Next Sentence Prediction (NSP)总结 参考链接1 参考链接2 BERT 模型的训练数据集通常是以预训练任务的形式来构建的&#xff0c;其中包括两个主要任务&#xff1a;Masked Language Model (MLM) 和 Next Sentence Prediction (NSP)。…

GPT-4与Claude3、Gemini、Sora:AI领域的技术创新与突破

【最新增加Claude3、Gemini、Sora、GPTs讲解及AI领域中的集中大模型的最新技术】 2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚…

【PG数据库】CentOS 7 安装 PostgreSQL 14

1 CentOS 7 安装 PostgreSQL 14 1.1下载离线安装包 下载方式&#xff1a;利用离线下载方式在虚拟机中安装PostgreSQL 14 下载链接&#xff1a; https://yum.postgresql.org/14/redhat/rhel-7-x86_64/repoview/postgresqldbserver14.group.html 依次进入下载&#xff1a; 1.…

深度访谈:OpenAI缘何要进军光量子领域

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 编辑丨王珩 编译/排版丨沛贤 深度好文&#xff1a;2000字丨12分钟阅读 据报道&#xff0c;人工智能巨头最近为其团队增添了一位新成员&#xff1a;Ben Bartlett&#xff0c;他是PsiQuantum的前…

【QT+QGIS跨平台编译】之八十四:【QGIS_Gui跨平台编译】—【错误处理:未实例化QgsMapLayer - QgsHighlight】

文章目录 一、未实例化QgsMapLayer二、错误处理 一、未实例化QgsMapLayer 报错信息&#xff1a; 二、错误处理 第31行修改为&#xff1a; #include "qgsmaplayer.h"

HarmonyOS NEXT应用开发之多文件下载监听案例

介绍 多文件下载监听在应用开发中是一个非常常见的需求。本示例将介绍如何使用request上传下载模块实现多文件下载监听&#xff0c;如监听每个文件下载任务的进度&#xff0c;任务暂停&#xff0c;下载完成等下载情况。每个应用最多支持创建10个未完成的任务&#xff0c;相关规…

GB28181视频汇聚EasyCVR平台接入海康Ehome设备,设备在线但是视频无法播放是什么原因?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

云原生相关知识

一、kubernetes 1 概述 Kubernetes&#xff08;也称 k8s 或 “kube”&#xff09;是一 个​​开源​​的容器编排平台&#xff0c;可以自动完成在部署、管理和扩展容器化应用过程中涉及的许多手动操作。 我们常说的编排的英文单词为 “Orchestration”&#xff0c;它常被解释…

苹果意将Gemini引入iPhone;英伟达发布新AI GPU;Grok正式开源

苹果正在谈判将 Gemini 引入 iPhone Mark Gurman 报道&#xff0c;苹果正在谈判将 Google 的生成式 AI 大模型 Gemini 引入 iPhone。 知情人士透露&#xff0c;两家公司正在积极谈判&#xff0c;让苹果获得 Gemini 授权&#xff0c;为今年 iPhone 软件的一些新功能提供动力。苹…

vim | vim多标签之间的跳转

比如有两个标签&#xff1a; 按 Ctrl o 会直接跳转到上一次打开的文件&#xff0c;这样可能不够直观&#xff0c;可以用 :ls 进行查看buff&#xff0c;如下&#xff1a; 可以看到 %a 的是当前正在编辑的 # 是按 Ctrl o 会跳转到的 当然也可以用 这种命令进行跳转&#xff1…

基于SpringBoot+Redis实现接口限流

前言 业务中需要对一些接口进行限流处理&#xff0c;防止机器人调用或者保证服务质量&#xff1b; 实现方式 基于redis的lua脚本 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis&…

stm32之GPIO电路介绍

文章目录 1 GPIO介绍2 GPIO的工作模式2.1 浮空输入2.2 上拉输入2.3 下拉输入2.4 模拟输入2.5 开漏输出2.6 推挽输出2.7 复用开漏输出2.8 复用推挽输出2.9 其他 3 应用方式4 常用库函数 1 GPIO介绍 保护二极管&#xff1a;保护引脚&#xff0c;让引脚的电压位于正常的范围施密特…

【Linux(1)】Linux的一些基本指令(补充上一篇)

思维导图 学习内容 通过上面的学习目标&#xff0c;我们可以列出要学习的内容&#xff1a; linux的一些指令&#xff1a;cd mkdir cp touch which rm cat alias 一些基本的概念&#xff1a;指令的概念&#xff0c;用户家目录是什么...... 一、Linux的一些指令 1.1 重新认识…

【机器学习】无监督学习算法之:自编码器

自编码器 1、引言2、自编码器2.1 定义2.2 原理2.3 实现方式2.4 算法公式2.5 代码示例 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c; 今天可以讲一讲 自编码器嘛 小鱼&#xff1a;请说清楚&#xff0c;是什么编码器&#xff1f; 小屌丝&#xff1a;自编码器 小鱼&#…

除了大众点评,中国未来还会产生多少家这样的人工智能公司? - 学习Yelp公司的软件工程-评价和推荐系统

原文作者&#xff1a;Jason Sleight&#xff0c;ML&#xff08;Machine Learning&#xff09;平台集团技术负责人 翻译&#xff1a;数字化营销工兵 了解数据是Yelp成功的重要组成部分。为了将我们的消费者与当地优秀的企业联系起来&#xff0c;我们每天为各种任务提供数百万条建…