Flutter

awesome Flutter 2.10 : 플러터 2.10의 새로운 기능 (2022년 2월 4일)

Software for Digital Joy~ 2022. 2. 5. 08:56
반응형

Flutter 2.10의 새로운 기능

Windows 안정, 성능 향상, Material 3 업데이트 등!

Flutter의 안정적인 릴리스를 다시 시작할 때가 되었다는 것이 믿기지 않습니다! 안녕하세요. Flutter 2.10에 오신 것을 환영합니다. 마지막 릴리스 이후 두 달도 채 되지 않았지만 그 짧은 시간 동안에도 전 세계 155명의 기고자로부터 1,843개의 문제가 마감되고 1,525개의 PR이 병합되었습니다. 특히 2021년 홀리데이 시즌 동안 훌륭한 작업을 해주신 모든 분들께 감사드립니다.

Windows에 대한 Flutter 지원에 대한 대규모 업데이트, 몇 가지 중요한 성능 개선, 프레임워크의 아이콘 및 색상에 대한 새로운 지원, 일부 도구 개선을 포함하여 이번 릴리스의 일부로 발표할 몇 가지 흥미로운 사항이 있습니다. 또한 개발자 채널 제거, 이전 버전의 iOS에 대한 지원 축소, 주요 변경 사항에 대한 짧은 목록에 대한 업데이트가 있습니다. 가자!

Windows에서 프로덕션 앱 준비

무엇보다도 Flutter 2.10 릴리스는 안정적인 Windows 지원 릴리스를 제공합니다. Flutter의 안정적인 채널에서 Windows 앱을 생성하는 기능을 얻기 위해 더 이상 플래그를 뒤집을 필요가 없습니다. 이제 기본적으로 사용할 수 있습니다!

물론, 우리는 깃발을 펄럭이는 것보다 훨씬 더 많은 일을 했습니다. 이 릴리스에는 텍스트 처리, 키보드 처리 및 키보드 단축키에 대한 광범위한 개선 사항이 포함되어 있을 뿐만 아니라 명령줄 인수, 전역화된 텍스트 입력 및 액세스 가능성을 지원하는 Windows에 대한 새로운 통합 기능이 포함되어 있습니다.

Windows의 안정적인 출시에 대한 자세한 내용은 Windows 에서 Flutter의 아키텍처를 설명하고 이미 Windows를 지원하는 Flutter 패키지와 플러그인이 얼마나 많은지 알려주는 Windows 용 Flutter 발표 블로그 게시물을 참조하세요. 또한 Windows에서 Flutter를 사용하여 도구 및 앱 파트너가 수행하는 작업의 몇 가지 예를 볼 수도 있습니다!

성능 개선

이번 Flutter 릴리스에는 Flutter 커뮤니티 회원 knopp 이 제공하는 더티 영역 관리 에 대한 초기 지원이 포함됩니다 . 그는 iOS/Metal에서 단일 더티 영역에 대해 부분적으로 다시 그리기를 활성화 했습니다. 이 변경으로 인해 몇 가지 벤치마크에서 90번째 및 99번째 백분위수 래스터화 시간이 크게 줄어들었고 이러한 벤치마크에서 GPU 사용률이 90% 이상에서 10% 미만으로 감소했습니다.

향후 릴리스에서 부분 재도색의 이점을 다른 플랫폼 에 가져올 것으로 기대합니다.

Flutter 2.8 릴리스에서는 자체 내부 사진 녹화 형식을 도입 했습니다. 이제 Flutter 2.10에서 이를 사용하여 최적화를 구축하기 시작했습니다. 예를 들어, 불투명 레이어 의 일반적인 경우 가 이제 훨씬 더 효율적으로 구현 됩니다. 최악의 경우에도 벤치마크의 프레임 래스터 시간은 이전 값의 1/3 미만으로 떨어졌습니다.

사진 기록 형식을 계속 개발하면서 이 최적화가 더 많은 경우를 포함하도록 확장될 것으로 기대합니다.

