민프

[Flutter] Flutter 아키텍쳐를 알아보자 본문

[Flutter]

[Flutter] Flutter 아키텍쳐를 알아보자

민프야 2023. 8. 29. 17:59

공식문서를 기준으로 Flutter의 아키텍쳐에 대해서 살펴보자

결론적으로

Flutter Dart 코드는 운영체제와 직접적으로 소통하지 않는다. 
보통 Native 앱 개발을 할 때 버튼이나 Text Input 등 어떠한 요소를 만들어 달라고 하면 각 운영체제에게 전달되게 됨으로써

안드로이드 or IOS에서의 버튼이 만들어지게 되는데

 

Flutter는 그렇지 않다.

실제로 Flutter에는 각 OS마다 버튼을 만들어내는 기능은 존재하지 않는다.

결론적으로는 

Flutter에서는 게임 엔진과 같이 동작하게 되는데

쉽게 말하자면, 캔버스에 그림을 그리듯이 표현한다.

 

Flutter에서 렌더링엔진 (Skia, Impeller)에 대해서 궁금하면 아래 링크로 가서 알아보자

https://minf.tistory.com/239

 

[Flutter] Skia, Impeller 렌더링 엔진에 대해서 알아보자

Flutter의 핵심에는 대부분 C++로 작성되고, Flutter 애플리케이션을 지원하는데 필요한 Flutter 엔진이 있다. 그 Flutter 엔진에는 새 프레임을 칠해야 할 때마다 장면을 래스터화하는 역할을 하는데 렌

minf.tistory.com

 

그럼 Flutter의 아키텍쳐를 살펴보자

 

  • Embedder Platform-specific
    • Embedder는 Flutter 앱이 특정 플랫폼(안드로이드, iOS, 윈도우 등)에서 원활하게 동작할 수 있도록 다양한 역할을 수행합니다.
    • Flutter 애플리케이션은 기본 OS에 대해 네이티브 앱처럼 패키징됩니다.
    • 임베더는 플랫폼별로 적합한 언어로 작성되며,
      서비스 접근(카메라, GPS, 네트워크 등.. 하드웨어와 소프트웨어 서비스에 접근할 수 있도록 Flutter앱과 연결)과
      이벤트 루프 관리를 담당하여서 Flutter 앱이 다른 앱이나 시스템과 원활하게 동작할 수 있게 합니다.
      (현재 안드로이드의 경우 Java 및 C++, iOS 및 MACOS의 경우 Objective-C/Objective-C++,
      윈도우 및 리눅스의 경우 C++입니다. )
    • 임베더를 통해 Flutter 코드는 모듈로서 기존 앱에 통합되거나 전체 앱의 내용이 될 수 있습니다.
  • Engine C/C++
    • 주로 C++로 작성되어 있고, 모든 Flutter 애플리케이션을 지원하는 기본 기능을 제공합니다.
    • 새 프레임이 그려질 필요가 있을 때, 렌더링 엔진(Skia OR Impeller)을 이용해서 랜더링을 합니다.
    • 그래픽, 텍스트 레이아웃, 파일 및 네트워크 I/O, 플러그인 아키텍처, 
      Dart 런타임 및 컴파일 도구 체인을 포함한 Flutter의 핵심 API의 저수준 기능을 제공합니다.
      (Dart 런타임이나 컴파일에 대해서 궁금하다면 아래 링크를 참고하자)
      https://minf.tistory.com/222
  • Flutter Framework
    • 카메라 및 웹뷰와 같은 실제 플러터 앱 개발자가 사용하는 상위 수준의 기능들을 제공하고 있습니다. 

참고링크

https://docs.flutter.dev/resources/architectural-overview

 

Flutter architectural overview

A high-level overview of the architecture of Flutter, including the core principles and concepts that form its design.

docs.flutter.dev

https://docs.flutter.dev/perf/impeller

 

 

Impeller rendering engine

What is Impeller and how to enable it?

docs.flutter.dev

 

 

Comments