Включите нативную библиотеку .so с определенной версией в Android .aar архив - PullRequest
3 голосов
/ 11 марта 2019

Мне кажется, что подключаемый плагин 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.

С нетерпением ждем помощи.

...