Проблема с библиотекой Android, которая поддерживает только armeabi и x86 - PullRequest
2 голосов
/ 24 апреля 2019

Я разрабатываю приложение для своей компании, и мы столкнулись с проблемой. Мы импортировали библиотеку (не нашу, мы ее купили), и она не работала без установки abiFilters на

ndk {
    abiFilters "armeabi", "x86"
}

, благодаря которой библиотека работает, но Salesforce SDK содержит ошибки / не работает с этим фильтром. Библиотека, которую мы купили - .aar, мы распаковали ее и обнаружили, что библиотеки для armeabiv7 и x86_64 отсутствуют. Есть ли способ заставить .so или что-либо еще искать библиотеку armeabi и x86 JUST для этого модуля без установки фильтра для всего приложения?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Есть ли способ заставить SO или что-либо еще искать библиотеку armeabi и x86 JUST для этого модуля без настройки фильтра для всего приложения?

Ответ НЕТ.

Поскольку на 64-разрядных устройствах, если вы предоставили как 32-разрядные, так и 64-разрядные .so, система выберет 64-разрядную версию для всех библиотек .so. Если какая-то библиотека не имеет соответствующей 64-битной библиотеки, ваше приложение выдаст ошибку java.lang.UnsatisfiedLinkError: Library xxx not found, это связано с тем, что системе нужны согласованные И несмешанные собственные наборы инструкций, то есть либо чистые 64- битовые инструкции или чистые 32-битные инструкции. Вы НЕ МОЖЕТЕ ожидать, что система Android подхватит 64-битную .so для некоторых библиотек, но ожидаете, что она подберет 32-битную .so для других общих библиотек.

В вашем случае abiFilters фактически заставляет все ваши .so файлы иметь только 32-битную версию .so для вашего окончательного apk, чтобы ваше приложение могло работать так, как вы сказали.

0 голосов
/ 24 апреля 2019

Вы можете сделать вид, что библиотека armeabi имеет значение armeabi-v7a .Если вы можете перепаковать файл .aar , просто переместите файл so в jni/armeabi-v7a.Кроме того, вы можете установить библиотеку на app/src/main/jniLibs/armeabi-v7a и установить

ndk {
  abiFilters "armeabi-v7a", "x86"
}
...