🫡

Flutter - Dartのコンパイル周りについて

2024/06/20に公開

Flutterアプリをコンパイルする
dartはコンパイル言語であるが、dart VM はデバッグモードのJITコンパイルによって、
インタプリタ的に動作させる機能も持っている。

デバッグモード

  • JITコンパイル
    • 実行時にコンパイルする
      • 逐一、実行しながらコンパイルするため変更を即座に反映する
    • DartVMにHot ReloadやDebugを行うための全てを含む

リリースモード

  • AOTコンパイルを利用
    • 一度にコード全体をコンパイルしてバイナリにする
    • DartVM:軽量なランタイムのみを含む

https://zenn.dev/tsuruo/articles/48909d22d49ffe

ランタイム

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

https://blog.stackademic.com/the-journey-of-a-flutter-app-from-source-code-to-execution-on-android-c5ae888fadfe

Discussion