프로필 및 릴리스 모드에서 Dart 코드는 미리 기본 기계 코드로 컴파일됩니다. 이 코드의 효율성과 작은 크기의 핵심은 많은 컴파일러 최적화와 공격적인 트리 쉐이킹을 잠금 해제하는 전체 프로그램 유형 흐름 분석입니다. 그러나 유형 흐름 분석은 전체 프로그램을 포함해야 하므로 다소 비용이 많이 들 수 있습니다. 이 릴리스에는 유형 흐름 분석의 더 빠른 구현 이 포함됩니다 . 벤치마크에서 Flutter 앱의 전체 빌드 시간은 ~10% 감소했습니다.

항상 그렇듯이 성능 향상, 메모리 사용량 감소, 지연 시간 감소는 Flutter 팀의 우선 순위입니다. 향후 릴리스에서 추가 개선 사항을 기대하십시오.

iOS 업데이트

성능 개선 외에도 일부 플랫폼별 기능 및 개선 사항도 추가했습니다. 한 가지 새로운 개선 사항은 사용자가 작업을 수행할 필요 없이 앱에 자동으로 제공되는 luckysmg 에서 iOS의 더 부드러운 키보드 애니메이션입니다 .

또한 일부 엣지 케이스 충돌 을 수정하여 iOS용 카메라 플러그인의 안정성을 개선했습니다 .

마지막으로 64비트 iOS 아키텍처에는 메모리 사용량을 줄이는 새로운 기능인 압축 포인터 가 있습니다.

64비트 아키텍처는 포인터를 4바이트 데이터 구조로 나타냅니다. 개체가 많으면 포인터 자체가 차지하는 공간이 앱의 전체 메모리 사용량에 추가됩니다. 특히 GC 변동이 더 많고 더 크고 복잡한 앱이 있는 경우에는 더욱 그렇습니다. 그러나 iOS 앱에는 64비트 주소 공간(900만 개체)의 막대한 규모는 고사하고 32비트 주소 공간(20억 개체)의 상당 부분을 필요로 하는 충분한 개체가 있을 가능성이 거의 없습니다.

압축 포인터는 Dart 2.15에서 제공되었으며 이번 Flutter 릴리스에서는 이를 사용하여 64비트 iOS 앱의 메모리 사용량을 줄였습니다. 자세한 내용은 Dart 2.15 블로그 게시물을 확인 하세요 .

그리고 Dart 블로그 게시물을 읽는 동안 pub.dev에서 패키지 플랫폼 태깅과 새로운 검색 경험을 통해 Windows용 Flutter 지원에 대한 업데이트에 대한 Dart 2.16 발표 를 확인하는 것을 잊지 마십시오.

안드로이드 업데이트

이 릴리스에는 Android에 대한 여러 개선 사항도 포함되어 있습니다. 기본적으로 새 앱을 만들 때 Flutter는 기본적으로 최신 버전의 Android , 버전 12(API 레벨 31)를 지원합니다. 또한 이 릴리스에서는 multidex 지원을 자동으로 활성화 했습니다 . 앱이 21 미만의 Android SDK 버전을 지원하고 64K 메서드 제한을 초과하는 경우 또는 플래그를 전달하기만 하면 앱이 multidex를 지원합니다.--multidexflutter build appbundleflutter build apk

마지막으로 중요한 것은 Gradle 오류 메시지가 위협적일 수 있다는 귀하의 피드백을 들었습니다. 이러한 이유로 Flutter 도구는 이제 일반적인 문제에 대한 해결 단계를 제안합니다 . 예를 들어, 지원되는 최소 Android SDK 버전을 높여야 하는 플러그인을 앱에 추가하면 이제 로그에 "Flutter Fix" 제안이 표시됩니다.

우리는 일반적인 오류 메시지에 더 많은 제안을 계속 추가하고 이 처리가 유용할 다른 오류 메시지에 대한 피드백을 받고 싶습니다.

웹 업데이트

이 릴리스에는 웹에서도 몇 가지 개선 사항이 포함되어 있습니다. 예를 들어, 이전 릴리스에서는 TextField웹에서 여러 줄의 가장자리로 스크롤할 때 제대로 스크롤되지 않았습니다. 이 릴리스에는 텍스트 선택을 위한 가장자리 스크롤 이 도입되었습니다 . 선택이 텍스트 필드 외부로 이동할 때 필드가 스크롤 범위를 보기 위해 스크롤됩니다. 이 새로운 동작은 웹 및 데스크톱 앱 모두에서 사용할 수 있습니다.

