Получить Native Lib из данных для системного приложения Android

Я хочу получить собственный путь к библиотеке из данных для моего приложения, которое будет установлено в системе, я пробовал этот код:

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.


person Redturbo    schedule 18.11.2015    source источник
comment
Кажется, ваш целевой SDK — 23 . Пожалуйста, обратитесь к этому вопросу dlopen failed">stackoverflow.com/questions/32845956/, это решит вашу проблему   -  person dex    schedule 18.11.2015
comment
Попробуйте это String libPath = context.getApplicationInfo().nativeLibraryDir +File.separator +libname+.so;   -  person dex    schedule 18.11.2015
comment
это не сработало, я все еще получаю ту же ошибку @dex   -  person Redturbo    schedule 18.11.2015
comment
Не могли бы вы решить вашу проблему? Мое приложение имеет библиотеку и установлено в папку system/priv-app/. И при запуске эти библиотеки находятся в папке /System/lib/. Вот мой вопрос clc.am/0sZpqg   -  person DuosDuo    schedule 16.03.2019