Flutterの3種類のビルドモード
最近公式ドキュメントを読むのが、英語の勉強にもなっているなと感じています。もしかしたら何かしらに役に立つかなと思い、特徴を簡単にまとめてみました。
Debug mode
開発中にデフォルトで使用するモード。エミュレータ、シュミレータ、実機でデバッグ可能。開発や実行サイクルを早めるため、コンパイルが最適化されている(実行スピードやバイナリサイズは最適化されない)。
特徴
- Hot reloadが使える(とにかく便利)
- デバッグが有効
- Assertionsが有効
-
debugAllowBanner
,debugDumpApp
,debugDumpRenderTree
,debugPaint
などの拡張機能が使える
Release mode
アプリのリリースの準備ができていて、デプロイするときに使用。エミュレータやシュミレータは非対応。
特徴
- デバッグ情報は削除され、無効化
- Assertionsは無効
- パフォーマンスを高めるためにコンパイルが最適化
-
debugAllowBanner
,debugDumpApp
,debugDumpRenderTree
,debugPaint
などの拡張機能が使えない - Webアプリではビルドの縮小や不要なコードの削除が行われる
Profile mode
アプリのパフォーマンスを分析する時に使用。Debug modeとRelease modeの間のような感じ。エミュレータやシュミレータには非対応(パフォーマンスを見たいのに、実際のパフォーマンスとしてふさわしくないから)。Release modeに近いが、いくつか違いがある。
特徴
- いくつかの拡張機能が使用可能(アプリのパフォーマンスに関わるもの)
- Webアプリでは不要なコードの削除は行われる
こういった知識が開発に特設役立つことは無さそうですが、いずれどこかで役立つ日を祈って記録…
参考
https://docs.flutter.dev/testing/build-modes
https://stackoverflow.com/questions/68263666/what-is-service-extensions-in-flutter