또한 이번 Flutter 릴리스에는 웹에서 또 다른 주목할만한 개선 사항이 포함되어 있습니다. 우리는 항상 Flutter를 웹에 매핑하는 오버헤드를 줄이기 위해 노력하고 있습니다. 이전 버전에서는 기본 HTML 위젯을 Flutter 앱으로 가져올 때마다 웹에 대한 플랫폼 보기 지원의 일부로 오버레이가 필요했습니다. 이러한 오버레이 각각은 사용자 정의 페인팅을 가능하게 하지만 어느 정도의 오버헤드를 나타냅니다. 앱에 링크와 같은 네이티브 HTML 위젯이 많으면 많은 오버헤드가 추가됩니다. 이번 릴리스에서 우리는 웹용으로 이러한 오버헤드를 근본적으로 제거하는 새로운 "비 회화 플랫폼 보기"를 만들었습니다 . 그리고 우리는 위젯 에서  최적화를 활용 했습니다.Link즉, Flutter 웹 앱에 많은 링크가 있는 경우 더 이상 중요한 오버헤드를 나타내지 않습니다. 이 최적화는 시간이 지나면서 다른 위젯에 적용할 예정입니다.

Material 3

이 릴리스는 단일 시드 색상에서 전체 색상 구성표 를 생성하는 기능을 포함하는 Material 3으로의 전환의 시작입니다 .

ColorScheme모든 색상으로 새 유형 의 인스턴스를 구성할 수 있습니다 .

 

테마의 색 구성표를 생성할 수 있는 팩토리 생성자 에 대한 새 colorSchemeSeed매개변수 도 있습니다.ThemeData

 

또한 이 릴리스에는 구성 요소를 새로운 Material 3 모양으로 전환 하는 플래그가 포함되어 있습니다.
ThemeData.useMaterial3

마지막으로 1,028개의 새로운 머티리얼 아이콘 이 추가되었습니다 .

1,028개의 새로운 머티리얼 아이콘의 작은 샘플

업데이트는 Material 3 작업을 추적하는 문제 에서 찾을 수 있습니다 . 자유롭게 의견을 남겨주세요.

통합 테스트 개선 사항

2020년 12월에 integration_test 패키지를 사용하여 종단 간 테스트를 수행 하는 새로운 방법을 발표했습니다 . 이 새로운 패키지는 통합 테스트를 수행하기 위한 권장 방법으로 flutter_driver 패키지를 대체하여 Firebase Test Lab 지원, 웹 및 데스크톱 지원과 같은 새로운 기능을 제공합니다.

그 이후로 우리는 통합 테스트 스토리에서 통합 테스트 패키지를 Flutter SDK 자체에 번들로 묶는 것을 포함 하여 앱과 더 쉽게 통합할 수 있도록 개선했습니다. 기존 flutter_driver 테스트를 integration_test로 이동하는 경우 새로운 마이그레이션 가이드 도 있습니다 .

새로운 flutter_driver에서 integration_test로의 마이그레이션 가이드의 예

일부 기존 문서 , 샘플  코드랩 도 integration_test에 대해 업데이트되었습니다. 시작하려면 브라우저에서 flutter.dev의 Testing Flutter 앱 페이지로 이동하세요. Flutter 앱에서 아직 integration_test를 사용하고 있지 않다면 지금 시작할 때입니다!

Flutter DevTools

명령줄에서 DevTools를 사용하는 경우 사용하기 쉬운 기능을 포함하여 이번 릴리스에서도 Flutter DevTools에 대한 몇 가지 작업을 수행했습니다. pub global activate를 사용 하여 최신 버전을 다운로드하고 실행하는 대신 , 이제 사용 중인 Flutter 버전과 함께 최신 버전을 사용dart devtools 하고 얻을 수 있습니다.

또한 elliette 덕분에 디버거 변수 창에서 큰 목록 및 맵 검사에 대한 향상된 지원을 포함하여 여러 사용성 업데이트 를 수행 했습니다.

