Wear OS에서 Jetpack Compose 사용

Wear OS용 Compose는 모바일용 Compose와 유사합니다. 하지만 몇 가지 주요 차이점이 있습니다. 이 가이드에서는 유사점과 차이점을 설명합니다.

Wear OS용 Compose는 Android Jetpack에 포함되어 있으며 사용되는 다른 Wear Jetpack 라이브러리와 마찬가지로 더 나은 코드를 더 빠르게 작성할 수 있도록 합니다. 이는 Wear OS 앱용 사용자 인터페이스를 빌드하는 데 권장되는 방식입니다.

Jetpack Compose 도구 키트를 사용하는 데 익숙하지 않다면 Compose 개발자 과정을 확인하세요. 모바일 Compose의 여러 개발 원칙이 Wear OS용 Compose에 적용됩니다. 선언형 UI 프레임워크의 일반적인 이점에 관한 자세한 내용은 Compose를 사용해야 하는 이유를 참고하세요. Wear OS용 Compose에 관한 자세한 내용은 Wear OS용 Compose 개발자 과정 및 GitHub의 Wear OS 샘플 저장소를 참고하세요.

호환성

Wear OS용 Compose는 Wear OS 3.0(API 수준 30)을 지원하는 시계와 Wear OS 2.0(API 수준 25 이상)을 사용하는 시계에서 작동합니다. Wear OS용 Compose 버전 1.0을 사용하려면 androidx.compose 라이브러리 버전 1.2와 Kotlin 1.7.0을 사용해야 합니다.

표시 경로

Wear OS용 Compose를 사용하면 Wear OS에서 앱을 더 쉽게 빌드할 수 있습니다. 자세한 내용은 을 참고하세요. 기본 제공되는 구성요소를 사용하여 Wear OS 가이드라인을 준수하는 사용자 환경을 만드세요. 구성요소에 관한 자세한 내용은 디자인 안내를 참고하세요.

설정

Wear OS에서 Jetpack Compose를 사용하는 방법은 다른 Android 프로젝트에서 Jetpack Compose를 사용하는 방법과 비슷합니다. 주요 차이점은 Wear용 Jetpack Compose는 시계에 맞춤설정된 사용자 인터페이스를 쉽게 만들 수 있도록 하는 Wear 전용 라이브러리를 추가한다는 점입니다. 때로 이러한 구성요소는 androidx.wear.compose.material.Buttonandroidx.compose.material.Button과 같은 비 Wear 구성요소와 동일한 이름을 공유합니다.

Android 스튜디오에서 새 앱 만들기

Jetpack Compose가 포함된 새 프로젝트를 생성하려면 다음 단계에 따라 진행하세요.

  1. Welcome to Android Studio 창에 있다면 Start a new Android Studio project를 클릭합니다. 이미 Android 스튜디오 프로젝트가 열려 있다면 메뉴 바에서 File > New > Import Sample을 선택합니다.
  2. Compose for Wear를 검색하고 Compose for Wear OS Starter를 선택합니다.
  3. Configure your project 창에서 다음을 수행합니다.
    1. Application name을 설정합니다.
    2. 샘플의 Project location을 선택합니다.
  4. Finish를 클릭합니다.
  5. Gradle 속성 파일에 설명된 대로 프로젝트의 build.gradle 파일이 올바르게 구성되었는지 확인합니다.

이제 Wear OS용 Compose를 사용하여 앱 개발을 시작할 준비가 되었습니다.

Jetpack Compose 도구 키트 종속 항목

Wear OS와 함께 Jetpack Compose를 사용하려면 다음 스니펫과 같이 앱의 build.gradle 파일에 Jetpack Compose 도구 키트 종속 항목을 포함해야 합니다.

Kotlin

dependencies {
    // General compose dependencies
    implementation("androidx.activity:activity-compose:1.8.2")
    implementation("androidx.compose.ui:ui-tooling-preview:1.6.4")
    // Other compose dependencies

    // Compose for Wear OS Dependencies
    implementation("androidx.wear.compose:compose-material:1.3.0")

    // Foundation is additive, so you can use the mobile version in your Wear OS app.
    implementation("androidx.wear.compose:compose-foundation:1.3.0")

    // Wear OS preview annotations
    implementation("androidx.wear.compose:compose-ui-tooling:1.3.0")

    // If you are using Compose Navigation, use the Wear OS version (NOT THE MOBILE VERSION).
    // Uncomment the line below and update the version number.
    // implementation("androidx.wear.compose:compose-navigation:1.3.0")

    // Testing
    testImplementation("junit:junit:4.13.2")
    androidTestImplementation("androidx.test.ext:junit:1.1.3")
    androidTestImplementation("androidx.test.espresso:espresso-core:3.4.0")
    androidTestImplementation("androidx.compose.ui:ui-test-junit4:1.0.3")
    debugImplementation("androidx.compose.ui:ui-tooling:1.0.3")
}

차이점

가능하면 WearComposeMaterial 버전의 API를 사용하세요. 기술적으로는 모바일 버전의 Compose Material을 사용할 수 있지만 Wear OS의 고유한 요구사항에 최적화되어 있지는 않습니다. 또한 Compose Material을 Wear OS용 Compose Material과 함께 사용하면 예기치 않은 동작이 발생할 수 있습니다. 예를 들어 라이브러리마다 자체 MaterialTheme 클래스가 있으므로 두 버전을 모두 사용하면 색상이나 서체, 모양이 일관되지 않을 수 있습니다.

다음 표는 Wear OS와 모바일 간의 종속 항목 차이점을 간략히 보여줍니다.

Wear OS 종속 항목

(androidx.wear.*)

비교 모바일 종속 항목

(androidx.*)

androidx.wear.compose:compose-material 오른쪽 대신 androidx.compose.material:material
androidx.wear.compose:compose-navigation 오른쪽 대신 androidx.navigation:navigation-compose
androidx.wear.compose:compose-foundation 오른쪽 항목에 추가 androidx.compose.foundation:foundation

다음은 build.gradle 파일의 예입니다.

// Example project in app/build.gradle file
dependencies {
    // Standard Compose dependencies...

    // Wear specific Compose Dependencies
    implementation "androidx.wear.compose:compose-material:$rootProject.wearVersion"
    implementation "androidx.wear.compose:compose-foundation:$rootProject.wearVersion"

    // For navigation within your app...
    implementation "androidx.wear.compose:compose-navigation:$rootProject.wearVersion"

    // Other dependencies...
}

의견

Wear OS용 Compose를 사용해 보고 Issue Tracker를 통해 제안사항과 의견을 보내주세요.

Kotlin Slack의 #compose-wear 채널에 가입하여 개발자 커뮤니티와 소통하고 경험을 알려주세요.