Я портирую большой кусок нативного кода с несколькими взаимозависимыми библиотеками. Загрузка кода завершается неудачно, поскольку компоновщик Android ищет зависимости только в /system/lib/
, а не в каталоге установки приложения по адресу /data/data/com.packagename.nnn/lib
.
В качестве первого обходного пути я загрузил все .so из Java с помощью System.load () в правильном порядке зависимости . Это решение мне не подходит в основном потому, что набор библиотек меняется от сборки к сборке из-за архитектуры плагинов. Кроме того, пользовательский интерфейс не должен знать так много о родных библиотеках.
Я обнаружил, что Android не поддерживает RPATH или настройку LD_LIBRARY_PATH для приложения. Единственный обходной путь, который я нашел, - это создание библиотек с полностью квалифицированными SONAME.
Однако некоторые зависимости поставляются предварительно созданными.
Возможно ли скомпилировать полностью определенный тег NEEDED в мою собственную библиотеку, даже если необходимый .so не имеет полностью определенного SONAME?
Или можно изменить существующий .so и заменить его SONAME или NEEDED полностью квалифицированным без перекомпиляции?