目录

前言

1. 如何生成一个静态共享包

1. 创建静态共享包

2. 编写工具类

3. 编译静态共享包

2. 发布前准备

1. readme

2. CHANGELOG

3. LICENSE

4. 基本信息(可选)

3. 上传静态共享包

1. 注册账号

2. 新增组织

3. 生成公钥和私钥

4. 生成OHPM公钥

5. 配置私钥文件

6. 复制发布码并配置

7. 发布har包

4. 静态共享包的使用/更新/删除

1. 使用静态共享包

2. 更新静态共享包

3. 移除静态共享包

5. 小结


前言

很多时候,我们自己写了一些独立的功能代码,想给团队或其他开发者使用,一般都会将代码开源出去,例如SpringBoot场景中,我们可以发布成为jar包,其他人就可以在pom.xml文件中直接引入我们的jar包即可使用我们开发的功能代码了,还是很有成就感的

现在在鸿蒙开发环境中,也是可以做到,本文就分享给大家整个流程,如何将自己写的工具代码上传到中央仓库,让别人都可以使用

本文章主要分享下面几块内容:

  • 如何生成一个静态共享包

  • 发布前准备

  • 上传静态共享包

  • 静态共享包的使用/更新/删除

注意:我的开发工具DevEco Studio版本是5.1.1.840,API是19的环境

1. 如何生成一个静态共享包

如何使用开发工具【DevEco Studio】生成一个静态共享包呢?

下面我们一步一步来做

1. 创建静态共享包

首先创建静态共享包

image-20251117203948313

然后

image-20251117204035259

然后填写Module名称,选择设备,如下:

image-20251117204308063

创建完成,如下:

image-20251117204604226

2. 编写工具类

接下来我们在刚刚新建的【Module】中新建一个工具类如下:

/**
   * 弹框提示(弹框会自动关闭)
   * @param message 弹框显示内容
   * @param time? 弹框显示时长,单位:毫秒(缺省时默认为2000毫秒)
   */
alertMsg(message: string, time?: number) {
    promptAction.openToast({
        message: message, //message属性用于设置提示信息
        duration: time ? time : 2000, //duration属性用于设置提示信息停留时长,单位为毫秒,取值范围是[1500,10000]
        bottom: '160vp', //bottom属性用于设置提示信息到底部的距离
        backgroundColor: '#ff000000',
        textColor: '#ffffff',
        backgroundBlurStyle: BlurStyle.NONE,
    })
}

如下:

image-20251117204744308

这里我只做测试,所以只写了一个方法,待会我们发布完成后,看看在一个新工程中能,能否引入我们发布的包后就可以使用这个工具方法了,如果可以的话,那这里你写其他任何工具方法的话,就都可以被使用了

3. 编译静态共享包

接下来我们开始编译静态共享包,在编译之前,可以看下代码混淆规则,在模块级的build-profile.json5配置文件中开启混淆功能:

image-20251117205156493

当你的一切功能都开发完成之后,鼠标左击选中当前的静态共享包,选择Build中第一个选项,如下图所示:

image-20251117205415874

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

如下图位置所示:

image-20251117205513669

2. 发布前准备

在将生成的har包上传到【OpenHarmony】三方库中心仓中之前,我们需要准备一些配置文件,否则直接上传肯定是审核不通过的(我已经试过了,被驳回了),上传前静态包Module下必须包含下面三个文件:

  1. readme.md:针对静态共享包的描述文件

  2. CHANGELOG.md:更新版本信息文件

  3. LICENSE:开源协议文件

缺一不可哦

1. readme

和其他开源项目一样,这个readme文件主要介绍静态共享包的功能和使用方式等等,我这里偷了个懒,直接去OpenHarmony三方库中心仓中看了一下别人是如何写的,仿照别人写就可以了,我这里只写了一份中文的,如果你愿意的话,可以写一份中文和一份英文,我的readme.md文件如下:

image-20251117210257440

在官网中,效果如下:

image-20251117210327335

2. CHANGELOG

CHANGELOG.md这个文件主要是记录一下你这个依赖包的变更历史,我也是参考别人写的,如下:

image-20251117210552172

3. LICENSE

LICENSE这个文件主要是说明开源协议,我这里使用的是MIT协议

MIT协议简介:
1. MIT协议诞生于美国麻省理工学院(Massachusetts Institute of Technology),是最早且最宽松的开源协议之一。其全称为“MIT License”,旨在以极简的条款赋予开发者最大的自由度,同时保留原作者的基本权利。
2. MIT协议的核心内容仅需几百字,核心条款可概括为以下两点:
   2.1. 自由使用:允许任何人免费使用、修改、分发代码,包括商业用途。
   2.2. 保留声明:若使用或分发代码,需在软件或文档中保留原作者的版权声明和许可声明。

我这里的LICENSE文件内容如下:(仅供参考)

# Copyright (c) 2025 wujiangbo
​
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
​
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
​
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

4. 基本信息(可选)

除了以上之外呢,还有一个地方个人认为也是比较重要的,那就静态共享包的基本信息填写,会展示在官网中右侧的模块里,如下:

image-20251117211214656

这些信息在Module中的【oh-package.json5】文件中配置,包含了静态包的名字,版本,描述信息等。如下图所示:

image-20251117211345699

代码如下:

