Intereting Posts
Обнаружение скрытого / не видимого устройства Bluetooth на мобильных устройствах JQuery Date Time picker, который хорошо работает на iOS / Android Написание PHP API и приложения для Android Белый экран после закрытия полноэкранного видео, открытого из WebView Можете ли вы разработать Android-программы на Android-устройстве Android-планшета Захват снимка экрана на телефоне Android при просмотре видео и камеры Как обнаружить кнопку возврата в SearchView? Есть ли поддержка IDE для создания плагинов Кордовы? Лучший способ определить, был ли текст TextView изменен? RecyclerView: получить позицию и переключиться на активность Как отладить собственное приложение для Android? Отменить регистрацию вещательного приемника, зарегистрированного через манифест Форматы, поддерживаемые BitmapFactory.decodeByteArray (…) OnContextItemSelected не запускается, когда он вызывается из окна диалога Повысить производительность приложения с более чем 80 просмотров на макет

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

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

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

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

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

Немодифицированный оригинальный 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, все равно должно быть все в порядке.

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

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

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

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

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

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