ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Flutter] Flutter는 어떻게 동작하는가?
    📖 개발 공부/flutter 2023. 8. 5. 11:42

    Flutter

    Flutter는 Google에서 개발한 오픈 소스 UI 소프트웨어 개발 키트다.

    이는 구글에서 만들어졌으며 본격적인 출시는 2017년 5월부터 시작되었는데, 무료 오픈 소스이기에 누구나 편리하게 접근이 가능한 모바일 UI 프레임워크이다. 

     

     

     

    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

     

    flutter 애플리케이션이 어떻게 동작하는지 거시적인 관점에서 보자 👀

     

    네이티브 방식이 동작하는 원리

    swift로 ios를, 혹은 java로 android를 만드는 네이티브 앱 개발을 할 때, 우리가 하는 일은 os와 직접적으로 대화를 하게 된다.

    버튼이나 text input 등 모든 요소들을 만들어달라고 운영체제에게 얘기하게 된다.

    → os가 Android  상의 버튼 혹은 iOS 상의 버튼을 만들어준다.

     

    Flutter가 동작하는 원리

    os와 직접적으로 소통하게 되진 않는다. 좀 더 비디오 게임 엔진같이 동작한다.

    flutter는 엔진을 사용하게 된다. 이 엔진들은 c나 c++ 언어로 짜여져있다.

    이것이 우리 어플리케이션의 실제 UI를 렌더링하는데 책임져 줄 flutter 엔진이다.

    → flutter 프레임워크가 우리가 짠 코드를 사용하면서 운영체제와 직접 얘기하진 않는다. 대신에 엔진이 화면상에 우리가 말한 것들을 그려주는 것이다.

     

    ex) unity (비디오 게임 엔진)

    • unity나 C# 언어로 코드를 짜고 나면 코드를 패키징한 후에 앱스토어로 보낸다. 유저가 unity로 만든 그 앱을 다운로드 받을 때 어떤 일이 발생하냐? 그 앱이 개발자가 짠 unity 코드를 실행시킨다. (flutter도 비슷한 원리로 동작하고 있다.)

    엔진이 무언가를 그려주는 역할을 하기 때문에, 플랫폼의 네이티브 위젯을 사용하지 않는다. 핸드폰이나 데스크탑의 운영체제는 어떠한 것도 그려주지 않는다. 오직 엔진을 동작시키는 역할만 수행할 뿐이다. 엔진이 프레임워크를 동작시키고 엔진이 그려주는 역할을 수행하게 된다.

     

    유저가 앱을 실행시키면 flutter 엔진을 동작시키는 runner 프로젝트를 실행하고, 엔진이 dart 코드를 실행시킨다.

     

    1. 사용자가 운영 체제를 통해 앱을 실행시킨다.
    2. 플러터를 기반으로 다트로 작성된 코드를 가져온다.
    3. 운영 체제는 플러터 엔진을 실행시켜 dart 코드를 해석한다.
    4. 플러터 엔진은 dart 코드를 렌더링하기 위한 중간 표현(플러터 엔진만의 코드)으로 변환한다.
    5. 변환된 코드는 Embedder를 통해 운영 체제에 전달되어 화면에 렌더링한다.

    Embedder란?

    Embedderssms 플러터 엔진의 플랫폼 특화 기능과 플랫폼 간의 인터페이스를 관리하며, 플러터 애플리케이션이 특정 플랫폼에서 원활하게 실행되고 상호작용할 수 있도록 지원하는 도구다.
    Embedder는 각 플랫폼에 맞게 구현되어야 하며, 플러터의 크로스 플랫폼 개발을 가능하게 한다.

    플러터 엔진은 코드를 해석하는 번역기라고 한다면, Embedder는 특정 플랫폼(호스트)에 맞게 적응하여 렌더링해주는 것이다.

     

    728x90
    반응형

    댓글

Designed by Tistory.