Gradle同步报错:版本catalog中from方法调用次数超限
解决Gradle版本目录"from方法只能调用一次"的错误
我正在开发一款用于分类文件、图片、PDF的Android App(基于Compose,使用Gradle Kotlin DSL),同步Gradle时触发以下错误:
Invalid catalog definition:
- Problem: In version catalog libs, you can only call the 'from' method a single time.
错误原因
Gradle 7.4及以上版本会自动识别项目根目录下的gradle/libs.versions.toml文件,并自动创建名为libs的版本目录。而你在settings.gradle.kts里手动调用versionCatalogs.create("libs")并执行from(files("gradle/libs.versions.toml")),导致from方法被重复调用(自动加载一次+手动配置一次),触发Gradle的校验规则。
解决方案
修改settings.gradle.kts,删除手动创建libs版本目录的代码块,保留Gradle默认的自动加载逻辑:
pluginManagement { repositories { google { content { includeGroupByRegex("com\\.android.*") includeGroupByRegex("com\\.google.*") includeGroupByRegex("androidx.*") } } mavenCentral() gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() } // 移除手动创建libs版本目录的代码块 } rootProject.name = "Sheat" include(":app")
额外优化建议
- 清理重复依赖定义:在
libs.versions.toml中,你定义了两个重复的Material3依赖项androidx-material3和androidx-compose-material3,保留其中一个即可(推荐保留androidx-compose-material3并删除androidx-material3)。 - 移除重复依赖声明:在
build.gradle.kts的dependencies块中,重复声明了implementation(libs.androidx.material3)和implementation(libs.androidx.compose.material3),删除重复条目避免依赖冲突。 - 对齐Compose版本:你的
composeOptions中kotlinCompilerExtensionVersion为1.5.10,但Compose BOM使用的是2025.03.01,建议通过BOM自动管理版本,无需手动指定kotlinCompilerExtensionVersion。
内容的提问来源于stack exchange,提问作者neurod
相关产品推荐
相关产品推荐

