HarmonyOS 鸿蒙应用开发(九、还是蓝海,如何贡献第三方库)

快来共享第三方库吧,不但可以通过分享自己的成果,可以获得来自全球开发者的技术反馈和建议,提升自身技术能力,还有助于提高个人或团队在开源社区中的知名度和影响力。在流量时代和粉丝经济时代,获得曝光度和流量密码。

HarmonyOS 系统是当下热门的风,也是未来潜力巨大的万物互联的操作系统和技术底座。无意间浏览了下鸿蒙的开源第三方共享库,发现库好少啊,还是一片蓝海。那么你贡献的三方库可能会被很多人看到和使用,一方面促使你不断学习和进步,一方面获得流量和提升知名度。

概述

OHPM(OpenHarmony Package Manager)由OpenHarmony三方库中心仓网站、命令行工具、OpenHarmony三方库中心仓仓库三个部分组成,其功能如下:

  • OpenHarmony三方库中心仓网站(website):用于检索、查看所需 OpenHarmony 三方库信息,也可管理关于 ohpm 的个人配置
  • 命令行工具(cli):OpenHarmony 三方库的包管理工具
  • OpenHarmony三方库中心仓仓库(registry):存储三方库软件及其元数据的仓库

官方三方库地址 

地址:OpenHarmony三方库中心仓

鸿蒙生态三方库,是在鸿蒙系统上可重复使用的软件库,可帮助开发者重用技术资产快速开发鸿蒙生态应用、元服务,提升开发效率。根据不同的开发语言分为两种:

ArkTS/TS/JS 语言的三方库,可直接导入并使用。

C/C++语言的三方库,在应用开发中通过 NAPI的方式来使用。

鸿蒙生态三方库发布与使用完整的流程如下图所示:

鸿蒙生态中心仓聚合了丰富的鸿蒙生态开发三方库,方便开发者一站式获取。个人/组织贡献者将开发好的三方库通过 OHPM 发布到中心仓。

开发者通过如下方式即可方便快捷的使用三方库:

1.应用开发者登录鸿蒙生态中心仓,通过分类和关键字搜索需要的三方库信息。

2.应用开发者在应用开发时,通过 OHPM 包管理工具,将搜索到的三方库导入应用。

如何在项目中引入三方库

引用 OpenHarmony 三方库中心仓中的三方库

在 oh-package.json5 文件中声明三方库,以 @ohos/crypto-js 为例:

"dependencies": {"@ohos/crypto-js": "2.0.1"
}

依赖声明之后,执行以下命令,依赖三方库会存储在当前目录的 oh_modules 目录下。

 ohpm install

安装指定名称 pacakge_name 的三方库,执行以下命令,将自动在当前目录下的 oh-package.json5 文件中自动添加三方库依赖。

ohpm install <pacakge_name>

引用本地文件夹

在 oh-package.json5 文件中配置三方库文件信息:

"dependencies": {"foler": "file:../folder"
}

执行以下命令进行安装,依赖三方库会存储在当前目录的 oh_modules 目录下。

ohpm install

执行以下命令进行安装,将在 oh-package.json5 文件中自动添加依赖。

ohpm install ../folder

引用本地压缩包

在 oh-package.json5 文件中配置三方库文件信息:

"dependencies": {"package": "file:./package.har"
}

执行以下命令进行安装,依赖三方库会存储在当前目录的 oh_modules 目录下。

ohpm install

执行以下命令进行安装,将在 oh-package.json5 文件中自动添加依赖。

ohpm install ./package.har

如何在项目中使用三方库

如果将三方库安装到 oh_modules 目录中,就可以使用它了。如果您要创建模块,您可以直接引入三方库,以便在模块中使用此三方库。

示例:

import { CryptoJS } from '@ohos/crypto-js'var hash = CryptoJS.MD5("123456")

创建三方库

如何创建三方库?这里总结下。官网总结的这方面的资料很少,我一开始竟找不到创建三方库的入口。其实打开DevEco Studio,直接创建新工程,是没有单独创建库的模板的。所以新建个空的EntryAbility工程即可,然后再新建Module(只有新建了EntryAbility工程的前提下才能够新建Module,File->New->Module, 选择Static LIbrary模板)。

