Безопасно ли поддерживать только 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, у которых есть другие недостатки.