Skip to content

使用物料清单 ​

源:使用物料清单

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

如何使用Bom? ​

先引入composeBom,需要引入Compose库的时候,直接引入指定库的名字即可,不需要指定库的版本,Bom最自动使用这些库的最新稳定版本。

如果需要引入某个库的其他指定版本,仍可按照原来的方式引入。

如下所示:

kotlin
dependencies {
    //引入composeBom
    val composeBomVersion = "2024.08.00"
    val composeBom = platform("androidx.compose:compose-bom:$composeBomVersion")
    implementation(composeBom)
    testImplementation(composeBom)
    androidTestImplementation(composeBom)

    //直接指定库的名字即可,不需要指定库的版本
    implementation("androidx.compose.ui:ui")
    implementation("androidx.compose.foundation:foundation")
    implementation("androidx.compose.material3:material3")
    implementation("androidx.compose.ui:ui-tooling-preview")
    // ..
    debugImplementation("androidx.compose.ui:ui-tooling")
    testImplementation("androidx.compose.ui:ui-test-junit4")
    // ..
    androidTestImplementation("androidx.compose.ui:ui-test")
    
    //如果需要引入某个库的其他指定版本,仍可按照原来的方式引入
    implementation("androidx.compose.animation:animation:1.7.0-beta05")
}

如需了解哪些 Compose 库版本已映射到特定 BoM 版本, 请查看 BoM 到库的版本映射。

为什么建议使用 BoM 管理 Compose 库版本? ​

今后,Compose 库将单独进行版本控制,这意味着版本号将开始按照自己的节奏递增。 每个库的最新稳定版本已经过测试,并保证能够很好地协同工作。

Compose包含了很多的库依赖,如果不使用Bom管理的话,你需要手动去查找每个库的最新稳定版本,而 BoM 会帮助您自动使用这些最新版本,您只需关心一个Bom版本号即可。

是否必须使用 BoM? ​

不是。您仍然可以选择手动添加各个依赖项版本。不过,我们建议您使用 BoM,因为这样您可以更轻松地同时使用所有最新的稳定版本。

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

Compose Kotlin 编译器扩展 (androidx.compose.compiler) 未关联到 Compose 库版本。 相反,它会关联到 Kotlin 编译器插件的版本,并与 Compose 的其余部分分开发布,因此请务必使用与您的 Kotlin 版本兼容的版本。 您可以在 Compose 与 Kotlin 的兼容性对应关系 页面找到映射到每个插件版本的 Kotlin 版本。

BoM 是否会自动将所有 Compose 库添加到我的应用中? ​

不会。要在您的应用中实际添加和使用 Compose 库,您必须在模块(应用级)Gradle 文件(通常是 app/build.gradle)中将每个库声明为单独的依赖项行。

使用 BoM 可确保应用中的任何 Compose 库版本兼容,但 BoM 实际上并不会将这些 Compose 库添加到您的应用中。

BoM 是否支持版本目录(libs.versions.toml)? ​

支持。您可以在版本目录中添加 BoM 本身,并省略其他 Compose 库版本:

toml
[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
}