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

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

坑!

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


基本流程如下:

NDK开发之封装So调用第三方So_第1张图片

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

NDK开发之封装So调用第三方So_第2张图片

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配置生成环境

NDK开发之封装So调用第三方So_第3张图片

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

NDK开发之封装So调用第三方So_第4张图片

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


NDK开发之封装So调用第三方So_第5张图片

你可能感兴趣的:(NDK开发之封装So调用第三方So)