민프
[Flutter] Flutter 아키텍쳐를 알아보자 본문
공식문서를 기준으로 Flutter의 아키텍쳐에 대해서 살펴보자
결론적으로
Flutter Dart 코드는 운영체제와 직접적으로 소통하지 않는다.
보통 Native 앱 개발을 할 때 버튼이나 Text Input 등 어떠한 요소를 만들어 달라고 하면 각 운영체제에게 전달되게 됨으로써
안드로이드 or IOS에서의 버튼이 만들어지게 되는데
Flutter는 그렇지 않다.
실제로 Flutter에는 각 OS마다 버튼을 만들어내는 기능은 존재하지 않는다.
결론적으로는
Flutter에서는 게임 엔진과 같이 동작하게 되는데
쉽게 말하자면, 캔버스에 그림을 그리듯이 표현한다.
Flutter에서 렌더링엔진 (Skia, Impeller)에 대해서 궁금하면 아래 링크로 가서 알아보자
그럼 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
https://docs.flutter.dev/perf/impeller
'[Flutter]' 카테고리의 다른 글
[Flutter] animation 효과를 적용해보자 (animationController, SingleTickerProviderStateMixin, vsync) (0) | 2023.09.07 |
---|---|
[Flutter] ThemeData, TextTheme를 적용해서 앱의 테마를 지정해보자 (0) | 2023.09.06 |
[Flutter] Skia, Impeller 렌더링 엔진에 대해서 알아보자 (0) | 2023.08.29 |
[Flutter] PageView를 이용해서 Instagram 릴스 같은 페이지를 만들어보자 (0) | 2023.08.11 |
[Flutter] BottomNavigation을 만드는 방법 (0) | 2023.08.11 |
Comments