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