Landroid

[Flutter] Skia가 뭐지? 본문

플러터

[Flutter] Skia가 뭐지?

silso 2021. 1. 15. 18:32

Skia is an open source 2D graphics library which provides common APIs that work across a variety of hardware and software platforms. It serves as the graphics engine for Google Chrome and Chrome OS, Android, Flutter, Mozilla Firefox and Firefox OS, and many other products.

Skia는 다양한 하드웨어 및 소프트웨어 플랫폼에서 공통 API를 제공하는 오픈 소스 2D 그래픽 라이브러리입니다.

구글 크롬, Chrome OS, Android, Flutter, Firefox, Firefox OS 등 많은 다른 제품들의 그래픽 엔진 역할을 합니다.

 

 

Skia라는 단어는 2017년 플러터의 출시로 크게 알려졌습니다.

특히 플러터의 UI 렌더링에 대해 설명하면 거의 무조건 "Skia 엔진을 사용합니다."라고 합니다.

 

하지만 Skia는 2005년에 구글에 인수되고 2008년에 오픈소스로 출시되었을 만큼 생각보다 오래된 2D 그래픽 라이브러리입니다. 

 

공식문서 : https://skia.org/

오픈소스 : https://skia.googlesource.com/skia

오픈소스(깃허브) : https://github.com/google/skia

 

더보기

Skia는 오래된 라이브러리임에도 불구하고

제대로 된 자료나 정보들이 공식문서 외에는 거의 없다는 것이 의문이다.

 

 

 

안드로이드 그래픽 시스템

 

그림을 보면 Canvas가 HWUI와 Skia를 이용해서 Surface로 요청을 하는 구조이며

현재도 Canvas는 Skia엔진으로 구현됩니다.

 

노출 영역 및 SurfaceHolder(Last updated 2019-12-02 UTC.)

 

그래서 Skia는?

Flutter는 각각의 디바이스에서 렌더링 하는 방법으로 Skia를 사용하기 때문에 각각의 디바이스에 제한 없이 동일한 화면으로 렌더링이 가능합니다.

각각의 디바이스들의 Native Component를 사용하지 않기 때문에, 동일한 스타일의 화면을 만들어 낼 수 있습니다.

Flutter는 React와 ReactNative에서 영감을 받았기 때문에, 개발자로 하여금, 구현 코드와 상태 관리에만 신경을 쓰게 하여, 렌더링의 복잡도를 줄이고, 빠른 구현이 가능하게 합니다.

Comments