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

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

目录

1 -> 开发静态共享包

1.1 -> 创建库模块

1.2 -> 编译库模块

2 -> 开发动态共享包

2.1 -> 使用约束

2.2 -> 开发动态共享包

2.2.1 -> 创建HSP模块

2.2.2 -> 编译HSP模块

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.txt:CMake配置文件,提供CMake构建脚本。
  • src > main > cpp > napi_init.cpp:共享包C++代码源文件。
  • Index.ets:共享包导出声明的入口。

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

1.1 -> 创建库模块

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

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

3. 在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。

2. 模板类型选择Shared Library,点击Next

3. 在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路径>  

感谢各位大佬支持!!!

互三啦!!!

相关文章:

  • Java使用POI+反射灵活的控制字段导出Excel
  • 18.three官方示例+编辑器+AI快速学习webgl_buffergeometry_points_interleaved
  • 神经网络初步学习——感知机
  • 《步进电机最小转速终极指南:从理论到实战,突破低速极限的5大秘技》
  • 了解神经网络声音定制,实现多情绪、多语言演绎
  • 推理加速新范式:火山引擎高性能分布式 KVCache (EIC)核心技术解读
  • 搜索二维矩阵 II 算法讲解
  • 矩阵置零算法讲解
  • 使用 AddressSanitizer 检测栈内存越界错误
  • 什么是数据集市(Data Mart)?
  • 如何查看电脑处理器配置 电脑处理器查看方法
  • Koa知识框架
  • 菊厂0510面试手撕题目解答
  • 一、HAL库的设计理念详解:从架构到实践
  • 简述DNS域名服务器
  • 前端面试每日三题 - Day 32
  • Browserless 快速上手
  • 全栈工程师实战手册:LuatOS日志系统开发指南!
  • C 语言_可变参数宏详解
  • temu自养号采购如何解决多账号防关联问题
  • 时隔近4年再出征!长三丙成功发射通信技术试验卫星十九号
  • 美国政府信用卡被设1美元限额,10美元采购花一两小时填表
  • 北美票房|昔日偶像风光不再,乔什·哈内特新片开画不佳
  • 四姑娘山一游客疑因高反身亡,镇卫生院:送到时已很严重
  • 著名文物鉴赏家吴荣光逝世,享年78岁
  • 姚洋将全职加盟上海财经大学,担任滴水湖高级金融学院院长