Добавление библиотек с нестандартным расширением *.so.6 в проект AndrodiStudio
Существует библиотека foo.so, собранная для использования в Android приложении. Данная библиотека имеет зависимости от библиотек с расширениями, созданными с учетом правил Linux с указанием версий в суффиксе расширения. Например, librt.so.1. Проблема в том, что данные библиотеки с таким именем на конце не удается упаковать в apk, т.к. расширение, использующее на конце версию типа *.so.1 или *.so.6, при сборке игнорируются. Как результат, либо зависимости вообще не попадают в apk, либо попадают обернутые libname.so. Например, libfoo.so.1.so. Есть ли у кого идеи на эту тему?
Ответы (1 шт):
Народ предлагает следующий workaround:
1)Пихаем все *.so.X в assets
2)В рантайме вытаскиваем либу из assets сохраняем ее во внутреннее хранилище приложения
3)Загружаем сохраненную нативную либу из внутреннего хранилища
AssetManager am = applicationContext.getAssets();
in = am.open(SO_LIB_NAME);
File privateStorageDir = applicationContext.getFilesDir();
String libPath = privateStorageDir.getAbsolutePath(); // копируем либу сюда
System.load(libPath + "/" + SO_LIB_NAME); //загружаем либу