Рубрики
Flutter

Flutter Build режимы

Инструмент Flutter build поддерживает три режима при компиляции вашего приложения и режим для тестирования. Вы выбираете режим компиляции в зависимости от того, где вы находитесь в цикле разработки. Вы отлаживаете свой код? Вам нужна информация для профилирования? Вы готовы развернуть свое приложение?

Краткое описание того, когда использовать какой режим выглядит следующим образом:

  1. Используйте debug во время разработки, когда вы хотите использовать горячую перезагрузку.
  2. Режим profile, Если вы хотите проанализировать производительность.
  3. Используйте режим release, когда вы готовы выпустить свое приложение.

Остальная часть страницы посвящена более подробному описанию этих режимов. Для получения информации о тестировании читайте Flutter wiki.

Flutter debug

В режиме debug (отладки) приложение настраивается для отладки на физическом устройстве, эмуляторе или симуляторе.

Режим отладки для мобильных приложений означает, что:

  • Assertions включены.
  • Расширения служб (Service extensions) включены.
  • Компиляция оптимизирована для быстрой разработки и выполнения циклов (но не для скорости выполнения, двоичного размера или развертывания).
  • Отладка (debugging) включена, и инструменты, поддерживающие отладку на уровне источника (например, DevTools), могут подключаться к процессу.

Режим Flutter debug для веб-приложения означает, что:

  • Сборка не минифицирована, и tree shaking не было выполнено. Tree shaking (Встряхивание дерева) — это метод оптимизации библиотек путем удаления любого кода из окончательного файла.
  • Приложение компилируется с помощью компилятора dartdevc для упрощения отладки.

По умолчанию flutter run компилируется в режиме отладки. Среда IDE поддерживает этот режим. Android Studio, например, предоставляет опцию меню Run > Debug…, а также зеленая иконка «жука на треугольнике» на странице проекта.

Примечание:

  • Горячая перезагрузка работает только в режиме отладки.
  • Эмулятор и симулятор выполняются только в режиме отладки.
  • Производительность приложения может быть janky в режиме отладки. Измерьте производительность в режиме профиля на реальном устройстве.

Flutter release

Используйте режим release для развертывания приложения, когда требуется максимальная оптимизация и минимальный размер занимаемой памяти. Для мобильных устройств режим release (который не поддерживается на симуляторе или эмуляторе) означает, что:

  • Assertions отключены.
  • Отладочная информация удаляется.
  • Отладка отключена.
  • Компиляция оптимизирована для быстрого запуска, быстрого выполнения и небольших размеров пакетов.
  • Служебные расширения отключены.


Режим выпуска для веб-приложения означает, что:

  • Сборка уменьшена, и было выполнено tree shaking.
  • Приложение компилируется с помощью компилятора dart2js для лучшей производительности.

Команда flutter run --release компилируется в режиме релиза. Среда IDE поддерживает этот режим. Android Studio, например, предоставляет опцию меню Run > Run…, а также кнопка выполнения «зеленый треугольник» на странице проекта. Вы можете скомпилировать в режим выпуска для определенной цели с помощью flutter build. Список поддерживаемых целей, использовать флаттер помочь построить.

Дополнительные сведения см. В документации по выпуску приложений для iOS и Android.

Режим —profile

В режиме profile поддерживается некоторая отладочная способность — достаточная для профилирования производительности вашего приложения. Режим profile отключен на эмуляторе и симуляторе, поскольку их поведение не соответствует реальной производительности. На мобильных устройствах режим профиля аналогичен режиму release, но имеет следующие отличия:

  • Некоторые служебные расширения, например то, которое включает «наложение производительности», включены.
  • Трассировка включена, и к процессу могут подключаться средства, поддерживающие отладку на уровне исходного кода (например, DevTools).

Режим профиля для веб-приложения означает, что:

  • Сборка не уменьшена, но было выполнено tree shaking.
  • Приложение компилируется с помощью компилятора dart2js.

Среда IDE поддерживает этот режим. Android Studio, например, предоставляет опцию меню Run > Profile…. Команда flutter run --profile компилируется в режим профиля.

Примечание: используйте инструменты разработчика DevTools для профилирования производительности приложения.

Дополнительные сведения о режимах сборки см. В разделе Flutter build modes (на англ. языке).

Flutter Build APK

Хотя пакеты приложений предпочтительнее apk, есть магазины, которые еще не поддерживают пакеты приложений. В этом случае создайте APK-релиз для каждого целевого ABI (двоичный интерфейс приложения).

Если вы выполнили шаги подписания, APK будет подписан.

Из командной строки:

  1. Введите cd <app dir> (Замените на каталог вашего приложения.)
  2. Запустите flater build apk —split-per-abi

Эта команда приводит к двум файлам APK:

  • <app dir>/build/app/outputs/apk/release/app-armeabi-v7a-release.apk
  • <app dir>/build/app/outputs/apk/release/app-armeabi-v7a-release.apk

Удаление флага —split-per-abi приводит к созданию fat APK, который содержит ваш код, скомпилированный для всех целевых ABI. Такие APK имеют больший размер, чем их разделенные аналоги, что заставляет пользователя загружать собственные двоичные файлы, которые не применимы к архитектуре их устройства.

О сборке для Android устройств подробнее.

Flutter Build iOS

Запустите flutter build ios для сборки релиза (flutter build по умолчанию выполняется в режиме --release).

Подробнее про сборку для iOS читайте на официальной странице