Ошибка INSTALL_FAILED_NO_MATCHING_ABIS с эмулятором для определенных версий API с заглушками с нулевым байтом - PullRequest
0 голосов
/ 10 июня 2019

Мы пытаемся уменьшить размер создаваемого 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 являютсяпроблема.

1 Ответ

0 голосов
/ 20 июня 2019

После некоторой игры мы обнаружили, что ответ довольно прост (хотя и немного странен): изображения эмулятора API 21-25 не распознают архитектуру, если в ней нет файлов, которые выглядят как действительные библиотеки, и в этом случае это означает наличие префикс "lib" Изменение имени заглушки нулевого байта с stub.so на libstub.so решило проблему.

Я полагаю, что это из-за соглашений sonames , но не до конца понимаю, почему некоторые версии эмулятора были строже, чем другие.

Пожалуйста, комментируйте / редактируйте, если можете предоставить более подробную информацию!

...