【HarmonyOS Next之旅】DevEco Studio使用指南(二十二)

目录

[1 -> 开发静态共享包](#1 -> 开发静态共享包)

[1.1 -> 创建库模块](#1.1 -> 创建库模块)

[1.2 -> 编译库模块](#1.2 -> 编译库模块)

[2 -> 开发动态共享包](#2 -> 开发动态共享包)

[2.1 -> 使用约束](#2.1 -> 使用约束)

[2.2 -> 开发动态共享包](#2.2 -> 开发动态共享包)

[2.2.1 -> 创建HSP模块](#2.2.1 -> 创建HSP模块)

[2.2.2 -> 编译HSP模块](#2.2.2 -> 编译HSP模块)

[3 -> 发布共享包](#3 -> 发布共享包)


1 -> 开发静态共享包

HAR(Harmony Archive)是静态共享包,可以包含代码、C++库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。HAR不同于HAP,不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。

接下来,将简单介绍库模块的工程结构,如下图所示:

相关字段的描述如下。

  • libs:用于存放.so文件。
  • src > main > cpp > types:用于存放C++ API描述文件,子目录按照so维度进行划分。
  • src > main > cpp > types > liblibrary > Index.d.ts:描述C++接口的方法名、入参、返回参数等信息。
  • src > main > cpp > types > liblibrary > oh-package.json5:描述so三方包声明文件入口和so包名信息。
  • src > main > cpp > CMakeLists.tx t:CMake配置文件,提供CMake构建脚本。
  • src > main > cpp > napi_init.cpp:共享包C++代码源文件。
  • Index.ets:共享包导出声明的入口。

后续将介绍如何创建库模块、如何编译共享包、如何引用共享包资源,以及如何发布共享包。

1.1 -> 创建库模块

  1. 鼠标移到工程目录顶部,单击右键,选择New > Module,在工程中添加模块。

  2. Choose Your Ability Template 界面中,选择Static Library ,并单击Next

  1. Configure New Module 界面中,设置新添加的模块信息,设置完成后,单击Finish完成创建。
  • Module name:新增模块的名称。
  • Device type:支持的设备类型。
  • Enable native:是否创建一个用于调用C++代码的模块。

创建完成后,会在工程目录中生成库模块及相关文件。

1.2 -> 编译库模块

开发完库模块后,选中模块名,然后通过DevEco Studio菜单栏的**Build > Make Module ${libraryName}**进行编译构建,生成HAR。HAR可用于工程其它模块的引用,或将HAR上传至ohpm仓库,供下载使用。若部分源码文件不需要打包至HAR中,可通过创建.ohpmignore文件,配置打包时要忽略的文件/文件夹。

编译构建的HAR可在模块下的build目录下获取,包格式为*.har。

在编译构建HAR时,请注意以下事项:

  • 编译构建HAR的过程中,不会将模块中的C++代码直接打包进.har文件中,而是将C++代码编译成动态依赖库.so文件放置在.har文件中的libs目录下。
  • 在编译构建HAR的过程中,会生成资源文件ResourceTable.txt,以便编辑器可以对HAR中的资源文件进行联想。因此,如果不使用DevEco Studio对HAR进行构建,则DevEco Studio的编辑器会无法联想HAR中的资源。
  • 如果使用的Hvigor为2.5.0-s及以上版本,在编译构建HAR的过程中,会将dependencies内处于本模块路径下的本地依赖也打包进.har文件中;如果在打包后发现缺少部分本地依赖(如cpp/types目录)。

2 -> 开发动态共享包

DevEco Studio支持开发动态共享包HSP(Harmony Shared Package)。在应用/元服务开发过程中部分功能按需动态下载,或开发元服务场景时需要分包加载,可使用HSP实现相应功能。当有多个安装包需要资源共享时,也可利用HSP减少公共资源和代码重复打包。

说明

  • 应用内HSP:在编译过程中与应用包名(bundleName)强耦合,只能给某个特定的应用使用。
  • 集成态HSP:构建、发布过程中,不与特定的应用包名耦合;使用时,工具链支持自动将集成态HSP的包名替换成宿主应用包名。

2.1 -> 使用约束

  • HSP及其使用方都必须是API 10及以上版本Stage模型。
  • HSP及其使用方都必须使用模块化编译模式。

2.2 -> 开发动态共享包

2.2.1 -> 创建HSP模块

  1. 通过如下两种方法,在工程中添加新的Module。
  • 方法1:鼠标移到工程目录顶部,单击鼠标右键,选择New > Module,开始创建新的Module。
  • 方法2:选中工程目录中任意文件,然后在菜单栏选择File > New > Module,开始创建新的Module。
  1. 模板类型选择Shared Library ,点击Next
  1. Configure New Module 界面中,设置新添加的模块信息,设置完成后,单击Finish完成创建。
  • Module name:新增模块的名称,如设置为sharedlibrary。
  • Device type:支持的设备类型。
  • Enable native:是否创建一个用于调用C++代码的模块。

创建完成后,会在工程目录中生成库模块及相关文件。

2.2.2 -> 编译HSP模块

说明

如果HSP未开启混淆,则后续HSP被集成使用时,将不会再对HSP包进行混淆。

开发完库模块后,选中模块名,然后通过DevEco Studio菜单栏的**Build > Make Module ${libraryName}**进行编译构建,生成HSP。

打包HSP时,会同时默认打包出HAR,在模块下build目录下可以看到*.har和*.hsp。

如需在应用内共享HSP,请将HSP共享包上传至私仓,请先按以下操作编译生成*.tgz包。

1. 点击工具栏图标将编译模式切换成release模式。

2. 选中HSP模块的根目录,点击Build > Make Module ${libraryName}启动构建。

构建完成后,build目录下生成HSP包产物,其中.tgz用来上传至私仓。

3 -> 发布共享包

发布打包的HAR,可供安装和引用。接下来将介绍如何发布HAR共享包。

说明

OpenHarmony三方库中心仓仅支持HAR共享包发布,不支持HSP共享包发布。如需在应用内共享HSP,可将HSP共享包发布至私仓使用。

1. 在库模块中(与src文件夹同一级目录下),添加如下文件:

  • 新建README.md文件:在README.md文件中必须包含包的介绍和引用方式,还可以根据包的内容添加更详细介绍。
  • 新建CHANGELOG.md文件:填写HAR的版本更新记录。
  • 添加LICENSE文件:LICENSE许可文件。

2. 重新​​​​​​​编译库模块,生成*.har文件。

3. 利用工具ssh-keygen生成公、私钥,可执行以下命令:

复制代码
ssh-keygen -m PEM -t RSA -b 4096 -f ~/.ssh_ohpm/mykey 

说明

  1. ~/.ssh_ohpm/mykey 为私钥文件 mykey 的文件路径,按照实际情况指定。指定的私钥存储目录必须存在。
  2. 追加了.pub后缀的相应公钥文件会存放在和私钥相同的目录下。
  3. OHPM包管理器只支持加密密钥认证,请在生成公私钥时输入密码。

4. 登录​​​​​​​OpenHarmony三方库中心仓官网,单击主页右上角的个人中心, 新增OHPM公钥,将公钥文件(mykey.pub)的内容粘贴到公钥输入框中。

5. 打开命令行工具,将对应私钥文件路径配置到 .ohpmrc 文件中 key_path 字段上,可执行以下命令进行配置:

复制代码
ohpm config set key_path  ~/.ssh_ohpm/mykey

6. 登录​​​​​​​OpenHarmony三方库中心仓官网,单击主页右上角的个人中心,复制发布码,获取发布码并配置到 .ohpmrc 文件中,可执行如下命令:

复制代码
ohpm config set publish_id your_publish_id

7. 执行如下命令发布HAR,<HAR路径>需指定为.har文件的具体路径。

复制代码
ohpm publish <HAR路径>  

感谢各位大佬支持!!!

互三啦!!!

相关推荐
whysqwhw1 小时前
鸿蒙分布式投屏
harmonyos
whysqwhw2 小时前
鸿蒙AVSession Kit
harmonyos
whysqwhw4 小时前
鸿蒙各种生命周期
harmonyos
whysqwhw5 小时前
鸿蒙音频编码
harmonyos
whysqwhw5 小时前
鸿蒙音频解码
harmonyos
whysqwhw5 小时前
鸿蒙视频解码
harmonyos
whysqwhw5 小时前
鸿蒙视频编码
harmonyos
ajassi20005 小时前
开源 Arkts 鸿蒙应用 开发(十八)通讯--Ble低功耗蓝牙服务器
华为·开源·harmonyos
前端世界6 小时前
在鸿蒙应用中快速接入地图功能:从配置到实战案例全解析
华为·harmonyos
江拥羡橙8 小时前
【基础-判断】HarmonyOS提供了基础的应用加固安全能力,包括混淆、加密和代码签名能力
安全·华为·typescript·harmonyos