You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用libs.versions.toml中Compose BOM无法解析material3依赖

问题原因与解决方案

核心原因

你遇到的问题本质是Compose BOM没有被正确导入到模块依赖中,导致Gradle无法从BOM中读取material3的版本约束。虽然你在libs.versions.toml里定义了BOM,但如果不在模块的构建脚本中通过platform()方式引入,BOM的版本管理规则不会生效。

Compose BOM(androidx.compose:compose-bom)确实包含androidx.compose.material3系列库的版本定义,官方的版本映射是准确的,完全可以通过BOM统一管理版本,不需要手动指定。

具体解决步骤

1. 保留libs.versions.toml现有配置

你的配置本身没有问题,继续使用即可:

[versions]
ksp = "1.9.10-1.0.13"
androidxComposeBom = "2023.10.01"

[libraries]
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "androidxComposeBom" }
androidx-compose-ui = { group = "androidx.compose.ui", name = "ui" }
androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3"}
androidx-compose-material3-windowSizeClass = { group = "androidx.compose.material3", name = "material3-window-size-class" }

2. 在模块build.gradle.kts中正确导入BOM

必须先通过platform()方式引入BOM,再添加其他Compose依赖,示例代码如下:

dependencies {
    // 先导入Compose BOM,这是版本约束生效的核心步骤
    implementation(platform(libs.androidx.compose.bom))
    
    // 其他Compose依赖无需指定版本,自动从BOM获取对应版本
    implementation(libs.androidx.compose.ui)
    implementation(libs.androidx.compose.material3)
    implementation(libs.androidx.compose.material3.windowSizeClass)
    
    // 项目其他依赖...
}

3. 验证Gradle版本兼容性

确保项目使用的Gradle版本支持BOM功能(建议Gradle 7.0及以上),可以在gradle/wrapper/gradle-wrapper.properties中查看并更新:

distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-all.zip

为什么手动指定版本能生效?

手动指定版本时,Gradle直接使用你定义的版本号,跳过了BOM的版本解析流程,因此不会出现依赖解析错误,但这也违背了BOM统一管理版本的初衷。


内容的提问来源于stack exchange,提问作者pierre.b

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 15:38:42