반응형

📝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 엔진, 그래픽디자인툴 등이 들어가있다.

 

 

🔗 참고 및 출처

https://medium.com/flutter-korea/flutter%EC%9D%98-null-safety-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-dd4ee1f7d6a5

 

 

반응형