Gradle исключает библиотеки arm64

У меня есть приложение, включающее две библиотеки, обе из которых зависят от собственных библиотек. Оба включены с помощью gradle, поэтому структура выглядит следующим образом:

Мое приложение

- Libary1
-- x86, armeabi native libs
- Library2
-- Library3
--- x86, armeabi, arm64-v8a

Я хочу удалить поддержку arm64, так как мне также понадобится этот *.so для Library1, которого у меня нет. (поэтому в настоящее время я получаю UnsatisfiedLinkError на устройствах arm64)

Я уже пробовал это: (с abiFilters "armeabi", "x86") https://stackoverflow.com/a/30799825/3325222< /а>

Но я все еще получаю папку arm64 и файлы *.so в моем apk... я что-то упускаю? Этот материал abiFilter должен работать даже в том случае, если нативные библиотеки находятся глубже в иерархии зависимостей, верно?

Заранее спасибо за любую поддержку :)


person yekretsaM    schedule 07.09.2015    source источник


Ответы (2)


Я нашел решение, исключив определенные файлы *.so, которые были только что добавлены в архитектуры, которые я не хотел поддерживать:

packagingOptions {
  exclude 'lib/arm64-v8a/lib.so'
  exclude 'lib/mips/lib.so'
}
person yekretsaM    schedule 08.09.2015
comment
Герой! Благодарю вас! Я исключил все jnis, используя exclude 'lib/**' (2 звездочки). См.: google. github.io/android-gradle-dsl/current/ - person qwlice; 23.01.2019

https://stackoverflow.com/a/30799825/3325222 сработало для меня в аналогичной ситуации. Однако это решение фактически устарело.

В экспериментальной версии Gradle 2.5 появилась новая поддержка SDK, которая поддерживает архитектурные фильтры: http://tools.android.com/tech-docs/new-build-system/tips

person kos    schedule 20.10.2015