HarmonyOS 鸿蒙Next中贡献和使用第三方库:OHPM的全面指南

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next中贡献和使用第三方库:OHPM的全面指南
<markdown _ngcontent-jwe-c147="" class="markdownPreContainer">

目录

  • 前言
  • OHPM 概述
  • 为什么要在 HarmonyOS 中贡献第三方库
  • 鸿蒙生态第三方库
  • 如何在项目中引入第三方库
  • 如何在项目中使用第三方库
  • 如何创建第三方库
    • 创建步骤
    • oh-package.json5 介绍
  • 发布第三方库
    • 准备工作
    • 生成公私钥对
    • 配置私钥路径
    • 复制发布码
    • 配置发布码
    • 构建 HAR 产物
    • 执行发布命令
  • 避坑指南
  • 单元测试框架使用
    • 工程结构
    • 命名建议
    • 基础语法

前言

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

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

OHPM 概述

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

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

官方三方库地址:OpenHarmony 三方库中心仓

为什么要在 HarmonyOS 中贡献第三方库

  1. 获得技术反馈和建议:通过分享你的成果,可以获得来自全球开发者的技术反馈和建议,提升自身技术能力。
  2. 提高知名度和影响力:贡献的三方库可能会被很多人看到和使用,这有助于提高个人或团队在开源社区中的知名度和影响力。
  3. 促进生态系统发展:多样的第三方库可以丰富 HarmonyOS 的生态系统,促进整个社区的发展。

鸿蒙生态第三方库

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

  • ArkTS/TS/JS 语言的三方库:可直接导入并使用。
  • C/C++ 语言的三方库:在应用开发中通过 NAPI 的方式使用。

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

鸿蒙生态三方库发布与使用流程图

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

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

  1. 应用开发者登录鸿蒙生态中心仓,通过分类和关键字搜索需要的三方库信息。
  2. 应用开发者在应用开发时,通过 OHPM 包管理工具,将搜索到的三方库导入应用。

如何在项目中引入第三方库

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

oh-package.json5 文件中声明三方库,以 [@ohos](/user/ohos)/crypto-js 为例:

深色代码主题
复制
{
  "dependencies": {
    "[@ohos](/user/ohos)/crypto-js": "2.0.1"
  }
}

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

深色代码主题
复制
ohpm install

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

深色代码主题
复制
ohpm install <package_name>
引用本地文件夹

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

深色代码主题
复制
{
  "dependencies": {
    "folder": "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](/user/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 上进行功能适配。",
  "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](/user/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
构建 HAR 产物

选中依赖库的 Module,工具栏 Build -> Make,产物在依赖库 Module 的 build/default/outputs/default/xxx.har

执行发布命令

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

深色代码主题
复制
ohpm publish <HAR路径>

避坑指南

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

生成公私钥对时

注意必填 passphrase

发布时

如果遇到以下错误:

深色代码主题
复制
ohpm ERROR: You must config a encrypted private key using a non-empty passphrase.
ohpm ERROR: Not supported private key.

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

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

此外,library 库的目录下除了 oh-package.json5 文件不能少,另外 CHANGELOG.mdLICENSEREADME.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 目录下存放各个测试文件,用户可以在此目录下自定义测试用例。

测试工程目录及文件夹

测试相关文件说明表
文件名称 功能
ohosTest 存放测试相关文件
jsbn.test.ets 测试文件,后缀为 xxxx.test.ets
List.test.ets 测试用例加载文件,执行指定测试文件
index.test.ets 新增的测试用例文件需要在这里新增引用
用例编写命名建议
  • 测试工程目录及文件夹:统一采用小写英文风格命名,不允许出现中文,参考“ohosTest”、“default”。
  • 测试文件:以“xx.test.ets”命名,前缀的“XX”名称为英文字母、数字、下划线的组合,以字母开头,遵从大驼峰命名法,例如“Example.test.ets”。测试文件在同一测试工程中应保持唯一,避免重复。
  • 不能使用:逗号、横线、空格以及 \ / : * ? " " < > | ()& 等特殊字符。
  • 测试套名与测试用例名:同上命令规范,保持名称的唯一性。
用例编写基础语法

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

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

示例:

深色代码主题
复制
describe('CryptoJS Test Suite', () => {
  beforeAll(() => {
    console.info('Before all tests');
  });

beforeEach(() => { console.info(‘Before each test’); });

it(‘should generate MD5 hash correctly’, () => { const hash = CryptoJS.MD5(‘123456’); expect(hash.toString()).toEqual(‘e10adc3949ba59abbe56e057f20f883e’); });

afterEach(() => { console.info(‘After each test’); });

afterAll(() => { console.info(‘After all tests’); }); });


</markdown>

更多关于HarmonyOS 鸿蒙Next中贡献和使用第三方库:OHPM的全面指南的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next中贡献和使用第三方库:OHPM的全面指南的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next中贡献和使用第三方库:OHPM的全面指南

在HarmonyOS鸿蒙Next系统中,OHPM(OpenHarmony Package Manager)是用于管理和使用第三方库的重要工具。以下是关于如何在HarmonyOS鸿蒙Next中贡献和使用OHPM的全面指南:

  1. 贡献第三方库

    • 开发者需首先确保所贡献的库与HarmonyOS鸿蒙Next兼容。
    • 登录OHPM官方仓库,按照规范提交库信息,包括库的描述、版本、依赖关系等。
    • 提交后,OHPM团队将对库进行审核,审核通过后,库将被纳入官方仓库。
  2. 使用第三方库

    • 在HarmonyOS鸿蒙Next项目中,通过OHPM命令行工具搜索并安装所需的第三方库。
    • 命令行示例:ohpm install <库名>,其中<库名>为所需库的名称。
    • 安装完成后,开发者可在项目中直接引用该库,进行开发。
  3. 更新与删除库

    • 使用ohpm update <库名>命令更新已安装的库。
    • 使用ohpm uninstall <库名>命令删除不再需要的库。

OHPM提供了便捷的方式管理HarmonyOS鸿蒙Next中的第三方库,提升了开发效率。但请注意,在使用和贡献库时,需遵循OHPM的相关规定和指南。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部