使用物料清单
源:使用物料清单
借助 Compose 物料清单 (BoM),您可以管理所有 Compose 库 方法是指定 仅列出 BoM 的版本。 BoM 本身包含指向不同 Compose 库的稳定版的链接,以便它们能够很好地协同工作。 在应用中使用 BoM 时,您无需向 Compose 库依赖项本身添加任何版本。 更新 BoM 版本时,您使用的所有库都会自动更新到新版本。
如何使用Bom?
先引入composeBom,需要引入Compose库的时候,直接引入指定库的名字即可,不需要指定库的版本,Bom最自动使用这些库的最新稳定版本。
如果需要引入某个库的其他指定版本,仍可按照原来的方式引入。
如下所示:
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 库版本:
[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
}dependencies {
Dependency composeBom = platform(libs.androidx.compose.bom)
implementation composeBom
androidTestImplementation(composeBom)
// import Compose dependencies as usual
}