Флаттер большого размера apk и выпуска для различных ABI - PullRequest
1 голос
/ 07 января 2020

Я пытаюсь создать релизное приложение с небольшим размером файла во Flutter. Вчера размер apk релиза был около 16 Мб, но после того, как я обновил флаттер, размер увеличился до 23 Мб.

После некоторых исследований я обнаружил, что флаттер генерирует пакет приложений со всеми ABI в нем, а после обновления в apk добавляется новый API.

После добавления приложения в android studio apk analyzer, я вижу в них различные ABI, как показано ниже:

x86_64          7.1mb
arm64-v8a       7mb
armeabi-v7a     6.8mb

Я могу использовать flutter build apk --split-per-abi для генерации apks для различных ABI. Теперь вопрос в том, может ли arm64-v8a система запустить x86_64 apk? (или иначе). Или любой из этих выпусков ABI apk можно запустить на всех устройствах?

Я не выпускаю свое приложение в магазинах приложений, я просто размещаю его на своем клиентском веб-сайте, и его клиенты будут загружать его оттуда ( или он будет отправлен им по электронной почте, ...). Поэтому мне нужен один выпуск, который работает на всех устройствах android, а полный выпуск пакета слишком велик (23 МБ).

РЕДАКТИРОВАТЬ: Я только что протестировал x86_64 сборка на arm64-v8a устройство, и оно не установлено. но версия armeabi-v7a установилась.

1 Ответ

1 голос
/ 14 января 2020

Я провел некоторые исследования и попробовал выпустить версии на разных устройствах, и вот результат:

  • Версия x86_64 apk не работает ни на каких других устройствах. Я не смог найти устройство x86_64, но я предполагаю, что оно будет работать на устройствах x86_64!
  • Версия arm64-v8a apk устанавливается на arm64-v8a, но не устанавливается на устройствах armeabi-v7a. (armeabi-v7a старше, чем arm64-v8a).
  • armeabi-v7a версия apk работает на устройствах armeabi-v7a и arm64-v8a. Я не нашел устройство x86_64, но думаю, что оно будет работать и на этом устройстве.

Сводка : более новая версия ABI может запускать более старые сборки apk , Порядок: armeabi-v7a, затем arm64-v8a, затем x86_64.

Например, armeabi-v7a установит и будет работать на всех устройствах, а если вы соберете apk arm64-v8a, он НЕ будет установлен на Устройства armeabi-v7a.

Существуют другие архитектуры, которые больше не используются (mips, mips64, armeabi) и Flutter по умолчанию, не будут содержать их в сборках.

архитектуры X86 и X86_64 предназначены для очень ограниченного числа устройств, но могут быть полезны для отладки в эмуляторе.

Это было результатом моих исследований и испытаний. Я решил использовать только armeabi-v7a, поэтому размер apk будет 8mb вместо 23mb.

Если у кого-то еще возникли вопросы / проблемы, надеюсь, это поможет:).

...