Android Jni引用第三方库
在jni下新建文件夹(jniLib)用来存放第三方so库:
将so拷贝到jniLib下,新建一个Android.mk文件:
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := libadd_putao_pre LOCAL_SRC_FILES := libadd_putao.so include $(PREBUILT_SHARED_LIBRARY)
在你需要使用该动态库的Android.mk修改为类似如下:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_DISABLE_FORMAT_STRING_CHECKS := true LOCAL_LDLIBS := -lm -llog LOCAL_MODULE := xxxx LOCAL_SRC_FILES := xxx.pp xx.c LOCAL_STATIC_LIBRARIES := libadd_putao
include $(BUILD_SHARED_LIBRARY)
在C/C++代码中添加如下:
void *handle = dlopen("libadd_putao.so", RTLD_LAZY); if (!handle) { __android_log_print(ANDROID_LOG_INFO,"------->", dlerror()); return NULL; } decrypt = (返回)dlsym(handle, "xxx_method_name"); if (!decrypt) { __android_log_print(ANDROID_LOG_INFO,"------->", dlerror()); return NULL; }
如果你是C++,Application.mk添加如下:
APP_ABI := armeabi APP_STL := gnustl_static APP_PLATFORM := android-19
OK 编译吧,大功告成!