Безопасно ли поддерживать только armeabi-v7a для Android 4 и выше?

Я разработал приложение, которое в основном находится на С++, и, как обычно, скомпилировано NDK в библиотеки .so. Мы знаем, что собственные приложения должны быть построены для каждой архитектуры процессора отдельно; Поэтому у меня есть разные so файлы для armeabi и armeabi-v7a. (Я специально упустил x86 и mips, так как не многие устройства Android с этими архитектурами выпущены.)

Однако размер очень большой, и каждый so файл занимает около 90 MB пробела, и я хочу его уменьшить.

Я знаю, что я могу оставить armeabi-v7a из-за обратной совместимости, но в этом случае приложение будет работать очень медленно.

Принимая во внимание тот факт, что мое приложение поддерживает только ICS Android и выше (minSdkVersion="14"), могу ли я безопасно удалить armeabi и предположить, что все эти новые устройства используют armeabi-v7a? Или некоторые из устройств могут использовать старые архитектуры armeabi, а не armeabi-v7a?

Ответ 1

Немодифицированный оригинальный Android-источник для Android 4.0 и новее по умолчанию не поддерживает ARMv5/ARMv6 (но может быть изменен для сборки для ARMv5/ARMv6 - там созданы собственные сборки, которые запускаются на ARMv6). Я не уверен, что можно получить сертифицированное ARMv6 устройство, совместимое с такими выпусками Android, или если оно применимо только для неофициальных прошивок. Начиная с Android 4.4, CDD (определение совместимости) строго требует ARMv7. Подробнее об этом см. https://android.stackexchange.com/questions/34958/what-are-the-minimum-hardware-specifications-for-android.

Итак, да, возможно, в принципе, вы можете отказаться от armeabi, если для вашего приложения требуется Android 4.0, но я не уверен, есть ли такая официальная гарантия. Если вам нужен Android 4.4, все должно быть в порядке.

Ответ 2

Нет устройств Android 4+, поддерживающих armeabi, но не armeabi-v7a, поэтому вы можете безопасно отказаться от armeabi.

Вы можете проверить это самостоятельно в Google Play: создайте 2 APK (1, который поддерживает armeabi и 1, который поддерживает armeabi-v7a), и попробуйте загрузить их в Google Play. Вы заметите, что у них одинаковое количество поддерживаемых устройств.

Вы даже получите сообщение об ошибке при загрузке в Google Play, если вы разделите APK по архитектуре, пытаясь поддерживать обе архитектуры:

Версия xxx этого приложения не может быть загружена никакими устройствами, поскольку они все получат APK с более высокими кодами версий.

Ответ 3

Как владелец zenfone 2 я бы сказал нет - эти устройства запускают ICS +, но с микроархитектурой x86. Если вы ищете Android на x86% в google, вы должны столкнуться с страницей единства, рассказывающей о рыночной доле различных микроархитектур. Кроме того, есть несколько нишевых продуктов с использованием MIPS-базовых процессоров и запуск ICS +.

Пока есть механизм, позволяющий устройствам x86 android запускать apk, скомпилированные без так для x86, у которых есть другие недостатки.