{
  "name": "os_library",
  "version": "1.0.0",
  "description": "鸿蒙应用开发过程中,常用的工具类封装和UI提示工具方法,提高开发效率和代码复用性",
  "main": "Index.ets",
  "author": "波波老师",
  "license": "MIT",
  "keywords": ["os", "工具类"],
  "homepage": "https://blog.csdn.net/wujiangbo520",
  "repository": "",
  "dependencies": {}
}

3. 上传静态共享包

到目前为止,所有的准备工作完成,我们就可以上传远程仓库了,也就是OpenHarmony三方库中心仓

1. 注册账号

OpenHarmony三方库中心仓官网地址如下:

https://ohpm.openharmony.cn/#/cn/home

这一步大家自行注册即可

2. 新增组织

我们的开源包需要上传到某个组织下,这个是有审核的,我记得以前是审核特别慢的,现在审核特别快,10分钟内就能审核通过,如下图所示:

image-20251117211710787

然后:

image-20251117211742432

如上图所示,需要输入组织名称,一般简单的英文即可

好,这一个保存完后等待审核即可

接下来我们需要生成公钥和私钥

3. 生成公钥和私钥

按快捷键【Win+R】后,输入cmd,打开CMD命令行窗口,执行如下命令,your_key_path就是你要生成到哪个路径下

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

比如我这里输入的是:

ssh-keygen -m PEM -t RSA -b 4096 -f E:\test\appkey\bobo

如下图所示:

image-20251117212011629

上面界面会等待,需要我们输入一个密码,然后需要再重复输入一次,这个密码一定要记住,以后发布都会用到。

输入密码后,回车即可,就会出现如下图所示的界面了:

image-20251117212107852

然后指定路径下就会生成公钥和私钥了,如下图所示:

image-20251117212142703

4. 生成OHPM公钥

回到OpenHarmony三方库中心仓,点击个人中心,点击认证管理,新增即可,如下图所示:

image-20251117212257771

然后出现如下界面:

image-20251117212322784

然后将上面生成的公钥文件用记事本打开,将内容全部拷贝到上面【公钥】输入框之中即可,填写完标题后,点击保存即可,如下图所示:

image-20251117212436577

就新增完毕了

5. 配置私钥文件

跟刚才一样,按快捷键【Win+R】后,输入cmd,打开CMD命令行窗口,执行如下命令,your_key_path就是私钥文件路径:

ohpm config set key_path your_key_path

我这里执行的是下面命令:

ohpm config set key_path E:\test\appkey\bobo

执行完毕后如下图所示:

image-20251117212614283

6. 复制发布码并配置

去OpenHarmony三方库中心仓的个人中心页面,点击复制发布码,如下图所示:

image-20251117212718603

和刚才一样方式打开cmd黑窗口,设置发布码,命令如下,your_publish_id就是刚才复制的发布码

ohpm config set publish_id your_publish_id

我这里执行如下命令:

ohpm config set publish_id DTTNEXXXX

如下图所示:

image-20251117212905176

7. 发布har包

执行下面命令完成har包的发布操作,HAR路径是打出的静态包路径:

ohpm publish HAR路径 

我这里执行的是下面这个命令:

ohpm publish K:\project\HarmonyOSFile\Project\os_library\build\default\outputs\default\os_library.har

然后就会报如下错误信息:

image-20251117213105646

这个也是我跟着网上其他教程做的时候,出现的问题,这里记录一下

解决方案是这样操作:

image-20251117213255724

然后再执行下面命令:

ohpm publish os_library.har

输入后回车:

image-20251117213407913

需要输入之前我们自己设置的密码即可

命令执行成功之后,就可以在个人中心的消息里,看到审核记录了,如下图所示:

image-20251117213524979

如何审核未通过的话,后面点击查看可以看到具体原因,如下图所示:

image-20251117213602600

我这里就驳回了好几次,每次根据原因修改后再重新发布即可,直到成功为止

祝君好运,一次就过!!!

审核成功之后,在OpenHarmony三方库中心仓里就可以看到你发布的包了,之后就可以远程依赖使用了,比如我发布的已经审核通过了,就可以在主页直接搜索看到了,如下图所示:

image-20251117213729378

这样其他所有人都可以使用我发布的代码包了

4. 静态共享包的使用/更新/删除

1. 使用静态共享包

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

操作如下:

image-20251117215024301

注意:上面我是在一个新的HelloWorld项目中做测试,引入我之前发布的包

然后输入下面命令:

ohpm install os_library

注意:上面os_library是我发布包的名称,你写你自己的就可以了

如下图所示,安装成功:

image-20251117215313372

然后看工程目录下的【oh-package.json5】文件,如下图所示:

image-20251117215259523

然后就可以看到我们的依赖已经添加到项目中了,如下图所示:

image-20251117215547298

然后我们就可以在页面中调用我们的工具方法了,如下所示:

myTools.alertMsg('测试弹框');

如下图所示:

image-20251117215712095

2. 更新静态共享包

直接输入下面命令即可:

ohpm update <package_name>

我这里就是执行下面命令了:

ohpm update os_library

3. 移除静态共享包

直接输入下面命令即可:

ohpm uninstall <package_name>

我这里就是执行下面命令了:

ohpm uninstall os_library

如下所示:

image-20251117220106451

5. 小结

到目前为止,我相信你已经掌握了全部步骤了,赶紧去试一试吧,让你的代码横行世界吧,哈哈,加油💪

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