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

打印 上一主题 下一主题

主题 1001|帖子 1001|积分 3003

快来共享第三方库吧,不但可以通太过享自己的成果,可以得到来自全球开发者的技术反馈和建议,提升自身技术本领,还有助于提高个人或团队在开源社区中的知名度和影响力。在流量期间和粉丝经济期间,得到曝光度和流量密码。
  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 为例:
  1. "dependencies": {
  2.    "@ohos/crypto-js": "2.0.1"
  3. }
复制代码
依赖声明之后,执行以下命令,依赖三方库会存储在当前目次的 oh_modules 目次下。
  1. ohpm install
复制代码
安装指定名称 pacakge_name 的三方库,执行以下命令,将主动在当前目次下的 oh-package.json5 文件中主动添加三方库依赖。
  1. ohpm install
  2. <pacakge_name>
复制代码
引用本地文件夹
在 oh-package.json5 文件中配置三方库文件信息:
  1. "dependencies": {
  2.    "foler": "file:../folder"
  3. }
复制代码
执行以下命令举行安装,依赖三方库会存储在当前目次的 oh_modules 目次下。
  1. ohpm install
复制代码
执行以下命令举行安装,将在 oh-package.json5 文件中主动添加依赖。
  1. ohpm install
  2. ../folder
复制代码
引用本地压缩包
在 oh-package.json5 文件中配置三方库文件信息:
  1. "dependencies": {
  2.    "package": "file:./package.har"
  3. }
复制代码
执行以下命令举行安装,依赖三方库会存储在当前目次的 oh_modules 目次下。
  1. ohpm install
复制代码
执行以下命令举行安装,将在 oh-package.json5 文件中主动添加依赖。
  1. ohpm install
  2. ./package.har
复制代码
如何在项目中使用三方库

如果将三方库安装到 oh_modules 目次中,就可以使用它了。如果您要创建模块,您可以直接引入三方库,以便在模块中使用此三方库。
示例:
  1. import { CryptoJS } from '@ohos/crypto-js'
  2. var hash = CryptoJS.MD5("123456")
复制代码
创建三方库

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

这里是依赖库的一些发布信息。示例如下:
  1. {
  2.   "types": "",
  3.   "keywords": [
  4.     "jsbn",
  5.     "OpenHarmony",
  6.     "HarmonyOS"
  7.   ],
  8.   "author": "hihope",
  9.   "description": "jsbn(JavaScript BigInteger Library)是一个用于JavaScript环境中的大整数(BigInteger)计算的开源库。本软件是移植开源软件jsbn源码在OpenHarmony上进行功能适配。jsbn,javascript big number,",
  10.   "ohos": {
  11.     "org": "opensource"
  12.   },
  13.   "main": "index.ts",
  14.   "repository": "https://gitee.com/yyz116/jsbn",
  15.   "type": "module",
  16.   "version": "1.0.0",
  17.   "dependencies": {},
  18.   "tags": [
  19.     "Tools",
  20.     "Security"
  21.   ],
  22.   "license": "MIT",
  23.   "devDependencies": {},
  24.   "name": "@yyz116/jsbn"
  25. }
复制代码
发布三方库

预备工作
首先到 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 天生公、私钥文件,可执行以下命令:
  1. 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.
  1. ohpm ERROR: Private key without passphrase is not supported.
  2. ohpm ERROR: You must config a encrypted private key using a non-empty passphrase.
  3. ohpm ERROR: Not supported private key.
复制代码
  1. ohpm config set key_path ~/.ssh/ohpm/id_rsa
复制代码
HAR 中需要导出的组件/接口,除了通例的 export 修饰符之外,还需要在 Index.ets 中举行声明。
  1. import jsbn from "./src/main/js/index"
  2. export default jsbn;
  3. export { jsbn };
复制代码
然后配置到 oh-packages.json5 文件中:
{ "main": "Index.ets" }
 其他的一些项目配置:

  • README.md: 必须包含包的先容和引用方式,如果没有包含安装命令 ohpm install


    xxx ,审核会被拒
  • CHANGELOG.md : 更新记录
  • 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
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立聪堂德州十三局店

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表