使用物料清单

Compose 物料清单 (BOM) 允许您通过仅指定 BOM 的版本来管理所有 Compose 库版本。BOM 本身包含指向不同 Compose 库的稳定版本的链接,这些链接以使它们能够很好地协同工作的方式进行组织。在您的应用程序中使用 BOM 时,您无需在 Compose 库依赖项本身中添加任何版本。当您更新 BOM 版本时,您使用的所有库都会自动更新到其新版本。

Kotlin

dependencies {
    // Specify the Compose BOM with a version definition
    val composeBom = platform("androidx.compose:compose-bom:2024.09.00")
    implementation(composeBom)
    testImplementation(composeBom)
    androidTestImplementation(composeBom)

    // Specify Compose library dependencies without a version definition
    implementation("androidx.compose.foundation:foundation")
    // ..
    testImplementation("androidx.compose.ui:ui-test-junit4")
    // ..
    androidTestImplementation("androidx.compose.ui:ui-test")
}

Groovy

dependencies {
    // Specify the Compose BOM with a version definition
    Dependency composeBom = platform('androidx.compose:compose-bom:2024.09.00')
    implementation composeBom
    testImplementation composeBom
    androidTestImplementation composeBom

    // Specify Compose library dependencies without a version definition
    implementation 'androidx.compose.foundation:foundation'
    // ..
    testImplementation 'androidx.compose.ui:ui-test-junit4'
    // ..
    androidTestImplementation 'androidx.compose.ui:ui-test'
}

要了解哪些 Compose 库版本映射到特定 BOM 版本,请查看 BOM 到库版本映射

为什么 BOM 中不包含 Compose 编译器库?

Compose Kotlin 编译器扩展 (androidx.compose.compiler) 不与 Compose 库版本链接。相反,它与 Kotlin 编译器插件的版本链接,并以与其他 Compose 版本不同的节奏发布,因此请确保使用与您使用的 Kotlin 版本兼容的版本。您可以在 Compose 到 Kotlin 兼容性映射 中找到与每个插件版本相对应的 Kotlin 版本。

如何使用与 BOM 中指定的版本不同的库版本?

build.gradle 依赖项部分,保留对 BOM 平台的导入。在库依赖项导入中,指定所需的版本。例如,以下是如何在您想要使用动画库的较新版本时声明依赖项,无论 BOM 中指定了哪个版本

Kotlin

dependencies {
    // Specify the Compose BOM with a version definition
    val composeBom = platform("androidx.compose:compose-bom:2024.09.00")
    implementation(composeBom)

    // Override the BOM version when needed
    implementation("androidx.compose.animation:animation:1.8.0-alpha01")

    // ..
}

Groovy

dependencies {
    // Specify the Compose BOM with a version definition
    Dependency composeBom = platform("androidx.compose:compose-bom:2024.09.00")
    implementation composeBom

    // Override the BOM version when needed
    implementation 'androidx.compose.animation:animation:1.8.0-alpha01'

    // ..
}

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

Kotlin

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

    // import Compose dependencies as usual
}

Groovy

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

    // import Compose dependencies as usual
}

如何报告 BOM 的问题或提供反馈?

您可以在我们的 问题跟踪器 上提交问题。