Мне кажется, что подключаемый плагин Android не включает библиотеки версий .so в архив .aar.
Мой случай: мне нужно загрузить некоторую библиотеку в приложение Android, для которой требуется другая библиотека: libz.so.1
У меня есть libz.so
и libz.so.1
в моем каталоге собственных библиотек.
После запуска gradle в созданном архиве .aar есть только библиотека libz.so
.Это приводит к исключению java.lang.UnsatisfiedLinkError: dlopen failed: library "libz.so.1" not found
, когда я пытаюсь запустить мое приложение.
Похоже, что мой otherlibrary
пытается загрузить только эту конкретную версию libz.
readelf -d otherlibrary.so
также говорит мнечто ему нужна конкретная библиотека: 0x00000001 (NEEDED) Shared library: [libz.so.1]
Обе библиотеки, которые я хочу загрузить, являются сторонними библиотеками.Похоже, мне нужно найти способ для одного из следующих действий:
- pack
libz.so.1
в архив .aar, поэтому otherlibrary.so
может легко с ним связываться - load
libz.so
и каким-то образом заставить otherlibrary.so
связываться с ним
но у меня заканчиваются идеи, как это сделать.
Часть build.gradle, которая собирает .aarархив: каталог
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
libs
содержит библиотеки libz.so
и libs.so.1
.В файл .aar собирается только libz.so
.
Эта страница: https://developer.android.com/studio/projects/android-library#aar-contents подсказывает мне, что поддерживается только шаблон /jni/abi_name/name.so
.
С нетерпением ждем помощи.