鸿蒙使用第三方SO库

一、示例:

使用第三方SO库以导入OpenCV和MNN的SO库为例

1、将MNN和Opencv的so文件(包括.407文件),放入模块下libs目录对应的版本(arm64-v8a和armeabi-v7a)

typescript 复制代码
entry/libs/arm64-v8a/xxx.so

2、配置模块目录下的build-profile.json5的buildOption字段,增加abiFilters字段:

typescript 复制代码
"buildOption":{
"externalNativeOptions":{
..
"abiFilters":[
"arneabi-v7a",
"arn64-v8a"
]
},
},

3、在CMakeLists.txt所在目录,创建"thirdPart"目录,然后将MNN和opencv的头文件放入该目录(头文件在提供的压缩包的 include目录里):

typescript 复制代码
src/main/cpp/thirdPart/MNN/xxxx.hpp
src/main/cpp/thirdPart/opencv/opencv4/opencv2/xxxx.hpp

4、修改CMakeLists.txt文件,增加以下内容:

typescript 复制代码
//实际打包内容为lib中所有的so文件,当前开发测试阶段可以先放入所有的so;后续有裁减包大小的诉求时,根据你们使用的so库,我们会提供对应的方案
// 链接需要的so库至当前的模块可引入需要的模块
//'yitusdk'表示模块名称;${CMAKE_CURRENT_SOURCE_DIR}表示CMakeLists所在目录;${0HOS_ARCH}表示构建的对应版本(arm64-v8a等) 
target_link_libraries(yitusdk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${0HOS_ARCH}/1ibMNN.so)
target_link_libraries (yitusdk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${0HOS_ARCH}/libopencv_core.so) 
target_link_libraries(yitusdk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${0HOS_ARCH}/libopencv_imgproc.so)

//引入对应的头文件实际打包头文件不会影响包大小
target_include_directories(yitusdk PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdPart)//以下根据实际情况,某个库,如opencv,根据include时的错误信息,可以写多条
target_include_directories(yitusdk PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdPart/opencv/opencv4) 
target_include_directories(yitusdk PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} /thirdPart/opencv)

补充说明:放置so文件时,注意对应的407也需要一同放入(由于windows环境的特殊)

二、其他补充说明

鸿蒙只能使用基于napi编译的so,HarmonyOS的应用必须用js来桥接native。需要使用ace_napi仓中提供的napi接口来处理js交互。

  1. 使用鸿蒙提供的NDK直接开发so库,可以直接使用
  2. 如果是其他环境下编译的so库需要封装Napi调用SO库

Node-API开发规范

Native API在应用工程中的使用指导

基于NDK编译三方库

相关推荐
zhanshuo10 小时前
在鸿蒙里优雅地处理网络错误:从 Demo 到实战案例
harmonyos
zhanshuo10 小时前
在鸿蒙中实现深色/浅色模式切换:从原理到可运行 Demo
harmonyos
whysqwhw16 小时前
鸿蒙分布式投屏
harmonyos
whysqwhw17 小时前
鸿蒙AVSession Kit
harmonyos
whysqwhw19 小时前
鸿蒙各种生命周期
harmonyos
whysqwhw20 小时前
鸿蒙音频编码
harmonyos
whysqwhw20 小时前
鸿蒙音频解码
harmonyos
whysqwhw20 小时前
鸿蒙视频解码
harmonyos
whysqwhw20 小时前
鸿蒙视频编码
harmonyos
ajassi200020 小时前
开源 Arkts 鸿蒙应用 开发(十八)通讯--Ble低功耗蓝牙服务器
华为·开源·harmonyos