그리고 마지막으로 연례 DevTools 설문조사 를 발표할 예정 입니다! 피드백을 제공하고 개발 경험을 개선하는 데 도움을 주십시오.

이 설문조사 프롬프트는 2월 중순에 DevTools에 직접 표시됩니다. 감사 해요!

VSCode 개선 사항

Flutter용 Visual Studio Code 확장은 코드 의 더 많은 위치에서 색상 미리보기  코드를 업데이트하는 색상 선택기를 포함하여 여러 가지 개선 사항을 얻었습니다 .

또한 VSCode용 Dart 및 Flutter 확장의 시험판 버전에 대한 테스터가 되고 싶다면 확장 설정에서 시험판 버전으로 전환 할 수 있습니다 .

이 업데이트에 대한 자세한 내용과 자세한 내용은 flutter-announce 메일링 리스트의 이 게시물 에서 읽을 수 있습니다 .

개발자 채널 제거

Flutter 2.8 릴리스 에서 개발자 채널 을 제거하고 선택을 단순화하며 엔지니어링 오버헤드 를 제거 하는 작업을 진행 중이라고 발표했습니다 . 이번 릴리스에서는 다음 을 포함하여 해당 작업을 완료했습니다 .

  • 개발자를 개발 채널에서 마이그레이션하는 데 도움이 되도록 Flutter 도구를 업데이트했습니다.
  • 업데이트된 고객 약속을 반영하도록 Wiki 업데이트
  • 업데이트된 지원 중단 정책
  • DartPad, 사전 제출 테스트 및 웹사이트에서 개발자 채널 지원 제거

dev 채널은 이제 제거되었습니다. 자리를 놓친 경우 저희 에게 알려주십시오 .

iOS 9.3.6에 대한 지원 중단

우리 연구실에서 대상 장치를 유지 관리하는 데 있어 사용량이 감소하고 유지 관리가 어려워짐에 따라 iOS 9.3.6에 대한 지원 을 "지원" 계층에서 "최선의 노력" 계층으로 이동 합니다. 이는 iOS 9.3.6에 대한 지원과 32비트 iOS 기기에 대한 지원이 코딩 방식과 임시 및 커뮤니티 테스트를 통해서만 유지된다는 것을 의미합니다.

2022년 3분기 안정 릴리스에서는 Flutter 안정 릴리스에서 32비트 iOS 기기 및 iOS 버전 9 및 10에 대한 지원을 중단할 예정입니다. 즉, 그 이후에 안정적인 Flutter SDK를 기반으로 빌드된 앱은 32비트 iOS 기기에서 더 이상 작동하지 않으며 Flutter에서 지원하는 최소 iOS 버전이 iOS 11로 증가합니다.

주요 변경 사항

우리는 또한 각 릴리스와 이번 릴리스에서 몇 가지 주요 변경 사항 을 적용 하기 위해 노력하고 있지만 아직 0이 되지는 않았지만 계속 시도할 것입니다!

이 API를 계속 사용하고 있다면 flutter.dev에서 마이그레이션 지침을 읽을 수 있습니다 . 항상 그렇듯이 이러한 주요 변경 사항을 식별하는 데 도움이 되는 테스트에 기여한 커뮤니티에 감사드립니다 .

요약

여기 Google Flutter 팀에 있는 우리 모두에게 감사 인사를 전하고 싶습니다. Flutter가 Statista 및 SlashData와 같은 분석가에 의해 측정된 가장 인기 있는 크로스 플랫폼 UI 툴킷이 되도록 도와준 커뮤니티의 일원이 되어주셔서 감사합니다. Windows에 대한 안정적인 지원은 꽉 찬 한 해의 시작에 불과하며 함께 구축할 모든 것이 너무 기대됩니다!

 

※ 이 글은 번역 기사로 원문은 여기에 있습니다.

https://medium.com/flutter/whats-new-in-flutter-2-10-5aafb0314b12

 

What’s New in Flutter 2.10

Windows stable, performance improvements, Material 3 updates and more!

medium.com

 

728x90
반응형