Мы пытаемся уменьшить размер создаваемого APK с помощью packagingOptions
, чтобы исключить собственные библиотеки для некоторых архитектур, которые не популярны для приложения - мы рады, что некоторые части приложения неработать над ними:
packagingOptions {
exclude 'lib/x86/lib.so'
exclude 'lib/x86_64/lib.so'
}
Конечно, мы не хотим, чтобы приложение не могло быть установлено (из-за INSTALL_FAILED_NO_MATCHING_ABIS
из-за отсутствующих архитектур), поэтому мы включаем в него AAR снулевые байтовые заглушки.Содержимое AAR выглядит следующим образом:
$ jar tf stubs.aar
jni/
jni/armeabi-v7a/
jni/armeabi-v7a/stub.so
jni/x86/
jni/x86/stub.so
jni/arm64-v8a/
jni/arm64-v8a/stub.so
jni/armeabi/
jni/armeabi/stub.so
jni/x86_64/
jni/x86_64/stub.so
Однако мы обнаружили, что, хотя это решение в основном работало должным образом, мы все равно не смогли установить приложение на стандартный эмулятор Android SDK с образом x86.Углубившись вглубь, мы обнаружили, что мы можем установить приложение на эмуляторе, используя образы x86 для API 26+, но установка на API 21-25 завершилась неудачно с INSTALL_FAILED_NO_MATCHING_ABIS
.
.быть решением этой проблемы на API 21-25?
EDIT : при дальнейшем тестировании похоже, что установка работает для API 16-19 и что только 21-25 являютсяпроблема.