пытается использовать android NDK / JNI, но я получаю исключение UnsatisfiedLinkError: сбой dlopen - PullRequest
0 голосов
/ 22 марта 2020

я пытаюсь использовать 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 голосов
/ 13 апреля 2020

Похоже, что система искала libnljnitest.so в папке armeabi, которая на самом деле не имеет такой библиотеки. Вы пытались фильтровать поддерживаемые ABI, следуя инструкциям здесь https://medium.com/mobiwise-blog/unsatisfiedlinkerror-problem-on-some-android-devices-b77f2f83837d В вашем случае фильтр может выглядеть следующим образом.

defaultConfig {

ndk {
    abiFilters "arm64-v8a", "armeabi-v7a"
}

}

...