我可以构建一个产生所有平台的共享库。我有一个makefile名称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的文件:
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.UnsatisfiedLinkError:dalvik.system.PathClassLoader [DexPathList [[zip file“/data/app/com.masum.test-1/base.apk"],nativeLibraryDirectories=[/data/app /com.masum.test-1/lib/x86,/ vendor / lib,/ system / lib]]]找不到“libcom_masum_test_JniTest.so”
文件浏览器: -
显然,我的应用程序无法与共享库链接。那么如何链接?
答案 0 :(得分:0)
我找到了一种链接方式。如果我在app / src / main中创建一个名为jniLibs的目录,然后复制所有共享库。它能够链接和加载库。请注意,目录名称“jniLibs”区分大小写。
您必须在源代码中调用它: -
static{
System.loadLibrary("libray_name"); // without prefix 'lib' and suffix '.so' i.e. "libLibName.so" should be only LibName.
}