HarmonyOS 鸿蒙Next 关于entry主模块调用module中ndk编译出的so文件的方式
HarmonyOS 鸿蒙Next 关于entry主模块调用module中ndk编译出的so文件的方式
https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-ndk-72-V5
1.在HAR/HSP模块的build-profile.json5中buildOption/nativeLib/headerPath指定接口文件目录
buildOption: { nativeLib: { headerPath: “src/main/cpp/include” } }
2.调用方依赖HAR/HSP包
// oh-package.json dependencies: { curl: “1.0.0” }
3.调用方配置cmake链接so,格式为packageName::soName
target_link_libraries(entry PUBLIC curl::curl)
上述有一些疑问。
1.步骤1中的path是固定的么?还是要根据我项目的路径来配置
2.步骤2中的curl是我so文件的名称么?
3.步骤3中这个cmake文件写在哪里?如果我的entry是不支持native的话,又应该如何引用呢?
1.在HAR/HSP模块的build-profile.json5中buildOption/nativeLib/headerPath指定接口文件目录
buildOption: { nativeLib: { headerPath: “src/main/cpp/include” } }
2.调用方依赖HAR/HSP包
// oh-package.json dependencies: { curl: “1.0.0” }
3.调用方配置cmake链接so,格式为packageName::soName
target_link_libraries(entry PUBLIC curl::curl)
上述有一些疑问。
1.步骤1中的path是固定的么?还是要根据我项目的路径来配置
2.步骤2中的curl是我so文件的名称么?
3.步骤3中这个cmake文件写在哪里?如果我的entry是不支持native的话,又应该如何引用呢?
2 回复
1、这个path是需要根据您项目的路径来配置的
2、这里curl只是个示例,对应您的模块名,即打包出的so
3、如果您的entry非native,还可以通过dlopen接口实现entry主模块动态加载module中的.so文件
另外这边查询到loadNativeModule函数也可以实现动态加载native模块,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/js-apis-load-native-module-V5
2、这里curl只是个示例,对应您的模块名,即打包出的so
3、如果您的entry非native,还可以通过dlopen接口实现entry主模块动态加载module中的.so文件
另外这边查询到loadNativeModule函数也可以实现动态加载native模块,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/js-apis-load-native-module-V5
在HarmonyOS 鸿蒙Next中,entry主模块调用module中NDK编译出的so文件,通常涉及以下几个步骤:
- 确保so文件正确编译:在module中,使用CMakeLists.txt配置并编译C++代码生成so文件。注意配置abiFilters以支持不同的CPU架构,如arm64-v8a和x86_64。
- 将so文件添加到module中:编译生成的so文件需放置在module的libs目录下,并按架构分类存放。
- 在entry主模块中引用module:在entry主模块的oh-package.json5中,声明对包含so文件的module的依赖。
- 调用so文件中的方法:在entry主模块的代码中,通过import引入module中声明的依赖名称,并使用相应的API调用so文件中的方法。若so文件使用C++编写,需在extern "C"中包裹头文件,以避免链接错误。
- 日志输出与调试:使用HarmonyOS提供的日志库(如hilog)进行调试,确保so文件中的方法被正确调用。
如果遵循上述步骤后仍遇到问题,请检查so文件的路径、名称和依赖声明是否正确,或参考官方文档和示例代码。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。