Добавление библиотек с нестандартным расширением *.so.6 в проект AndrodiStudio

Существует библиотека foo.so, собранная для использования в Android приложении. Данная библиотека имеет зависимости от библиотек с расширениями, созданными с учетом правил Linux с указанием версий в суффиксе расширения. Например, librt.so.1. Проблема в том, что данные библиотеки с таким именем на конце не удается упаковать в apk, т.к. расширение, использующее на конце версию типа *.so.1 или *.so.6, при сборке игнорируются. Как результат, либо зависимости вообще не попадают в apk, либо попадают обернутые libname.so. Например, libfoo.so.1.so. Есть ли у кого идеи на эту тему?


Ответы (1 шт):

Автор решения: Barmaley

Народ предлагает следующий 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); //загружаем либу

Отсюда

→ Ссылка