Flutter #2 | How Flutter Works (동작 방식)

HyeonWooGa·2023년 10월 9일
0

Flutter

목록 보기
2/4

How Flutter Works (동작 방식)

Flutter 가 어떻게 코드를 동작시키는지, 어째서 크로스플랫폼 최강자인지,
그리고 제기된 비판점까지

네이티브 프레임워크 동작 방식

  • 우리가 운영체제에게 버튼을 만들어달라고 운영체제와 직접 소통하고,
  • 운영체제가 안드로이드 상의 버튼 혹은 iOS 상의 버튼을 직접 만들어준다.

Flutter 동작 방식

엔진이 프레임워크를 동작시키고 엔진이 그려주는 역할을 수행한다.

Q: "어떻게 Flutter 가 iOS(Android) 상에서 코드를 동작시키나요?"
A: "엔진의 C 및 C++ 코드가 컴파일 됩니다."
A: "그리고 다트 코드는 네이티브 ARM(and x86) 라이브러리로 AOT 컴파일됩니다."
A: "해당 라이브러리는 'runner' iOS(Android) 프로젝트에 포함되고, 이 모든건 .ipa(.apk) 라고 하는 iOS(Android) 어플리케이션의 포맷으로 빌드됩니다.

  • 플러터나 다트는 결코 운영체제와 직접적으로 소통하게 되지 않는다.
  • 플러터는 다른 크로스플랫폼과도 다르게 좀 더 비디오 게임 엔진같이 동작한다.
    • Unity 게임 엔진의 예 (Flutter 와 비슷한 원리)
      1. Unity 나 C# 언어로 코드를 작성후 패키징 한 후 앱스토어롤 보낸다.
      2. 다운로드를 받을때 해당 앱이 Unity 코드를 실행시킨다.
  • 플러터 프레임워크로 작성된 하나의 코드가 있고 엔진이 코드를 실행시킨다. (렌더링, 시스템 이벤트, 텍스트 레이아웃 등)
    • 그 말은 운영체제가 버튼을 만드는 것이 아니라 엔진이 버튼을 만다는 것이다.
    • 운영체제는 엔진을 실행시키기만 한다.
  • 위 아키텍쳐 이미지에서 Embedder 는 특정 플랫폼에 특화된 걸 이야기하고, 엔진을 가동시키는 'runner' 프로젝트를 가리킨다.
    • 따라서 iOS, Android, Mac OS, Windows, Linux 등을 위한 다양한 Embedder 가 존재한다.

Flutter 동작방식에서 각각의 역할

  • 프레임워크 : 엔진에게 도면을 준다.
  • 엔진 : 도면을 보고 캔버스를 불러와 캔버스위에 도면대로 제작한다.
  • 호스트(플랫폼) : 엔진을 키고 엔진이 제작한 것을 그대로 보여준다.

Flutter 의 동작방식이 가능한 이유

  • 엔진의 성능이 정말 좋다 👍
    • 따라서 운영체제와 직접적으로 이야기할 필요없고
    • 모든 플랫폼에서 같은 화면과 동작 구현이 가능하다.
  • 엔진을 또다른 하나의 가상 머신(Virtual Machine, VM) 이라고 생각할 수도 있다.

제기되는 비판점

  1. 네이티브 위젯을 사용하지 않는다.
    • iOS, Android 와 거의 동일하게 보이는 위젯이 실제론 운영체제가 그린 위젯이 아닌 플러터 엔진(C/C++) 이 비슷하게 보이게 그린 위젯이다.
    • 해결하는 방법이 있지만 이로인해 일정 부분에서는 부자연스러운 느낌이 있을수 있다.
    • 하지만 이게 플러터가 Navigation, 애니메이션 등 모든 걸 통제할 수 있다는 장점이 될수도 있다. (호스트에 의존할 필요가 없다.)
    • 근사한 애니매이션이나 다양한 모든 것들을 할 수 있는 이유

가장 중요하게 기억할 점

화면 상에 보여지는 모든 것들은 운영체제(플랫폼, 호스트)가 만든 것이 아닌 Flutter 의 엔진이 만든 것이다.


학습 중에 작성된 내용이므로 틀리거나 부족한 내용이 있을 수 있습니다.

profile
Aim for the TOP, Developer

0개의 댓글