KMP项目升级AGP7.2+后Gradle同步失败求助
KMP项目升级AGP 7.2+后同步失败:Cannot find a variant matching build type 'null'
问题根源
AGP 7.2+对Kotlin Multiplatform(KMP)模块与Android插件的协同逻辑做了严格校验。你的commonCore模块同时应用kotlin("multiplatform")和com.android.library插件时,两者的Variant生成逻辑发生冲突:KMP的Android目标会自动生成对应Variant,而单独应用的AGP插件会重复配置,导致AGP无法识别正确的Build Type,最终抛出找不到Variant的错误。AGP 7.1.3对这类冲突容忍度更高,因此之前能正常同步。
解决方案
方案1:移除自定义插件中的com.android.library插件应用
KMP的android目标已经自动集成并配置AGP Library功能,无需单独应用com.android.library插件(这是冲突的核心原因)。修改你的SetupAndroidLibraryPlugin:
open class SetupAndroidLibraryPlugin : Plugin<Project> { override fun apply(project: Project) { // 移除com.android.library插件,保留kotlin-parcelize project.applyPlugins( "kotlin-parcelize", ) // 通过KMP扩展配置Android相关参数 project.configureKmpAndroidLibrary() project.tasks.withType<KotlinCompile>().onEach { it.kotlinOptions.jvmTarget = "11" } } private fun Project.configureKmpAndroidLibrary() { project.extensions.configure<KotlinMultiplatformExtension> { android { compileSdk = 33 defaultConfig { minSdk = 24 targetSdk = 33 testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles("module-consumer-rules.txt") } buildTypes { getByName("release") { isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) consumerProguardFiles("module-consumer-rules.txt") } } compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } testOptions.unitTests.isIncludeAndroidResources = true } } // 配置AndroidManifest路径 project.android.sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") } }
同时清理commonCore/build.gradle.kts中重复的配置(比如重复的jvmTarget设置),避免与自定义插件的配置冲突。
方案2:临时调整插件应用顺序(兼容过渡)
如果暂时无法修改自定义插件,可尝试调整commonCore中的插件应用顺序,让KMP插件优先初始化:
plugins { id("setup-android-lib") apply false kotlin("multiplatform") id("setup-android-lib") id("setup-test-deps") }
注意:此方案仅为临时规避,长期来看仍推荐方案1,因为双插件共存会导致潜在的配置不一致问题。
额外检查项
- 确保依赖链中的
:x、:y、:androidApp模块的Build Type配置与commonCore一致,未传递不存在的Build Type参数。 - 升级Kotlin版本至与AGP匹配的版本(如AGP 7.2+对应Kotlin 1.7.0+),保证版本兼容性。
内容的提问来源于stack exchange,提问作者YektaDev
相关产品推荐
相关产品推荐

