前言
随着OpenHarmony生态的拓展,越来越多的伙伴需要定制自己的SDK,下文会为大家介绍如何在OpenHarmony上开发SDK。
开发环境
系统版本: 4.0-Release
DevEco Studio版本: 4.0 Release (build:4.0.0.600)
SDK版本: 4.0.10.13(及以上)
开发流程
对于OpenHarmony系统,应用自身开发的SDK是以共享包的形式提供给其他应用使用,并且既可以包含纯ArkTS代码,也能包含C++库。当然,C++库编译出的so也能单独提供给其他应用使用,但是需要遵循一定的引入方式。
共享包
HAR
创建Static Library
右键当前工程目录,依次选择菜单栏New->Module->Static Library后填写相应的名称并点击Finish,待工程自动sync完成后可以看到har类型的Module已创建完成。
编译HAR包
左键点选创建好的Module,依次选择菜单栏Build->Make Module 'xxx',编译完成后可以看到Module下生成了build编译产物。
安装HAR包
将
build/default/outputs/default/
下的.har文件放到需要使用的模块下,例如entry/librarys/xxx.har
。在模块的oh-package.json5里配置依赖
"dependencies": { "xxx": "file:./librarys/xxx.har" }
执行
ohpm install
安装HAR包,安装成功后会在entry/oh_modules/
下生成。
引用HAR包
在需要使用HAR包的地方导入
import { xxx } from 'xxx'
就可以使用提供的能力了。
HSP
HSP包的开发及引用方式与HAR包除了在第一步创建的时候选择由Static
改为Shared
后,其他的步骤完全一样。
Native C++
如果想开发C++ SDK,有2种方式可以实现:
- HAR包或者HSP包可以默认创建带Native代码的Module。
- 普通Native工程编译出so后给其他应用使用。
HAR(或HSP)包
带Native的HAR(或HSP)包的开发及引用方式与普通HAR(或HSP)包除了在第一步创建的时候需要勾选Enable native
,其他的步骤完全一样。但是,此方案提供的SDK只能被ArkTS使用,不能被Native使用。
普通Native工程编译so
创建普通Native工程
依次点击菜单栏File->New->Create Project->Application,选择Native C++ Template,填写好相应的工程信息后,点击Finish创建工程。
编译so
Native C++ Template默认带有Native相关的示例和编译配置,配置好签名后直接Build。编译完成后可以在模块的build/default/intermediates/cmake/default/obj/arm64-v8a
下找到libxxx.so
。
配置so
创建一个需要使用so的Native工程并配置好签名。
将so放到需要使用的模块的
libs/${目标架构}/
下。
说明:如果出现命名冲突则修改so名。
- 将so的源码工程模块的
src/main/cpp/types
下的libxxx
目录(包含.d.ts及oh-package.json5)copy到需要使用的模块的src/main/cpp/types
下。
说明:如果出现命名冲突则copy时修改目录名。
- 在模块的oh-package.json5里配置依赖
并sync。"dependencies": { ··· "libxxx.so": "file:./src/main/cpp/types/libxxx" }
引用so
在需要使用so的地方
import xxx from 'libxxx.so';
就可以直接调so的能力了。