oh-package.json5介绍

这里是依赖库的一些发布信息。示例如下:

{"types": "","keywords": ["jsbn","OpenHarmony","HarmonyOS"],"author": "hihope","description": "jsbn(JavaScript BigInteger Library)是一个用于JavaScript环境中的大整数(BigInteger)计算的开源库。本软件是移植开源软件jsbn源码在OpenHarmony上进行功能适配。jsbn,javascript big number,","ohos": {"org": "opensource"},"main": "index.ts","repository": "https://gitee.com/yyz116/jsbn","type": "module","version": "1.0.0","dependencies": {},"tags": ["Tools","Security"],"license": "MIT","devDependencies": {},"name": "@yyz116/jsbn"
}

发布三方库

准备工作

首先到 OpenHarmony 三方库中心仓 注册账号,进入到个人中心页面。

1.执行 ssh-keygen -m PEM -t RSA -b 4096 -f your_key_path 生成公私钥对,再在个人中心 ->认证管理 -> 新增,填入公钥内容。

2.执行 ohpm config set key_path your_key_path 配置私钥路径。

3.个人中心 头像下方,点击复制发布码。

4.执行 ohpm config set publish_id your_publish_id 配置发布码。

准备工作完成。

OHPM 公钥

OpenHarmony 三方库中心仓 和 ohpm-cli 命令行工具的通信(查询、下载、发布),需要建立可信的安全通道,可以按如下步骤进行配置 OHPM 公钥。

在进行 publish 发布前,请先确保在OpenHarmony三方库中心仓上已经创建了帐号,且利用工具 ssh-keygen 生成公、私钥文件,可执行以下命令:

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

说明: ~/.ssh_ohpm/id_rsa为私钥文件id_rsa的文件路径,按照实际情况指定。指定的私钥存储目录必须存在。追加了.pub后缀的相应公钥文件会在与私钥相同的目录中生成。需要注意的是,必须得设置passphrase,否则后面推送库时会提示ohpm ERROR: You must config a encrypted private key using a non-empty passphrase.

ohpm ERROR: Private key without passphrase is not supported.
ohpm ERROR: You must config a encrypted private key using a non-empty passphrase.
ohpm ERROR: Not supported private key.
ohpm config set key_path ~/.ssh/ohpm/id_rsa

HAR 中需要导出的组件/接口,除了常规的 export 修饰符之外,还需要在 Index.ets 中进行声明。

import jsbn from "./src/main/js/index"export default jsbn;export { jsbn };

然后配置到 oh-packages.json5 文件中:

{ "main": "Index.ets" }

 其他的一些项目配置:

  1. README.md: 必须包含包的介绍和引用方式,如果没有包含安装命令 ohpm install xxx ,审核会被拒
  2. CHANGELOG.md : 更新记录
  3. LICENSE文件

完整介绍在这里: ohpm.openharmony.cn/#/cn/help/c…

发布

首先要构建 HAR 产物,选中依赖库的 module,工具栏 Build -》 Make,产物在依赖库 Module 的 build/default/outputs/default/xxx.har

执行发布命令,发布过程中会要求输入密码。

ohpm publish <HAR路径>

避坑指南

在创建库的时候,官方文档介绍只是说在Dev Studio的File->New->Module,选择Static Library就行了。但是需要新建Application, 如新建个Empty Ability的工程才行。不过也没关系,可以在这个空的Ability做些单元测试。

ssh-keygen 生成公、私钥文件的时候,注意必填passphrase。

还有就是发布的时候,不出意外的话,应该就发布成功了。但一般情况,肯定是会发生意外的。

如果你遇到这个错误:

说明你在 oh-package.json 文件中的 name 属性填写的组织未经过认证。比如我填写的是 @yyz116/jsbn,yyz116这个组织就是未经认证的。

但也不麻烦,申请一下就行。到 OpenHarmony 三方库中心仓 的 个人中心 -》组织管理 -》新增,然后等到审核通过。

还有就是library库的目录下,除了oh-package.json5文件不能少,另外CHANGELOG.md,LICENSE,README.md等文件也必须得有。

