NDK开发之封装So调用第三方So

由于公司要使用第三方提供的一套算法,而算法工程师给了一个在Windows直接生成的so,及不符合Jni调用格式的.h接口文件。

坑!

于是自己写个so,通过C++实现调用算法的so


基本流程如下:

1、根据项目所需要使用的java函数通过javah生成函数格式正确的.h文件,注意包名与函数名的对应。

2、添加Android.mk文件 到对应的jni目录  ,mk文件用于生成对应的so库,并引用第三方的so。


#第三方so

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := PARAMAlgInterface

LOCAL_SRC_FILES := armeabi/libPARAMAlgInterface.so

include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

#供自己调用的so

LOCAL_MODULE := nativeTest

LOCAL_SRC_FILES := PpgJni.cpp

LOCAL_LDLIBS := -llog

LOCAL_SHARED_LIBRARIES :=libPARAMAlgInterface   #引用第三方so

include $(BUILD_SHARED_LIBRARY)


3、增加Application.mk配置生成环境

4、根据第三方的.h文件,在cpp文件里实现所需要调用的函数和返回结果,需要注意变量的使用防止内存泄漏

5、在jni目录路径使用命令行ndk-build生成自己的.so,并在build-gradle文件配置apk使用的jnilibs目录


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容