Android-приложение не может найти нативную библиотеку C с помощью JNI - PullRequest
0 голосов
/ 27 мая 2019

У меня есть приложение, которое вычисляет числа Фибоначчи. Но он использует родной код C и JNI. Когда я запускаю приложение, я получаю сообщение об ошибке

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/org.pctechtips.netdroid-9pH2rDI1Myox3eJYo1OO5g==/base.apk", zip file "/data/app/org.pctechtips.netdroid-9pH2rDI1Myox3eJYo1OO5g==/split_lib_dependencies_apk.apk", zip file "/data/app/org.pctechtips.netdroid-9pH2rDI1Myox3eJYo1OO5g==/split_lib_resources_apk.apk", zip file "/data/app/org.pctechtips.netdroid-9pH2rDI1Myox3eJYo1OO5g==/split_lib_slice_0_apk.apk", zip file "/data/app/org.pctechtips.netdroid-9pH2rDI1Myox3eJYo1OO5g==/split_lib_slice_1_apk.apk", zip file "/data/app/org.pctechtips.netdroid-9pH2rDI1Myox3eJYo1OO5g==/split_lib_slice_2_apk.apk", zip file "/data/app/org.pctechtips.netdroid-9pH2rDI1Myox3eJYo1OO5g==/split_lib_slice_3_apk.apk", zip file "/data/app/org.pctechtips.netdroid-9pH2rDI1Myox3eJYo1OO5g==/split_lib_slice_4_apk.apk", zip file "/data/app/org.pctechtips.netdroid-9pH2rDI1Myox3eJYo1OO5g==/split_lib_slice_5_apk.apk", zip file "/data/app/org.pctechtips.netdroid-9pH2rDI1Myox3eJYo1OO5g==/split_lib_slice_6_apk.apk", zip file "/data/app/org.pctechtips.netdroid-9pH2rDI1Myox3eJYo1OO5g==/split_lib_slice_7_apk.apk", zip file "/data/app/org.pctechtips.netdroid-9pH2rDI1Myox3eJYo1OO5g==/split_lib_slice_8_apk.apk", zip file "/data/app/org.pctechtips.netdroid-9pH2rDI1Myox3eJYo1OO5g==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/org.pctechtips.netdroid-9pH2rDI1Myox3eJYo1OO5g==/lib/x86, /system/lib, /system/vendor/lib]]] couldn't find "libliborg_pctechtips_netdroid_classes_FibLib.so"

это все одна строка ошибки. обратите внимание на название библиотеки. "libliborg_pctechtips_netdroid_classes_FibLib.so", когда я создал свой файл c, который содержит функции, я также создал файл Android.mk. здесь

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := org_pctechtips_netdroid_classes_FibLib
LOCAL_SRC_FILES := org_pctechtips_netdroid_classes_FibLib.c
include $(BUILD_SHARED_LIBRARY)

обратите внимание на имя моего исходного файла org_pctechtips_netdroid_classes_FibLib.c Я думал, что это имя библиотеки, когда я собираю проект с помощью ndk-build. он создает каталог lib со всей сборкой для каждой платформы. Я не знаю, почему добавляется lib перед именем. вместо org_pctechtips_netdroid_classes_FibLib делает его liborg_pctechtips_netdroid_classes_FibLib. Поэтому, когда я загружаю модуль в свой класс Java, он не может его найти. Я пробовал оба имени с lib и без lib, например org_pctechtips_netdroid_classes_FibLib. Наконец, я попытался перекомпилировать библиотеки снова, и у меня возникла та же проблема. любая помощь приветствуется

...