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

Android多模块项目中使用libs.versions.toml的buildSrc插件冲突问题

Android多模块项目使用libs.versions.toml+buildSrc时的插件冲突问题

背景

在Android多模块项目中,为编写项目配置扩展,需在buildSrc模块添加依赖,已完成以下配置:

buildSrc/settings.gradle.kts 配置

dependencyResolutionManagement {
    versionCatalogs {
        create("libs") {
            from(files("../gradle/libs.versions.toml"))
        }
    }
}

buildSrc/build.gradle.kts 配置

plugins {
    `kotlin-dsl`
}

repositories {
    google()
    mavenCentral()
}

dependencies {
    implementation(libs.androidToolsBuildGradle)
    implementation(libs.kotlinGradle)
}

顶层 build.gradle.kts 配置

// 所有子项目/模块通用的顶层构建配置文件
plugins {
    alias(libs.plugins.android.application) apply false
    alias(libs.plugins.jetbrains.kotlin.android) apply false
    alias(libs.plugins.kspSymbolProcessing) apply false
    alias(libs.plugins.android.library) apply false
}

出现的错误

添加buildSrc依赖后构建失败,报错信息:

Build file 'C:\Users\Admin\AndroidStudioProjects\CryptoScope\build.gradle.kts' line: 2
Error resolving plugin [id: 'com.android.application', version: '8.5.0', apply: false]
请求的插件无法满足,因为该插件已以未知版本存在于classpath中,无法检查兼容性。

尝试:
使用--info或--debug选项获取更多日志输出
使用--scan获取完整分析信息

尝试GitHub上的方案后,出现新错误:

错误:未在任何来源中找到该插件

解决方案

核心原因

buildSrc模块的classpath会被全局添加到项目构建classpath中,直接依赖完整的androidToolsBuildGradle和kotlinGradle包,会与顶层build.gradle.kts中通过版本别名声明的插件产生版本冲突,Gradle无法校验两者兼容性。

修复步骤

  1. 替换buildSrc的依赖为API变体
    修改buildSrc/build.gradle.kts的dependencies块,只依赖插件的API部分,避免将完整插件包注入全局classpath:

    dependencies {
        implementation(libs.androidToolsBuildGradle.api)
        implementation(libs.kotlinGradle.api)
    }
    

    需确保libs.versions.toml中已定义对应的API变体,示例:

    [versions]
    androidToolsBuildGradle = "8.5.0"
    kotlinGradle = "1.9.20"
    
    [libraries]
    androidToolsBuildGradle = { module = "com.android.tools.build:gradle", version.ref = "androidToolsBuildGradle" }
    androidToolsBuildGradle-api = { module = "com.android.tools.build:gradle-api", version.ref = "androidToolsBuildGradle" }
    kotlinGradle = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlinGradle" }
    kotlinGradle-api = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin-api", version.ref = "kotlinGradle" }
    
  2. 统一版本号
    确认libs.versions.toml中定义的插件版本,与顶层build.gradle.kts使用的版本完全一致,避免跨模块版本不一致。

  3. 清理缓存并重构

    • 执行命令:gradlew clean(Windows)或./gradlew clean(Mac/Linux)
    • 重启Android Studio,通过File → Invalidate Caches...清理缓存后重新构建

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 08:14:59