使用物料清单

借助 Compose 物料清单 (BoM),您可以管理所有 Compose 库 方法是指定 仅列出 BoM 的版本。BoM 本身包含指向不同 Compose 库的稳定版的链接,以便它们能够很好地协同工作。在应用中使用 BoM 时,您无需向 Compose 库依赖项本身添加任何版本。更新 BoM 版本时,您使用的所有库都会自动更新到新版本。

Kotlin

dependencies {
    // Specify the Compose BOM with a version definition
    val composeBom = platform("androidx.compose:compose-bom:2024.09.03")
    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.03')
    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 库版本。而是链接到 编译器插件,并且与 Compose 其余部分分开发布。

从 Kotlin 2.0 开始,Compose 应用编译器将与 Kotlin 编译器一起管理,并使用与 Kotlin 编译器相同的版本。如需了解以下内容,请参阅 Compose Compiler Gradle 插件 配置详细信息

在 Kotlin 2.0 之前,您需要确保使用与您的 Kotlin 版本兼容的版本。您可以在 Compose 与 Kotlin 的兼容性对应关系页面找到映射到每个插件版本的 Kotlin 版本,并在 Compose 编译器页面中了解如何进行配置。

如何使用 BoM 中未指定的库版本?

build.gradle 依赖项部分中,保留 BoM 平台的导入内容。在导入库依赖项时,指定替换版本。例如,如果您想使用较新版本的动画库(无论 BoM 中指定了哪个版本),声明依赖项的方法如下:

Kotlin

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

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

    // ..
}

Groovy

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

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

    // ..
}

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
}

如果我想试用 Compose 库的 Alpha 版或 Beta 版,该怎么办?

有三个可用的 Compose BoM。每个 BoM 都是可用最新版 Compose 库的某个时间点的快照。

  • 稳定版 - 包含每个库的最新稳定版
  • Beta 版 - 包含每个库的最新 Beta 版、候选版本 (RC) 或稳定版
  • Alpha - 包含每个库的最新 Alpha 版、Beta 版、RC 版或稳定版

Alpha 版和 Beta 版 BoM 是通过添加 -alpha 和 将 -beta 设置为 BoM 工件名称。稳定版没有后缀。

Kotlin

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

Groovy

dependencies {
    // Specify the Compose BOM with a version definition
    Dependency composeBom = platform('androidx.compose:compose-bom-alpha:2024.09.03')
    //                   or platform('androidx.compose:compose-bom-beta:2024.09.03')
    implementation composeBom
    // ..
}

如何报告问题或提供与 BoM 有关的反馈?

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