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

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")

额外优化建议

  1. 清理重复依赖定义:在libs.versions.toml中,你定义了两个重复的Material3依赖项androidx-material3和androidx-compose-material3,保留其中一个即可(推荐保留androidx-compose-material3并删除androidx-material3)。
  2. 移除重复依赖声明:在build.gradle.kts的dependencies块中,重复声明了implementation(libs.androidx.material3)和implementation(libs.androidx.compose.material3),删除重复条目避免依赖冲突。
  3. 对齐Compose版本:你的composeOptions中kotlinCompilerExtensionVersion为1.5.10,但Compose BOM使用的是2025.03.01,建议通过BOM自动管理版本,无需手动指定kotlinCompilerExtensionVersion。

内容的提问来源于stack exchange,提问作者neurod

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 13:55:16