发布成功后,在OpenHarmony 三方库中心仓的管理界面会收到通知。 

单元测试框架使用

DevEco Studio支持应用/服务测试框架,包含HarmonyOS Test、HarmonyOS JUnit、OpenHarmony Test测试能力。提供测试用例执行能力,提供用例编写基础接口,输出测试结果,支持用户开发简洁易用的自动化测试脚本,支持代码覆盖率统计。

OpenHarmony Test:测试用例存放在ohosTest测试目录下,需要运行在设备或者模拟器上。OpenHarmony Test支持ArkTS/JS语言。适用范围:API 9~ Hvigor工程。

arkTS测试框架工程结构

在Deveco Studio开发工具新建的arkUI项目里,ohosTest目录负责存放测试代码及相关文件。测试模块所在路径如下图所示,测试相关文件及其功能如下表所示。其中default目录是新建ability项目时自动生成的,用户无需修改。test目录下存放各个测试文件,用户可以在此目录下自定义测试用例。

图1 用例路径一览图

表2 测试相关文件说明表

文件名称

功能

ohosTest

存放测试相关文件

jsbn-test.test.ets

测试文件,后缀为xxxx.test.ets

List.test.ets

测试用例加载文件,执行指定测试文件,新增的测试用例文件需要在这里新增引用

用例编写命名建议

测试工程目录及文件夹统一采用小写英文风格命名,不允许出现中文,参考“ohosTest”、“default”。

测试文件以“xx.test.ets”,前缀的“XX”名称为英文字母、数字、下划线的组合,以字母开头,遵从大驼峰命名法,例如“Example.test.ets”。测试文件在同一测试工程中应保持唯一,避免重复。

注意

不能使用逗号、横线、空格以及\ / : * ? “”< > | ()&等特殊字符。

测试套名与测试用例名同上命令规范,保持名称的唯一性。

用例编写基础语法

测试用例遵循 ES6 标准,describe 代表一个测试套, it 代表一条用例,describe 支持多层嵌套。

  • describe:定义一个测试套,支持两个参数: 测试套名称和测试套函数; describe 支持嵌套, 每个 describe 内均可以定义 beforeAll 、beforeEach 、afterEach 和 afterAll。
  • beforeAll:在测试套内定义一个预置条件,在所有测试用例开始前执行且仅执行一次,支持一个参数:预置动作函数。
  • beforeEach:在测试套内定义一个单元预置条件,在每条测试用例开始前执行,执行次数与 it 定义的测试用例数一致,支持一个参数:预置动作函数。
  • afterEach:在测试套内定义一个单元清理条件,在每条测试用例结束后执行,执行次数与 it 定义的测试用例数一致,支持一个参数:清理动作函数。
  • afterAll:在测试套内定义一个清理条件,在所有测试用例结束后执行且仅执行一次,支持一个参数:清理动作函数。
  • it:定义一条测试用例,支持三个参数:用例名称,过滤参数和用例函数。
  • expect:支持 bool 类型判断等多种断言方法。

写在最后

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注博主,同时可以期待后续文章ing🚀,不定期分享原创知识。
  • 想要获取更多完整鸿蒙最新VIP学习资料,请关注猫哥公众号【猫青年】,回复“鸿蒙”获取

我的鸿蒙库

一缕阳光116/jsbn

其他资源

OpenHarmony三方库中心仓

OpenHarmony_har_usage.md · OpenHarmony-TPC/docs - Gitee.com

HarmonyOS 鸿蒙开发测试:单元测试框架-CSDN博客

HarmonyOS ArkUI 框架的实现原理和落地实践 - 知乎

https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/jsbn/index.d.ts

https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/sm-crypto

DevEco Marketplace

如何发布鸿蒙三方库 - 掘金

如何创建 HAR 来自 OpenHarmony 网站

发布 HAR 来自 HarmonyOS 网站

创建及发布三方库  OpeOpenHarmony三方库中心仓rmony三方库中心仓

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

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

相关文章

(已解决)vueQQ邮箱注册发送验证码前端设计,如何发送验证码设计倒计时

