我查看了 SO 和 google 上的每个问题,但仍然没有运气。
我已经获得了一个预构建的静态库 libdroid.a,我需要在我的应用程序中使用它。
我试过用 Android.mk 把它放在 jni 文件夹里
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libdroid
LOCAL_LDLIBS := libdroid.a
include $(PREBUILT_STATIC_LIBRARY)
然后用java调用它
static {
System.loadLibrary("droid");
}
public static native int droidCall(int num1, int num2);
但是当我运行应用程序时我得到
java.lang.UnsatisfiedLinkError: Couldn't load droid: findLibrary returned null
我想这是因为它不应该放在 JNI 文件夹中?但我也在 obj 和 libs 文件夹中尝试过。
最佳答案
您需要创建自己的共享库 (*.so
),它将从该预建静态库中调用您需要的函数。然后用 System.loadLibrary
加载这个 .so
库并使用它的原生函数
关于android - 使用预建的静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11529120/