AndroidRuntime ищет ndk, так что файлы по неверному пути - PullRequest
0 голосов
/ 10 февраля 2020

Я использую файлы JNI c ++ для хранения строк в зашифрованном формате.

Ниже мой CMakelists.txt:

cmake_minimum_required(VERSION 3.4.1)

add_library ( native-lib SHARED native-lib.cpp boot-lib.cpp call-lib.cpp state-lib.cpp cap- 
lib.cpp manage-lib.cpp on-lib.cpp service-lib.cpp network-lib.cpp )
find_library ( log-lib log )
target_link_libraries( native-lib ${log-lib} )

Из моего класса с именем CallStateService. java:

static
{
    System.loadLibrary("state-lib");
}

Я загружаю state-lib библиотеку, и она загружается хорошо. Проект очищает хорошо. Проект перестраивает хорошо.

Когда я запускаю его через эмулятор, получаю cra sh:

02-10 15:12:11.848 3433-3433/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.mycompany.app.myapp, PID: 3433
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.mycompany.app.myapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.mycompany.app.myapp-1/lib/x86, /data/app/com.mycompany.app.myapp-1/base.apk!/lib/x86, /vendor/lib, /system/lib]]] couldn't find "libstate-lib.so"
    at java.lang.Runtime.loadLibrary(Runtime.java:367)
    at java.lang.System.loadLibrary(System.java:1076)
    at com.mycompany.app.myapp.CallStateService.<clinit>(CallStateService.java:37)

Что меня беспокоит:

  • Согласно logcat, который показывает couldn't find "libstate-lib.so", не является частью проекта, и у меня есть такой файл в проекте с именем libstate-lib.cpp.
  • Мой проект называется com.mycompany.app.myapp, затем во время выполнения, почему это ищет com.mycompany.app.myapp-1/
  • Также он ищет nativeLibraryDirectories в nativeLibraryDirectories=[/data/app/com.mycompany.app.myapp-1/lib/x86 вместо nativeLibraryDirectories=[/data/app/com.mycompany.app.myapp/lib/x86

Что я пробовал до сих пор: - Много раз менял расположение файла CMakelists.txt и менял пути связанных файлов. cpp, чистил, собирал и перестраивал. - Недействительные кэши и перезапущенная студия. - Изменена версия приложения в build.gradle. - Очистила данные приложения в эмуляторе, несколько раз удаляла и перезапускала эмулятор, а затем снова пыталась запустить его поверх

Я надеюсь, что кто-то мне поможет. Заранее спасибо, и любая помощь будет оценена.

...