Flutter 2.10 업데이트 Hello, Windows!
2022년 새 해가 시작되었습니다.
무척 늦은감이 없잖아 있으나,
제 블로그를 봐 주시는 적지만 소중한 모든 분들
새해 복 많이 받으시기 바랍니다.
최근 (사실 글을 드래프트에 묵혀두다보니 한 달이 됐네요…)
Flutter에서는 2.10 업데이트를 발표 하였습니다.
Stable Release, Windows
이번 업데이트 역시 많은 내용을 담고 있으나, 가장 이슈가 되고 있는 부분은
새 Platform 진영의 추가로, Windows가 Release 되었습니다.
기존 Desktop Platform으로 Linux / Mac OS 가 지원 되었었는데,
한국에서 압도적인 사용 비율을 차지하고 있는
Windows 역시 stable 단계로 발표가 되었습니다.
이번 업데이트에 발맞추어, Flutter 에서 제공하던 디자인 가이드가
기존 Material / Cupertino 외에도 Fluent UI를 제공합니다.
(아쉽게도 공식 / 기본 라이브러리는 아니고,
pub.dev에서 별도 라이브러리를 내려 받아야 합니다.)
Windows 업데이트 관련 해서는 아래 게시물을 참고하시면,
더욱 도움이 되실 것 같습니다!
https://timsneath.medium.com/6979d0d01fed
Improvement iOS & Sunsetting iOS 9
iOS 성능 개선
Flutter 2.8 업데이트 중에는 iOS 관련하여 애니메이션 관련 문제가
다소 심각하여 2.5 버전에 머물던 분들이 많이 계신걸로 알고 있습니다.
이번 2.10 업데이트에는 iOS Metal 관련하여 개선작업이 진행 되었고,
Flutter 팀에 의하면 GPU 사용률이 90% 가량 감소한 효과를 거뒀다고 밝혔습니다.
제 개인 연습 어플리케이션에서도 스크롤이 버벅여 보이던 현상이,
이번 2.10 버전 적용 후 상당 수 개선 된 것으로 보아,
2.8 업데이트가 두려웠던 분들은 FVM을 통해 2.5 버전을 잠시 묵혀(?)두시고,
2.10으로 업데이트 해보시는 건 어떠실까요?
참고로 이번에 적용 된 Repaint 로직은 추후 다른 플랫폼에도 적용 예정이라,
타 플랫폼에서의 성능 개선도 몹시 기대 됩니다.
관련 PR
https://github.com/flutter/engine/pull/28801
https://github.com/flutter/engine/pull/29591
iOS 64bit 압축 포인터 적용
Flutter 는 iOS에서의 메모리 사용 상의 개선을 위해 압축 포인터를
Dart 2.15에 적용, Flutter 에는 2.8에 해당 버전이 적용 되었는데요,
이번 릴리즈엔 더욱 적극 차용하여 메모리 개선에 더욱 박차를 가했다는 소식입니다.
관련 게시글
Dart 2.15 Release
Dart 2.16 Release
iOS 9버전 지원 종료 예정
한 편으론 iOS 진영에는 다소 아쉬운 소식도 있는데요,
기존에 제공하던 iOS 9버전에 대한 Flutter 의 지원 종료 예정 소식입니다.
시기는 2022년 3분기 즈음으로 예정되어 있으며,
해당 버전을 타겟으로 개발 하시는 분들이 계시다면,
서비스 관련 공지 및 대응 업데이트를 준비 하셔야 할 듯 합니다.
Update in Android
이번 릴리즈를 통해 새로운 Flutter Project 생성 시,
기본으로 적용되는 Android Target version이 Andorind 12 (API 31)로
선택 되게 수정 되었습니다.
기존에 Flutter를 활용하여 개발을 진행하다보면,
multidex 이슈를 만나고, 항상 Manifest 를 수정 했었던 기억이 있는데요,
이번 릴리즈 부터는 해당 기능을 자동으로 활성화 해 준다는 소식입니다.
이제 Method 개수 때문에 갑작스럽게 개발이 멈추는 일은 줄어들겠습니다.
또한 Flutter fix 가 적용 되어, 개발 중인 프로젝트가
Android 버전이 적합하지 않은 경우 등에 대해 컴파일러가
미리 검출하고 안내해 주는 기능이 추가되었습니다.
알 수 없던 Gradle 에러에 대해 조금 더 원인을 빨리 찾고
해결 할 수 있게 될 것으로 예상됩니다.
Material 3.0
작년 하반기에 Material Design의 3.0 업데이트가 있었는데요,
이번 Release에 Material 3.0이 적용 되었습니다.
기존의 아래의 Seed Color 설정 방식이,
아래와 같이 수정되었습니다.
또한 ThemeData에서 useMaterial3 이라는 플래그를 사용하는 것으로
Material 3.0이 적용 되어 아이콘 등의 형태가 3.0 기준으로 변경 됩니다.
Integration testing
Flutter 팀에서는 2020년 12월에 intergration_test 라는 라이브러리를 통해 end-to-end 테스트와 관련하여 글을 게재한 적이 있었는데요,
2.10 릴리즈에서 해당 라이브러리가 외부 라이브러리가 아닌,
SDK 기본 라이브러리로 변경 되었습니다.
혹시 기존 Flutter_drive 라이브러리를 활용하여 테스트를 진행하시던 분들은
이번 기회에 Flutter 팀에서 제공하는 마이그레이션 문서를 참고하시어,
intergration_test 라이브러리로 변경 하시는 걸 권장 드립니다.
현재 docs.flutter.dev 에서는 Test 관련 문서들도 Flutter_drive 라이브러리
기준으로 작성 되었던 것이 intergration_test 기준으로 수정이 되어있으니,
아직 테스트 코드를 작성하지 않은 분들도
이번 기회에 해당 문서를 참고 하시어 적용 해보시면 좋을 것 같습니다.
Flutter Doc - Test
Flutter Test Sample (Github)
Flutter Codelabs
DevTools Update
Dart의 DevTools 또한 강력 해졌습니다!
저는 개인적으로 Android Studio에서 Flutter를 사용하는데,
내장 Flutter Inspector이 정상적으로 작동하지 않는 부분이 있어서 불편함을 느끼고 있었습니다.
최근 Android Studio 업데이트와 Flutter 업데이트를 통해
이 부분은 확실히 개선되었고,
오히려 웹 브라우저를 통해 실행 되던 DevTools 또한 더욱 강력해지고 빨라져, 사용하는데 더욱 편리해졌습니다.
Goodbye Flutter dev channel
Flutter를 사용할 때 channel을 통해 버전을 분기해서 사용하시는 분들이
적게나마 계실걸로 생각 됩니다.
일반적으로는 기본적인 stable channel을 사용하실텐데,
사실 Flutter에는 stable channel외에도
master, beta, dev 채널 등이 존재하는데,
2.8 까지 운영하던 dev 채널에 대한 지원을 종료하였습니다.
혹시라도 해당 채널을 사용하는 분들이 계시다면,
beta 혹은 stable 채널로의 변경을 고려하시기 바랍니다.
이번 2.10 버전의 핵심 Key는 Windows Stable 업데이트이지만,
그 뒤에도 Material 3, iOS 9에대한 지원 종료 등
꽤 중요한 토픽들도 존재하는데요, 추후 어떠한 기능들이
Flutter 를 사용하는데에 있어 더욱 도움을 받을 수 있을 지 기대됩니다.
(Android 진영에서는 슬슬 신규 Tiramisu의 소식이 들려오고 있는데,
이번 업데이트의 큰 파도도 무사히 넘어갈 수 있길 기원 해 봅니다.)