티스토리 뷰

들어가며

본 게시글은 노마드코더의 Flutter로 웹툰 만들기를 보고 정리한 글입니다.

Flutter Docs : https://docs.flutter.dev/

How Flutter Works

Framework와 Engine

Swift로 iOS나 Java로 안드로이드 네이티브 앱을 개발할 때 네이티브 프레임워크는 운영체제와 직접적으로 소통한다. 반면 Flutter와 Dart는 운영체제와 직접적으로 소통하지 않고 C나 C++로 짜여진 엔진과 소통한다. 엔진은 Flutter 어플리케이션의 실제 UI를 렌더링한다. 운영체제와 직접적으로 소통하지 않고 엔진을 거치기 때문에 운영체제에 내장된 플랫폼 위젯은 사용하지 않는다.

 

즉 운영체제에서는 엔진만 실행하고 엔진은 프레임워크를 동작시킨다.

 

iOS의 경우 엔진의 C/C++ 코드는 LLVM(Low Level Virtual Machine)으로 컴파일되고, Dart 코드는 AOT로 네이티브와 ARM 라이브러리로 컴파일된다. 이 라이브러리들은 .ipa로 빌드되며 "runner" iOS 프로젝트에 포함된다. 따라서 유저가 어플리케이션을 다운받고 실행시키면 엔진은 "ruuner" iOS 프로젝트를 열고 이는 엔진을 실행하고, 엔진은 UI를 렌더링한다.

※ LLVM (Low Level Virtual Machine)은 iOS, MacOS 소프트웨어를 개발하기 위해 사용하던 GCC 컴파일러를 대치하기 위해 Apple이 오픈소스 프로젝트로 진행하고 있는 컴파일러 시스템이다.

 

안드로이드도 마찬가지로 엔진의 C/C++ 코드가 안드로이드의 NDK로 컴파일되고, Dart 코드는 AOT로 네이티브와 ARM, x86 라이브러리로 컴파일된다. 이 라이브러리들은 "runner" 안드로이드 프로젝트에 포함되고 .apk로 빌드된다. 따라서 유저가 어플리케이션을 실행시키면 엔진은 "runner" 프로젝트를 실행하고 엔진이 Dart 코드를 실행시킨다.

※ Android NDK는 C 및 C++와 같은 언어를 사용하여 네이티브 코드로 앱의 일부를 구현할 수 있게 하는 도구 모음이다.

 

Flutter의 문제는 위에서 볼 수 있는 것처럼 네이티브 위젯을 사용하지 않는다는 것이다. 모두 운영체제에 의해 그려지는 실제 네이티브가 아니고 렌더링 엔진에 의해 그려진다. 반면에 이는 Flutter를 통해 네비게이션, 애니메이션 등 호스트에 의존할 필요 없이 통제할 수 있는 것들이 많아진다는 것이기도 하다.

 

Embedder

임베더는 엔진을 실행하는 "runner" 프로젝트를 의미한다. 이는 iOS, 안드로이드, 맥OS, 윈도우, 리눅스를 위한 다양한 임베더가 존재한다.

 

'공부한 내용 정리 > Flutter' 카테고리의 다른 글

Flutter 기초 공부 4: Pomodoro App  (0) 2024.07.22
Flutter 기초 공부 3: 반응형 앱  (0) 2024.07.17
Flutter 생산성 올리는 팁  (0) 2024.07.05
Flutter 기초 공부 2: UI 만들어보기  (0) 2024.06.23
Dart 기초  (0) 2023.07.02
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함