我们之前已经通过前端测试成功完成qq邮箱动态验证码发送&#xff08;未使用redis&#xff0c;我准备自己了解完后&#xff0c;后期有时间补上&#xff09; 衔接文章&#xff1a; 1&#xff1a; spingboot 后端发送QQ邮箱验证码 2&#xff1a; 这段代码建设图形化界面 <di…

CentOS7搭建k8s-v1.28.6集群详情

文章目录 1.灌装集群节点操作系统1.1 设置hosts1.2 设置nameserver1.3 关闭防火墙1.4 关闭Selinux1.5 关闭Swap分区1.6 时间同步1.7 调整内核参数1.8 系统内核升级 2.安装Docker2.1 卸载旧Docker2.2 配置Docker软件源2.3 安装Docker 3.部署Kubernets集群3.1 设置 K8s 软件源3.2…

2024.1.26力扣每日一题——边权重均等查询

2024.1.26 题目来源我的题解方法一 使用dfs对每一组查询都求最近公共祖先&#xff08;会超时&#xff0c;通不过&#xff09;方法二 不需要构建图&#xff0c;直接在原始数组上进行求最大公共祖先的操作。 题目来源 力扣每日一题&#xff1b;题序&#xff1a;2846 我的题解 …

Python绘制随机游走图

Python绘制随机游走图 文章目录 Python绘制随机游走图随机游走图随机游走图的意义Python实现随机游走图Python随机游走图案例random_walk.pymain.py运行结果图结果一结果二结果三结果四结果五 总结 随机游走图 随机游走图通常指的是一种图论中的模型&#xff0c;其中节点在图中…

基于BiLSTM-CRF模型的分词、词性标注、信息抽取任务的详解,侧重模型推导细化以及LAC分词实践

基于BiLSTM-CRF模型的分词、词性标注、信息抽取任务的详解,侧重模型推导细化以及LAC分词实践 1.GRU简介 GRU(Gate Recurrent Unit)门控循环单元,是[循环神经网络](RNN)的变种种,与 LSTM 类似通过门控单元解决 RNN 中不能长期记忆和反向传播中的梯度等问题。与 LSTM 相…

华为视频监控接入到视频监控平台 (华为网路监控摄像机IPC和华为视频节点设备VCN)

目 录 一、设备介绍 1.1 华为VCN介绍 1.2 AS-V1000视频监控平台介绍 1.3 平台服务器配置说明 二、安装、配置HW_IVS软件 2.1下载安装HW_IVS软件 2.2登录HW_IVS 2.3共享到外域 三、配置华为外域参数 3.1 PCG模块设置 3.2通信协议GBT28181配置 3.3传…

netty-websocket扩展协议及token鉴权补充

文章源码&#xff1a;gitee 源码部分可以看上一篇文章中的源码分析netty-websocket 鉴权token及统一请求和响应头&#xff08;鉴权控制器&#xff09; 最近刚好没事&#xff0c;看到有朋友说自定义协议好搞&#xff0c;我就想了想&#xff0c;发现上面那种方式实现确实麻烦&…

远程桌面使用Pr剪视频

要远程访问高性能计算机并使用 Pr&#xff08;Adobe Premiere Pro&#xff09;进行视频编辑&#xff0c;您可以考虑使用流畅且响应迅速的远程桌面软件。您可以考虑以下选项。 Splashtop Business Access Performance Splashtop 以其高性能远程桌面解决方案而闻名&#xff0c;…

HarmonyOS远程真机调试方法

生成密钥库文件 打开DevEco Studio&#xff0c;点击菜单栏上的build&#xff0c; 填一些信息点击&#xff0c;没有key的话点击new一个新的key。 生成profile文件 AppGallery Connect (huawei.com) 进入该链接网站&#xff0c;点击用户与访问将刚生成的csr证书提交上去其中需…

地下停车场智慧监查系统:科技让停车更智能

随着城市化进程的加速&#xff0c;停车难成为了许多城市居民的痛点。而地下停车场作为解决停车难问题的重要手段&#xff0c;其安全性和便捷性也成为了人们关注的焦点。为了解决这一问题&#xff0c;山海鲸可视化搭建的地下停车场智慧监查系统应运而生&#xff0c;为车主们提供…

