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无法校验两者兼容性。
修复步骤
替换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" }统一版本号
确认libs.versions.toml中定义的插件版本,与顶层build.gradle.kts使用的版本完全一致,避免跨模块版本不一致。清理缓存并重构
- 执行命令:
gradlew clean(Windows)或./gradlew clean(Mac/Linux) - 重启Android Studio,通过
File → Invalidate Caches...清理缓存后重新构建
- 执行命令:
内容的提问来源于stack exchange,提问作者nedmah_9

