🫡
Flutter - Dartのコンパイル周りについて
Flutterアプリをコンパイルする
dartはコンパイル言語であるが、dart VM はデバッグモードのJITコンパイルによって、
インタプリタ的に動作させる機能も持っている。
デバッグモード
- JITコンパイル
- 実行時にコンパイルする
- 逐一、実行しながらコンパイルするため変更を即座に反映する
- DartVMにHot ReloadやDebugを行うための全てを含む
- 実行時にコンパイルする
リリースモード
- AOTコンパイルを利用
- 一度にコード全体をコンパイルしてバイナリにする
- DartVM:軽量なランタイムのみを含む
ランタイム
FlutterアプリはJava/KotlinとDartのコードを持つ。
ARTはJava/Kotlinのバイトコードをコンパイルするだけ。
なので、FlutterアプリにはDartVMが含まれ、DartからAOTコンパイルされた機械語を実行する。
ARTがコアエンジンを起動 -> DartVMを起動
https://miro.medium.com/v2/resize:fit:2000/format:webp/1*YLsTgKNY67w_eC3ROqETtA.jpeg
Discussion