我正在尝试使用android ndk / jni,但是当我调用stringFromJNI()时,却遇到了此异常;
java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/com.raya.aman-
A_B2z5nEzTvL2uOtrxLexQ==/lib/arm/libnljnitest.so" has unsupported e_shentsize: 0x9 (expected 0x28)
这是我称为本地库的地方
public class ToolModule {
public native String stringFromJNI();
static {
System.loadLibrary("nljnitest");
}
}
android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := nljnitest
LOCAL_C_INCLUDES += $(LOCAL_PATH)/
LOCAL_SRC_FILES += FieldTest.c log.c
LOCAL_LDLIBS += -llog
include $(BUILD_SHARED_LIBRARY)
Application.mk
NDK_TOOLCHAIN_VERSION := 4.9
APP_ABI := armeabi-v7a arm64-v8a
APP_CFLAGS += -Wno-error=format-security
我将此添加到了build.gradle
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
答案 0 :(得分:0)
看起来像系统正在armeabi文件夹中寻找libnljnitest.so,而实际上却没有这样的库。您是否尝试按照https://medium.com/mobiwise-blog/unsatisfiedlinkerror-problem-on-some-android-devices-b77f2f83837d中的说明过滤支持的ABI 就您而言,过滤器可能看起来像这样。
defaultConfig {
ndk {
abiFilters "arm64-v8a", "armeabi-v7a"
}
}