【极数系列】Flink集成KafkaSink 实时输出数据(11)

文章目录 01 引言02 连接器依赖2.1 kafka连接器依赖2.2 base基础依赖 03 使用方法04 序列化器05 指标监控06 项目源码实战6.1 包结构6.2 pom.xml依赖6.3 配置文件6.4 创建sink作业 01 引言 KafkaSink 可将数据流写入一个或多个 Kafka topic 实战源码地址,一键下载可用&#xf…

查大数据检测到风险等级太高是怎么回事?

随着金融风控越来越多元化&#xff0c;大数据作为新兴的技术被运用到贷前风控中去了&#xff0c;不少人也了解过自己的大数据&#xff0c;但是由于相关知识不足&#xff0c;看不懂报告&#xff0c;在常见的问题中&#xff0c;大数据检测到风险等级太高是怎么回事呢?小易大数据…

Oracle systemstate、gdb、dbx介绍

当数据库出现严重的性能问题或者hang了的时候&#xff0c; 可能最常用的办法就是重启数据库&#xff0c;简单有效解决问题&#xff1b;但是重启后如何追踪问题的根本原因成了难题&#xff0c;很多信息随着重启也消失不见了&#xff0c;让追查问题变的十分棘手&#xff0c;这时就…

别具一格,质感拉满 | PITAKA苹果Apple Watch彩碳表带开箱

别具一格&#xff0c;质感拉满 | PITAKA苹果Apple Watch彩碳表带开箱 我是在前年的时候购买的目前手头这款Apple Watch Series7&#xff0c;因为是购买的Nike版&#xff0c;所以可以看到它的表带标配为透气孔的运动型表带。 &#x1f53a;耐克版的透气孔表带虽说在一定程度上解…

OpenStack安全策略提升

1.规划节点 IP主机名节点192.168.100.10controllerOpenStack控制节点192.168.100.20computeOpenStack计算节点 2.环境准备​ 使用OpenStack平台的两台节点&#xff0c;节点规划表中的IP地址为作者的IP地址&#xff0c;在进行实操案例的时候&#xff0c;按照自己的环境规划网络…

Three.js学习6:透视相机和正交相机

一、相机 相机 camera&#xff0c;可以理解为摄像机。在拍影视剧的时候&#xff0c;最终用户看到的画面都是相机拍出来的内容。 Three.js 里&#xff0c;相机 camera 里的内容就是用户能看到的内容。从这个角度来看&#xff0c;相机其实就是用户的视野&#xff0c;就像用户的眼…

【cmu15445c++入门】(6)c++的迭代器

一、迭代器 C 迭代器是指向容器内元素的对象。它们可用于循环访问该容器的对象。我们知道迭代器的一个示例是指针。指针可用于循环访问 C 样式数组. 二、代码 自己实现一个迭代器 // C iterators are objects that point to an element inside a container. // They can be…

学习与学习理论 - 2024教招

一 学习的概述 1 学习的概念及其内涵 &#xff08;1&#xff09;学习的概念 学习是个体在特定情境下由于练习和反复经验而产生的行为或行为潜能的比较持久的变化。 人类的学习和动物学习的本质区别 人类学习是一个积极、主动的建构过程;人类的学习是掌握社会历史经验和个体经…

University Program VWF仿真步骤__全加器

本教程将以全加器为例&#xff0c;选择DE2-115开发板的Cyclone IV EP4CE115F29C7 FPGA&#xff0c;使用Quartus Lite v18.1&#xff0c;循序渐进的介绍如何创建Quartus工程&#xff0c;并使用Quartus Prime软件的University Program VWF工具创建波形文件&#xff0c;对全加器的…

生物素-PEG4-酪胺,Biotin-PEG4-TSA,应用于酶联免疫吸附实验

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;生物素-PEG4-酪胺&#xff0c;Biotin-PEG4-Tyramide&#xff0c;Biotin-PEG4-TSA 一、基本信息 产品简介&#xff1a;Biotin PEG4 Tyramine is a reagent used for tyramine signal amplification (TSA) through ca…