鸿蒙使用第三方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编译三方库

相关推荐
Bruce_Liuxiaowei3 小时前
HarmonyOS Next~鸿蒙系统架构设计解析:分层、模块化与智慧分发的技术革新
华为·harmonyos
幽蓝计划4 小时前
鸿蒙Next开发实战教程-使用WebSocket实现即时聊天
harmonyos·鸿蒙
鸿蒙布道师6 小时前
鸿蒙NEXT开发问题大全(不断更新中.....)
华为·harmonyos·鸿蒙·鸿蒙系统·huawei
二流小码农8 小时前
鸿蒙开发:远场通信服务rcp拦截器问题
android·ios·harmonyos
冬冬小圆帽8 小时前
鸿蒙保姆级教学
华为·harmonyos
别说我什么都不会8 小时前
OpenHarmony深度解读之分布式软总线:authmanager模块(4)/设备身份认证过程
分布式·嵌入式·harmonyos
BensionLZ12 小时前
ArkUI的样式二
harmonyos
别说我什么都不会12 小时前
OpenHarmony深度解读之分布式软总线:authmanager模块(3)/设备身份认证过程
分布式·嵌入式·harmonyos
AriesHoo13 小时前
Freadhub 适配原生鸿蒙(Harmony OS NEXT)
android·harmonyos
东林知识库13 小时前
鸿蒙NEXT项目实战-百得知识库03
华为·harmonyos