반응형
📝Flutter
dart라는 구글에서 개발한 언어로 크로스 플랫폼이 가능한 강력한 프레임워크로 Android, iOS, Web 등 하나의 언어로 개발이 가능하다 C, C++ 로 구현된 엔진을 사용한다
📝Flutter 장점
- 다트(Dart) 언어 사용
- Flutter는 Google에서 개발한 Dart 언어를 사용합니다. Dart는 JIT(Just-In-Time) 및 AOT(Ahead-Of-Time) 컴파일러를 지원하여 빠른 개발 및 성능 최적화를 제공합니다.
- NullSafety
- 애플리케이션 실행 중 null 참조 에러가 많이 발생합니다. null safety는 이 문제를 코드가 실행되기 전 컴파일러가 해당 버그를 잡아줌으로써 예상치 못한 상황을 대비할 수 있게 해줍니다. null을 없애자는 게 아닙니다.
- 위젯 기반 아키텍처
- UI요소를 위젯으로 정의하는데 위젯은 독립적이고 재사용이 가능합니다.
- 크로스 플랫폼
- Flutter는 하나의 코드베이스로 iOS, Android, Web, Desktop App 개발이 모두 가능합니다.
📝Flutter 단점
- 불완전한 크로스플랫폼
- 앱에는 좋지만 데스크탑이나 웹에는 좀 아쉽습니다.
- 구글
- 구글은 진행중인 프로젝트를 가져다 버리는 경우가 허다합니다. 매력적인 프레임워크지만 버려질 가능성도 있다는 문제점이 있습니다.
- 성능
- 네이티브보다 성능이 떨어지긴한다. 얼마나 차이있는지는 비교를 못해서 솔직히 잘 모르겠습니다.
📝Flutter 아키텍처
Framework
Framework는 사용자가 직접 개발하는 부분으로 이 계층은 주로 UI와 관련된 로직과 기능을 제공합니다.
- Material
- 구글의 머티리얼 디자인 가이드라인에 따른 UI 구성 요소들을 제공합니다.
- Cupertino
- 애플의 iOS 스타일의 UI 구성 요소들을 제공합니다.
- Widgets
- Flutter 애플리케이션의 기본 빌딩 블록입니다. 모든 UI 구성 요소들은 위젯으로 표현됩니다.
- Rendering
- 위젯을 렌더링 트리로 변환하여 화면에 그릴 수 있는 레이아웃을 계산합니다.
- Animation
- 애니메이션을 위한 기능들을 제공합니다. 시간에 따라 위젯의 상태를 변경하는 등의 작업을 담당합니다.
- Painting
- 화면에 직접 그리기 위한 저수준의 도구들을 제공합니다.
- Gestures
- 사용자의 입력 제스처(탭, 스와이프 등)를 처리하는 기능을 제공합니다.
- Foundation
- Flutter의 기본 기능들을 제공하며, 다른 모든 상위 모듈들이 이를 기반으로 동작합니다.
Engine
C++로 작성된 Flutter 엔진으로 다양한 플랫폼에서 UI를 동일하게 렌더링하기 위해 필수적인 기능을 제공합니다.
- Service Protocol
- 개발 중 디버깅과 관련된 서비스들을 관리합니다.
- Composition
- 여러 레이어의 화면을 결합하여 최종 렌더링 결과를 만듭니다.
- Platform Channels
- Flutter와 네이티브 코드(Android, iOS 등) 간의 통신을 처리합니다.
- Dart Isolate Setup
- Dart의 비동기 작업을 관리하는 Isolate의 설정을 처리합니다.
- Rendering
- 위젯을 실제로 화면에 그리기 위해 필요한 모든 렌더링 작업을 수행합니다.
- System Events
- 시스템 이벤트(예: 네트워크 상태 변경 등)를 처리합니다.
- Dart Runtime Management
- Dart 런타임을 관리하여 앱이 올바르게 동작하도록 합니다.
- Frame Scheduling
- 애플리케이션의 프레임 렌더링 스케줄을 관리합니다.
- Asset Resolution
- 이미지나 폰트 같은 애셋을 로드하고 적절한 해상도로 변환합니다.
- Frame Pipelining
- 프레임을 렌더링할 때 효율적으로 처리되도록 파이프라인을 구성합니다.
- Text Layout
- 텍스트를 레이아웃하고 렌더링합니다.
Embedder
각 플랫폼에 맞게 Flutter 애플리케이션을 통합하고 실행할 수 있게 하는 역할을 합니다.
- Render Surface Setup
- 렌더링을 위해 필요한 표면을 설정합니다. 각 플랫폼마다 다를 수 있습니다.
- Native Plugins
- 플랫폼 별로 네이티브 기능(카메라, GPS 등)에 접근할 수 있게 해주는 플러그인을 관리합니다.
- App Packaging
- 앱을 패키징하여 배포 가능한 형태로 만듭니다.
- Thread Setup
- 앱이 실행되는 스레드를 설정합니다.
- Event Loop Interop
- 이벤트 루프와 네이티브 이벤트를 통합하여 상호 작용할 수 있게 합니다.
📝Flutter 아키텍처 (다른 관점)
- Dart App
- Dart로 작성된 애플리케이션 코드.
- Framework
- Flutter 기반 위젯과 API를 제공하는 프레임워크.
- Engine
- Dart 코드를 실행하고 UI를 렌더링하는 역할.
- Embedder
- 네이티브 시스템과 Flutter 엔진 간의 통신을 관리.
- Runner
- 각 플랫폼(iOS, Android)에서 앱을 실행할 수 있게 하는 환경을 제공.
📝 플러터 빌드 내용
Dart언어, Flutter 엔진, 그래픽디자인툴이 들어간 녀석을 Android 또는 iOS와 연결시켜 빌드 파일을 만든다. 빌드 파일안에는 Dart언어, Flutter 엔진, 그래픽디자인툴 등이 들어가있다.
🔗 참고 및 출처
반응형