HarmonyOS鸿蒙NEXT中如何引用.so动态库
HarmonyOS鸿蒙NEXT中如何引用.so动态库
引用的方式方法是什么?
.so动态库需要使用哪个版本?Linux?Android?还是啥?(我没有.so库的源码)
如果我有源码的话,编译参数应该怎么选择?
5 回复
更多关于HarmonyOS鸿蒙NEXT中如何引用.so动态库的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
我参考这个说明做了一些尝试,在DevEco中基于Native C++模板创建了个基本项目,一旦我在cmake中为entry添加了第三方.so文件的依赖,app跑起来就连模板自带的add都undefine了。可是编译过程是没有报错的。
而且从相关文档里我没找到关于平台参数的有关说明,目前我能确定的是应该采用ARM64-v8指令集的 .so
文件,可是操作系统应该用什么版本的呢?Linux? Android? 还是什么其它的类型?我不确定我的问题是不是因为我用错了 .so
版本。
在HarmonyOS NEXT中引用.so动态库,需在模块级build-profile.json5的buildOption字段配置externalNativeOptions:
"buildOption": {
"externalNativeOptions": {
"abiFilters": ["armeabi-v7a","arm64-v8a"],
"cppFlags": "",
"targets": ["your_lib_name"]
}
}
将.so文件放置模块src/main/cpp/libs目录下,在CMakeLists.txt中添加:
add_library(your_lib_name SHARED IMPORTED)
set_target_properties(your_lib_name PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/libs/${CMAKE_ANDROID_ARCH_ABI}/libyour_lib.so)
target_link_libraries(your_entry SHARED your_lib_name)