我想使用一个现有的本地库从 另一个 Android 项目,所以我只是复制 NDK 构建库(LibCalculate.so)到我的新 Android 项目。在我的新 Android 项目中,我创建了一个文件夹 libs/armeabi/
,并把 LibCalculate.so放在那里。有 没有 jni/文件夹。我的测试设备采用 ARM 架构。
在我的 Java 代码中,我通过以下方式加载这个库:
static{
System.loadLibrary("calculate");
}
当我运行我的新 android 项目时,我得到了错误:
java.lang.UnsatisfiedLinkError: ...
nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libcalculate.so"
因此,正如错误所说,复制的本机库不在/verdor/lib 或/system/lib 中,在我的例子中如何解决这个问题?
(我解压缩了 apk 包,在 lib/there is libCalculate.so 下)
= = = = UPDATE = = = = =
我还尝试在项目根目录下创建一个 jni/文件夹,并在 jni/下添加一个 Android.mk 文件。Mk 的内容是:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libcalculate
LOCAL_SRC_FILES := libcalculate.so
include $(PREBUILT_SHARED_LIBRARY)
然后,在项目 root 下执行 ndk-build。然后,由 ndk-build 生成 armeabi/和 armeabi-v7a/目录(在文件夹中包含 libCalculate.so)。
然后,我成功地运行了我的 maven 构建项目:
lib/armeabi/libcalculate.so
lib/armeabi-v7a/libcalculate.so
但当我运行我的应用程序时,同样的错误抛出:
java.lang.UnsatisfiedLinkError: ...
nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libcalculate.so"