조용한 담장

Flutter : iOS Application Bundle 본문

Flutter

Flutter : iOS Application Bundle

iosroid 2019. 9. 11. 16:13

원문: Flutter’s iOS Application Bundle

Flutter App 은 native view hierarchy 의 single view 에 렌더링 된다.

release 용으로 빌드하면 Frameworks directory 에 "App framework bundle" 와 "Flutter framework bundle" 이 생성된다.

  • Flutter Engine framework bundle (Flutter.framework directory)
    • Flutter engine : core libraries, DartVM, Skia.
    • Flutter engine 이 사용하는 assets.
  • AOT framework bundle (App.framework directory)
    • 개발자가 작성한 모든 dart application 코드의 AOT snapshot

AOT Snapshot

The AOT snapshot library contains the ahead-of-time code compiled from Dart to machine native bits.

gen_snapshot 이 생성하는 snapshot library 의 주 심볼들:

  • Dart VM Snapshot (kDartVmSnapshotData)
  • Dart VM Instructions (kDartVmSnapshotInstructions)
  • Isolate Snapshot (kDartIsolateSnapshotData)
  • Isolate Instructions (kDartIsolateSnapshotInstructions)

gen_shopshot은 application 의 Dart 코드에서 위 심볼들의 blob을 생성하고 Xcode 는 iOS framework bundle 에 패키징 한다.

안드로이드의 경우에는 Flutter engine 이 ELF library (libflutter.so) 로 생성되고, AOT Snapshot 심볼들은 binary blob 형태로 assets 디렉토리에 저장된다. Flutter tool 이 NDK blob 을 asset 에 포함하여 APK를 빌드하기 때문에 따로 NDK가 필요없다. Flutter engine 이 AOT binary blob 를 찾으면 메모리에 매핑한 후 실행가능한 페이지로 바꿈으로 써 Android 에서 Dart 코드가 실행이 가능하게 된다.

'Flutter' 카테고리의 다른 글

Flutter : declarative UI  (0) 2019.10.08
flutter : CustomPaint  (0) 2019.10.07
Flutter 1.9  (0) 2019.09.11
Flutter : Form  (0) 2019.09.06
Flutter : TextField  (0) 2019.09.06
Comments