当前位置: 首页 > ai >正文

HarmonyOS NEXT 系列之规范开发三方共享包

规范开发三方共享包

  • 〇、前言
  • 一、了解评分规则
  • 二、规范开发共享包
    • 1、规范开源协议名称写法
    • 2、将 oh-package.json5 文件补充完整
    • 3、补充 example 目录
    • 4、基本的 README 和 CHANGELOG
  • 三、ohpm 包的源码隔离特性

〇、前言

对于开发者来说,对外发布代码制品,主要有两种形式:构建成完整的应用上架到相关软件商店中,构建成三方软件包发布到中心仓库,鸿蒙生态这边也是如此,只不过,对于个人开发者来说,上架到华为的鸿蒙应用商店并不容易,因为必须提供软著证书等有效证件,而这个软著的申请本来就很费事,相比之下,发布共享包到 ohpm 中心仓库,就显得简单可行了。

在这里插入图片描述
如图所示,我已经成功上架两个软件包到 ohpm 中心仓库上了,因而积累了一定的经验,下面就让我向大家阐述如何规范地开发鸿蒙共享包。

一、了解评分规则

在这里插入图片描述
如上所述,ohpm 中心仓有一套针对每个发布到仓库中的软件包的评分规则,满分 50 分,共 5 种中得分规则。而我已经上架的软件包,并未针对得分规则进行适配开发,因而只获得了 15 分,也因此我重新发布了 lib_easyrouter v1.1.0(正在上架审核)。

评分高的软件包,想必理所当然地会获得更高的排名,他人在搜索的时候,更容易出现在第一分页中。

总的来说,遵循 ohpm 软件包评分规则,既是我们提高自己软件包的排名的方法,也是我们进行规范开发的依据。

二、规范开发共享包

1、规范开源协议名称写法

既然,ohpm 中心仓有针对开源协议的评分点,那么,我们在选择的时候,就要有的放矢;此前,我习惯性地使用 Mulan PSL v2 作为协议名称,但是这种写法并不符合SPDX规范,导致即便自己选择的开源协议就在 SPDX License List中,也无法被 ohpm 中心仓的协议扫描工具所识别:

在这里插入图片描述

因此,我们需要将 oh-package.json5文件中的 license 字段值,正确填写为 MuLanPSL-2.0,类似的,其他开源协议的名称填写,也应当按照 SPDX License List 中列举的样子去填写;如果你使用的开源协议,在 SPDX License List 中找不到,那么,说明它就不是 SPDX 规范的协议,此时,最好换一个。

2、将 oh-package.json5 文件补充完整

在 lib_easyrouter 的得分明细中,可以看到因为 oh-pakage.json 文件缺少内容而被扣分,主要就是少了 keywords 和 homepage,所以,针对性补充内容之后,就得到了一份内容完整的 oh-package.json5 文件:

{"name": "lib_easyrouter","version": "1.1.0","description": "一个以动态加载为核心实现跨模块页面路由功能的路由工具包","main": "Index.ets","keywords": ["跨模块路由", "动态加载"],"homepage": "https://gitee.com/pengyoucongcode/EasyRouter","author": "***","license": "MulanPSL-2.0","repository": "https://gitee.com/pengyoucongcode/EasyRouter","dependencies": {"lib_log": "^1.0.0"}
}

3、补充 example 目录

lib_easyrouter 另一个失分的地方,就是因为缺少 example 目录,实际上,完善的软件包也应当有一个提供功能演示的 example,所以,我在 v1.1.0 版本的 lib_easyrouter 中,针对性地加上了 example:
在这里插入图片描述

4、基本的 README 和 CHANGELOG

如果你对自己发布的 ohpm 包,在中心仓上最终能获得多少分并不在乎,但为了让软件包能够成功上架,必须提供基本的说明文档,也就是 README.md 和 CHANGELOG.md。

三、ohpm 包的源码隔离特性

与 Maven、PyPi 和 NPM 等三方包管理系统所不同的是,ohpm 并不会直接将源码暴露给其他引用者:
在这里插入图片描述
以我自己发布的另一个鸿蒙共享包 lib_log 为例,可以看到下载的所谓源码,都是 .d.ets 文件,而这种文件就跟 .d.ts 文件一样,只是一种声明文件,并不会包含具体的实现逻辑,类似于 C/C++ 的头文件,所以,如果你没有在 oh-package.json5 使用 repository 参数说明代码仓库所在,那么别人是无法知道你的实现代码的。

http://www.xdnf.cn/news/16322.html

相关文章:

  • Java学习-------序列化与反序列化
  • MGRE综合实验
  • 【Linux | 网络】传输层(UDP和TCP)
  • 笔记本键盘的启用和禁用
  • Rust实战:高效开发技巧
  • 强连通分量:Kosaraju算法
  • 使用Python绘制动态樱花
  • CentOS 镜像源配置与 EOL 后的应对策略
  • 【C++篇】STL的关联容器:unordered_map和unordered_set(上篇):哈希表的模拟实现
  • Triton Shared编译
  • Linux网络-------2.应⽤层⾃定义协议与序列化
  • 大模型算法面试笔记——常用优化器SGD,Momentum,Adagrad,RMSProp,Adam
  • Spring MVC设计精粹:源码级架构解析与实践指南
  • AI Coding IDE 介绍:Cursor 的入门指南
  • 深度学习计算(深度学习-李沐-学习笔记)
  • Python 程序设计讲义(23):循环结构——循环控制语句 break 与 continue
  • 【笔记】Einstein关系式 D = ukBT 的推导与应用研究
  • 【自动化运维神器Ansible】Ansible常用模块之hostname模块详解
  • Java面试实战:企业级性能优化与JVM调优全解析
  • 【编号444】雅鲁藏布江(上中下)游8级水系湖泊数据合集
  • cacti漏洞CVE-2022-46169的复现
  • Java:采用mybatis+pagehealper优雅的实现分页功能
  • 如何筛选适合自己阅读的文献?高效文献调研流程?
  • 【C++高效编程】STL queue深度剖析:从底层原理到高级应用
  • FastAPI入门:安装、Pydantic、并发和并行
  • 嵌入式硬件篇---有线串口通信问题解决
  • 使用Clion开发STM32(Dap调试)
  • Android WorkManager 详解:高效管理后台任务
  • hot100-每日温度
  • Python爬虫实战:诗词名句网《三国演义》全集