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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:15:39