Kotlin
A concise multiplatform language developed by JetBrains
Compose Multiplatform 1.7.0 출시
Compose Multiplatform은 개발자가 다양한 플랫폼에서 UI 구현을 공유할 수 있도록 JetBrains에서 설계한 선언적 UI 프레임워크입니다. 1.7.0 릴리스는 공통 코드의 구성 요소 추가, 타입에 안전한 탐색 지원, iOS에서의 큰 성능 개선을 제공하고 최신 Jetpack Compose 업데이트의 변경 사항을 포함합니다.
이번 릴리스의 주요 특징은 다음과 같습니다.
- 이제 Material3의
adaptive
와WindowSizeClass
가 공통 코드에서 제공됩니다. - Compose Multiplatform이 탐색 그래프에 이제 컴파일타임 안전성을 제공합니다.
- Compose Multiplatform 1.7.0은 Kotlin 2.0.20과 함께 사용 시 기존의 안정화 릴리스보다 iOS에서 훨씬 더 빠르고 부드럽게 작동합니다.
전체 변경 목록은 새로운 기능 또는 GitHub의 릴리스 노트를 참조하세요.
새로운 공통 모듈
Compose Multiplatform 1.7.0은 다음 구성 요소를 공통 코드에서 제공합니다.
adaptive
,adaptive-layout
,adaptive-navigation
과 같은material3.adaptive
의 Material3 적응형 모듈- Material3 적응형 탐색 스위트
- Material3
WindowSizeClass
클래스 material-navigation
라이브러리
타입에 안전한 탐색
이제 Compose Multiplatform에서 탐색 그래프의 컴파일타임 안전성이 확보됩니다. 타입 안정성을 보장하기 위해, Jetpack Compose의 타입에 안전한 방식을 탐색 경로를 따라 객체를 전달하는 데 적용하였습니다.
API에 관한 자세한 내용은 Navigation Compose의 타입 안정성 가이드를 참조해 주세요.
iOS상에서의 성능 개선
Compose 앱이 iOS에서 훨씬 더 빠르고 부드럽게 실행되도록, Kotlin/Native 팀이 Kotlin 2.0.20으로 많은 도움을 주었습니다. Compose Multiplatform 1.7.0 릴리스는 이러한 최적화와 더불어 Jetpack Compose 1.7.0의 성능 개선 사항도 최대한 활용합니다.
Kotlin 2.0.0과 Compose Multiplatform 1.6.11를 함께 사용하고, Compose Multiplatform 1.7.0과 Kotlin 2.0.20을 함께 사용하여 벤치마크를 수행하고 비교한 결과 다음과 같이 개선되었습니다.
- LazyGrid 벤치마크는 실제 사용 사례와 가장 유사한
LazyVerticalGrid
스크롤링을 시뮬레이션하며, 평균 9% 빠르게 작동합니다. 또한, 누락된 프레임의 수가 크게 감소된 것이 확인됩니다. 아래의 p1/p50 백분위 그래프를 보면, 120Hz iPhone 화면의 표준 지연 시간인 8.33밀리초보다 평균 처리 시간이 단축됨에 따라 프레임 안정성이 증가하고 누락된 프레임이 거의 없는 것을 확인할 수 있습니다. - VisualEffects 벤치마크는 무작위로 배치된 수많은 구성 요소를 렌더링하며, 3.6배 빠르게 작동합니다. 1000프레임당 평균 CPU 시간은 8.8초에서 2.4초로 줄었습니다.
AnimatedVisibility
컴포저블은 이미지를 표시하고 숨기는 동작을 애니메이션 처리하며, 여기에서 렌더링 속도가 6%까지 빨라진 것이 확인됩니다.
자유롭게 직접 테스트해 보고 여러분의 iOS 앱이 더 부드럽게 작동하는지 알려주세요!
이뿐만 아니라 Kotlin 2.0.20은 가비지 컬렉터(GC)의 동시 마킹도 실험적으로 지원합니다. 동시 마킹을 활성화하면 GC 중지 시간이 줄어들고 모든 벤치마크에서 더욱 성능이 향상됩니다. LazyGrid 벤치마크에서는 누락되는 프레임이 이전의 절반밖에 되지 않았으며, 가장 심한 p25 GC의 중지 시간은 1.7밀리초에서 0.4밀리초로 감소했습니다. 사용해 보고 피드백을 공유해 주세요.
Compose Multiplatform 1.7.0으로 업데이트하기
Compose Multiplatform과 네이티브 iOS 간의 터치 상호 운용성 개선
이 릴리스에서는 iOS 상호 운용성 뷰의 터치 처리가 개선됩니다. 커다란 상호 운용성 동영상 플레이어가 지연 목록(lazy list)처럼 스크롤 가능한 컨텍스트에서 사용되는 상황을 생각해 보세요. 화면 대부분을 영상이 차지해서 모든 터치를 가로막고 있는데 Compose Multiplatform이 이를 인식하지 못한다면 목록을 스크롤하기가 매우 불편할 것입니다.
이제 Compose Multiplatform은 터치가 상호 운용성 뷰에 필요한 것인지 아니면 Compose로 처리해야 할지 탐지합니다. 이를 통해 Compose Multiplatform 앱 내의 UIKit 또는 SwiftUI 영역에서 발생한 터치 이벤트를 처리할 수 있습니다.
자세한 내용은 iOS에서 상호 운용성과 함께 터치 이벤트 처리 문서 페이지를 참조하세요.
데스크톱에서 드래그앤드롭 구현
Compose Multiplatform 1.7.0은 데스크톱에서 드래그앤드롭을 구현합니다. 이제 dragAndDropSource
와 dragAndDropTarget
제어자를 사용하여 어떤 composable이 드래그 지점을 시작하고 드롭된 데이터를 받을지 지정할 수 있습니다.
공유 요소 전환
이제 Compose Multiplatform에서 일관된 요소를 공유하는 컴포저블 간에 부드럽게 전환할 수 있습니다. 이러한 전환은 UI의 변경되는 흐름을 사용자가 잘 따라갈 수 있도록 도와주기 때문에 탐색할 때 유용합니다. API 및 Android 샘플에 관한 자세한 내용은 Jetpack Compose 문서를 참조하고, 다른 플랫폼에서도 새로운 애니메이션을 사용해 보세요.
리소스 업데이트 및 개선
이번 릴리스에는 다양한 리소스 업데이트가 포함되어 있습니다. 그 중에서 가장 눈에 띄는 업데이트를 살펴보겠습니다.
- 리소스 라이브러리가 이제 Compose Multiplatform 프로젝트에서 테스트 리소스를 지원합니다.
- 모든 멀티플랫폼 리소스가 이제 Android 애셋에 포함되어 Android Studio가 Android 소스 세트 내 Compose Multiplatform 컴포저블의 미리보기를 생성할 수 있습니다.
- WebView나 미디어 플레이어 같은 외부 라이브러리의 URI를 통해 Android 리소스에 직접 액세스할 수 있습니다.
- 구성 DSL의 새로운
customDirectory
설정을 사용하여 사용자 지정 디렉터리와 특정 소스 세트를 연결할 수 있습니다. - 리소스가 문자열 ID와 매핑되어 액세스가 편리해졌습니다.
다른 유용한 글
- Compose Multiplatform 1.7.0 – GitHub 릴리스 노트
- Compose Multiplatform 1.7.0의 새로운 기능 – 문서 포털에 있는 상세한 릴리스 노트
- Compose Multiplatform 시작하기– 튜토리얼
- Kotlin 2.0.20 릴리스– 블로그 게시글
게시물 원문 작성자