Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- darkmode
- mac
- Realm
- Code
- github
- 웹뷰
- iOS16
- Xcode
- UIButton
- Swift
- SwiftUI
- appstore
- 이미지
- geofencing
- Session
- FLUTTER
- rxswift
- error
- window
- Notification
- Git
- Apple
- 한글
- view
- 개발자
- Archive
- Firebase
- JPA
- MacOS
- IOS
Archives
- Today
- Total
EEYatHo 앱 깎는 이야기
2023 Google I/O Extended - Flutter Google I/O 2023 Recap 본문
Flutter/Conference
2023 Google I/O Extended - Flutter Google I/O 2023 Recap
EEYatHo 2023. 8. 5. 13:01반응형
개요
2023 Google I/O Extended 에서,
박제창님이 진행해주신 Flutter 2023 Recap 세션을 정리한다.
발표 자료 제공해주셔서 감사합니다.
Flutter 2023 Recap
Google I/O 2023 에서 Flutter 에 대한 내용을 Recap 하는 세션.
[ 목차 ]
Intro. What's Flutter
1. What's new in Dart and Flutter
2. Design for every device with Flutter and Material 3
3. What's new in Firebase's Flutter
4. Flutter's new rendering engine
5. Evolving Flutter's support for the Web
6. Flutter, Dart, and Raspberry Pi
Intro. What's Flutter
- Flutter = Google의 Flutter팀에서 운영하고 오픈소스 프레임워크.
- 싱글 코드베이스로, 멀티 플렛폼 어플리케이션을 만들 수 있음.
- natively compiled.
- Flutter Architecture Layers.
- Dart 로 만들어진 프레임워크,
C++ 로 만들어진 엔진들 ( Redering 등 ),
플렛폼 스페시픽한 Embedder 들로 이루어짐. - iOS, Android, Web 등 각 플렛폼마다 프레임워크는 동일.
Embedder 과, Rendering Engine 만 달라짐.
- Dart 로 만들어진 프레임워크,
1. What's new in Dart and Flutter
- Dart 3
- 100 % Sound Null Safety
null 로 인한 런타임 에러 없어짐
컴파일 결과물의 크기가 작아짐 + 성능 향상 - Modern Programming
Records 라는 타입(Type) 추가 = Swift 의 tuple
ex. (String, String, Int)
Pattern 라는 구문 카테고리(syntactic category) 추가 = JS의 구조 분해 할당 구문
ex. var (name, age) = SomeReturnTupleFunc() - New Class Modifiers
기존 : abstract, mixin
새로 추가된 것 : base, final, interface, sealed
- 100 % Sound Null Safety
- DevTools
Perfetto 도입? ( 자세히 못들었다.. )
Memory Diff 을 더 쉽게 확인가능.
더 쉬운 디버깅~
2. Design for every device with Flutter and Material 3
- Meterial 3 : 50 여개의 UI 컴포넌트가 추가 지원.
- 새로운 프로젝트를 만들면 기본 App theme 가 Meterial 3 로 변경됨.
기존 프로젝트는 app theme에서 useMeterial3: true 해서 적용. - seedColor 라는 값이 추가됨.
진한 보라색을 seedColor 로 넣어주면, Meterial 컴포넌트에 대한 Color System 을 만들어줌
- Meterial 팀에서 관리하는(!) Color System 에 대한 괜찮은 라이브러리들 추천.
- dynamic_color
- google_fonts
- flutter_adaptive_scaffold
3. What's new in Firebase's Flutter
- Google 은 Firebase 와 Flutter 간의 유연한 연동을 주도하는 중.
- FlutterFire 라는 Firebase 의 Flutter Plugin 이 있고, 각종 문서가 추가 & 업데이트 됨.
- FlutterFire 의 Package(Analytic, FireStore, Crashlytic 등) 들
iOS, Android App 개발에 한해서 풀로 지원됨.
( Web 쪽은 아직 미비된 부분 존재 )
- FlutterFire 의 Window 어플리케이션 개발도 지원? ( 자세히 못들음.. )
4. Flutter's new rendering engine
- 기존에 사용하던 Rendering Engine = SKIA
- 애니메이션을 사용하면 UI Jank ( 프레임이 60 미만으로 떨어지는 현상 ) 이 자주 발생.
= 성능이 구림 - 이런 현상은 2015년 부터 발견되었고,
Bank App 처럼 신빙성을 주어야하는 App 에서 크리티컬한 부분. ( GPay, Google Nust Hub 등 )
- 애니메이션을 사용하면 UI Jank ( 프레임이 60 미만으로 떨어지는 현상 ) 이 자주 발생.
- Flutter 팀에서 직접 Rendering Engine을 만듦 = Impeller
- iOS 는 기본으로 Impeller 적용. ( info.plist 파일에 "FLTEnableImpeller = true" 가 기본으로 들어가있음 )
Android는 AndroidManifest.xml 에 별도로 작업해야 impeller 사용됨. - Impeller를 사용함으로써 3D 렌더링이 가능함
과거에 쓰던 SKIA는 2D 엔진이기 때문. - Layout 방식 개선.
1. Pixcel Level 에서는 모든 것을 삼각형으로 잘라서 Layout 함.
2. Circle을 그릴 때,
SKIA 는 왼쪽 그림처럼 큰 삼각형으로 잡아서 Layout = 불필요한 부분이 많이 잡히고 비효율적.
Impeller 는 오른쪽 그림처럼 원 내부에 많은 삼각형을 만듦.
3. Impeller 는 내부적으로 캐싱을 더 최적화해서, 다시 GPU 연산을 돌려야하는 케이스를 많이 줄임
자세한 설명은 시간 관계상 못해주심..ㅠ
- iOS 는 기본으로 Impeller 적용. ( info.plist 파일에 "FLTEnableImpeller = true" 가 기본으로 들어가있음 )
5. Evolving Flutter's support for the web
- Web 에 대한 변경점.
( 솔직히 App 만 해도 머리가 터졌지만, 들어서 나쁠 것 없지.. ) - CanvasKit 도입 => UI 메모리 사용량 적어짐
- Icon Fonts 도입 => 폰트의 메모리 사용량 적어짐
- 결과물에 WebAssembly 도입. + Arcitecture 로드맵
- 가장 처음 : Flutter를 이용한 결과물이 js 파일뿐.
- 현재 : js + wasm.
- 최종 로드맵 : 모두 wasm 으로 변경.
( 옆에 계신분이 이걸 들으시곤 큰 소리로 감탄하셔서 놀랐던..ㄷㄷ )
6. Flutter, Dart, and Raspberry Pi
- 라즈베리 파이 어플리케이션도 Flutter 로 개발가능.. ㄷㄷ
Comments