HarmonyOS 鸿蒙Next开发中,如何调用已有so库?
HarmonyOS 鸿蒙Next开发中,如何调用已有so库? 鸿蒙开发应用中,如何调用已有so库?模板生成的工程里没有调用已有so文件 ,只是在add方法中读取了一个参数而已,试了多种方法都没有解决,求协助…
可以调用, 将so库放到libs目录下,配置CMakeList.txt后,就可以调用了。
更多关于HarmonyOS 鸿蒙Next开发中,如何调用已有so库?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
可以贴下调用的demo代码,感谢,最近碰到类似问题,
如果是包含napi的so库,直接import就可以调用了,
可能不能直接调。
先说好我不是很懂这方面的开发。
我建议是实现一个NApi接口类之类的方案,然后在C++工程内部调用这个第三方so(就像普通的C++代码调用so的方法一样)。将so的调用结果,通过这个接口类以NApi的方式传回js。
因为NApi要写胶水代码的,你第三方so没有这个胶水代码,需要你写。胶水代码的写法,你可以参考默认的native模板的hello.cpp里面的写法。不确定有没有专门的教程教怎么写,
这个方式有人试过没 是否可行?
我试了 调用的是android的so库 报错了:Error: dlopen failed: library “libstdc++.so” not found: needed by /data/storage/el1/bundle/libs/arm64/libPPCS_API.so in namespace arkUI_default
在HarmonyOS鸿蒙Next开发中,调用已有so库可以通过以下步骤实现:
-
导入so库:将so库文件放置在项目的
libs
目录下,通常为src/main/libs
。 -
配置CMakeLists.txt:在项目的
CMakeLists.txt
文件中,添加对so库的引用。例如:add_library(my_shared_library SHARED IMPORTED) set_target_properties(my_shared_library PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libmy_shared_library.so)
-
加载so库:在Java或Kotlin代码中,使用
System.loadLibrary
方法加载so库。例如:static { System.loadLibrary("my_shared_library"); }
-
调用Native方法:在Java或Kotlin中声明Native方法,并在C/C++中实现。例如:
public native void myNativeMethod();
-
编译和运行:确保项目正确配置了NDK路径,并编译运行项目。
通过这些步骤,你可以在HarmonyOS鸿蒙Next开发中调用已有的so库。