尝试使用android NDK / JNI,但我遇到异常UnsatisfiedLinkError:dlopen失败

时间:2020-03-22 16:38:16

标签: android android-studio android-ndk java-native-interface ndk-build

我正在尝试使用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']
    }
}

this is where i put the library

1 个答案:

答案 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"
}

}