Я хочу получить собственный путь к библиотеке из данных для моего приложения, которое будет установлено в системе, я пробовал этот код:
String libPath = "/data/data/" + packageName + "/lib/" + libName+".so";
System.load(libPath);
Но это дает эту ошибку:
java.lang.UnsatisfiedLinkError: ошибка dlopen: библиотека /data/data/xxxx/lib/lib.so не найдена
Я пытался не жестко кодировать его, используя
String libraryPath = context.getFilesDir().getParentFile().getPath() + "/lib/"+libname+".so";
System.load(libraryPath);
но та же ошибка была показана, если я использую этот код:
String libPath = context.getApplicationInfo().nativeLibraryDir +libname+".so";
System.load(libPath);
Приложение попытается получить нативную библиотеку из системы/приложения, и будет показана та же ошибка. Может ли кто-нибудь помочь принудительно получить нативную библиотеку из данных? Может быть, что-то вроде этого
context.getApplicationInfo().nativeLibraryDir
Но принудительно к данным, а не к системе, потому что, когда я пытаюсь показать этот libpath в журнале (когда я пытаюсь установить в данных), он покажет
/data/app/apppackage-1/lib/arm/libname.so
После имени пакета иногда стоит число -1, иногда -2.