Я использую файлы 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. - Очистила данные приложения в эмуляторе, несколько раз удаляла и перезапускала эмулятор, а затем снова пыталась запустить его поверх
Я надеюсь, что кто-то мне поможет. Заранее спасибо, и любая помощь будет оценена.