재료명세서 사용

Compose 재료명세서(BOM)를 사용하면 BOM 버전만 지정하여 모든 Compose 라이브러리 버전을 관리할 수 있습니다. BOM 자체에는 서로 잘 작동하는 방식으로 정리된 다양한 Compose 라이브러리의 안정화 버전에 대한 링크가 있습니다. 앱에서 BOM을 사용할 때는 Compose 라이브러리 종속 항목 자체에 버전을 추가할 필요가 없습니다. BOM 버전을 업데이트하면 사용 중인 모든 라이브러리가 새 버전으로 자동 업데이트됩니다.

특정 BOM 버전에 매핑되는 Compose 라이브러리 버전을 알아보려면 BOM과 라이브러리 버전 매핑을 확인하세요.

Compose 컴파일러 라이브러리가 BOM에 포함되지 않는 이유는 무엇인가요?

Compose Kotlin 컴파일러 확장자(androidx.compose.compiler)는 Compose 라이브러리 버전에 연결되지 않습니다. 대신 Kotlin 컴파일러 플러그인 버전에 연결되고 Compose의 나머지 부분과 별도의 주기로 출시되므로 Kotlin 버전과 호환되는 버전을 사용해야 합니다. Compose와 Kotlin 호환성 지도에서 플러그인의 각 버전에 매핑되는 Kotlin 버전을 확인할 수 있습니다.

BOM에 지정된 것과 다른 라이브러리 버전을 사용하려면 어떻게 해야 하나요?

build.gradle 종속 항목 섹션에서 BOM 플랫폼 가져오기를 유지합니다. 라이브러리 종속 항목 가져오기에서 원하는 버전을 지정합니다. 예를 들어 다음은 BOM에 지정된 버전과 관계없이 Material 3의 알파 버전을 사용하려는 경우 종속 항목을 선언하는 방법입니다.

dependencies {
    // Import the Compose BOM
    implementation platform('androidx.compose:compose-bom:2024.04.00')

    // Import Material Design 3 library
    implementation 'androidx.compose.material3:material3:1.1.2'

    // Import other Compose libraries without version numbers
    // ..
    implementation 'androidx.compose.foundation:foundation'
}

BOM이 모든 Compose 라이브러리를 앱에 자동으로 추가하나요?

아니요. 실제로 Compose 라이브러리를 앱에 추가하고 사용하려면 모듈(앱 수준) Gradle 파일(일반적으로 app/build.gradle)에서 각 라이브러리를 별도의 종속 항목 줄로 선언해야 합니다.

BOM을 사용하면 앱의 모든 Compose 라이브러리 버전이 호환되지만 BOM은 이러한 Compose 라이브러리를 실제로 앱에 추가하지는 않습니다.

앞으로 Compose 라이브러리는 독립적으로 버전이 지정되므로 버전 번호가 자체 속도로 커지기 시작합니다. 각 라이브러리의 최신 안정화 버전은 테스트를 거쳐 함께 잘 작동하도록 보장됩니다. 그러나 각 라이브러리의 최신 안정화 버전은 찾기가 어려울 수 있으며 BOM을 사용하면 이러한 최신 버전을 자동으로 사용할 수 있습니다.

BOM을 무조건 사용해야 하나요?

아니요. 각 종속 항목 버전을 수동으로 추가해도 됩니다. 하지만 BOM을 사용하는 것이 좋습니다. 보다 쉽게 모든 최신 안정화 버전을 동시에 사용할 수 있기 때문입니다.

BOM은 버전 카탈로그와 함께 작동하나요?

예. 버전 카탈로그에 BOM 자체를 포함하고 다른 Compose 라이브러리 버전을 생략할 수 있습니다.

[libraries]
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "androidxComposeBom" }
androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation" }

모듈의 build.gradle에서 BOM을 가져와야 합니다.

dependencies {
    val composeBom = platform(libs.androidx.compose.bom)
    implementation(composeBom)
    androidTestImplementation(composeBom)

    // import Compose dependencies as usual
}

BOM 관련 문제를 신고하거나 의견을 보내려면 어떻게 해야 하나요?

Issue Tracker에서 문제를 신고할 수 있습니다.