Java 如何链接Android NDK共享库?
我可以建立一个生产所有平台的共享库。我有一个makefile name Android.mk作为:Java 如何链接Android NDK共享库?,java,android,c++,android-ndk,linker,Java,Android,C++,Android Ndk,Linker,我可以建立一个生产所有平台的共享库。我有一个makefile name Android.mk作为: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := com_masum_test_JniTest.c LOCAL_MODULE := com_masum_test_JniTest include $(BUILD_SHARED_LIBRARY) 另一个名为Application.mk的文件为: AP
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := com_masum_test_JniTest.c
LOCAL_MODULE := com_masum_test_JniTest
include $(BUILD_SHARED_LIBRARY)
另一个名为Application.mk的文件为:
APP_ABI := all
当我输入命令ndk build时,它将创建所有共享库
但当我调用本机函数时,我得到的异常为:-
09-11 15:57:02.018 22949-22949/com.masum.test E/AndroidRuntime﹕ 致命异常:主
进程:com.masum.test,PID:22949
java.lang.IllegalStateException:无法执行活动的方法
原因:java.lang.UnsatifiedLinkError:dalvik.system.PathClassLoader[DexPathList[[zip文件/data/app/com.masum.test-1/base.apk],NativeLibraryDirectory=[/data/app/com.masum.test-1/lib/x86,/vendor/lib,/system/lib]]找不到libcom\u masum\u test\JniTest.so
我甚至没有在我的工作空间中看到lib文件夹。查看图片:-
文件浏览器:-
显然,我的应用程序无法与共享库链接。那么如何链接呢?我找到了链接的方法。如果我在app/src/main中创建一个名为jniLibs的目录,然后将所有共享库复制到side中。它能够链接和加载库。注意,目录名jniLibs区分大小写 您必须在源代码中调用它:-
static{
System.loadLibrary("libray_name"); // without prefix 'lib' and suffix '.so' i.e. "libLibName.so" should be only LibName.
}