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

Android项目无法解析Kotlin Multiplatform库:无匹配变体

解决方案

1. 显式声明Library模块的Build Types

在:library模块的android块中添加buildTypes配置,确保与:app模块的构建类型(debug/release)完全匹配,这是AGP 8.x与Kotlin Multiplatform协同工作的必要步骤:

android {
    namespace = "com.jabxm.kothless"
    compileSdk = 33
    defaultConfig {
        minSdk = 26
    }
    // 新增Build Types配置
    buildTypes {
        release {
            isMinifyEnabled = false
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
        debug {
            isDebuggable = true
        }
    }
}

2. 调整Kotlin Multiplatform的Android Target配置

将androidTarget的变体发布配置改为自动匹配所有构建类型,避免手动指定可能出现的遗漏:

kotlin {
    androidTarget {
        publishAllLibraryVariants() // 替换原有的publishLibraryVariants("release", "debug")
        compilerOptions {
            jvmTarget.set(JvmTarget.JVM_11)
        }
    }
    // 其余iOS目标配置不变
    iosX64()
    iosArm64()
    iosSimulatorArm64()

    sourceSets {
        val commonMain by getting
        val androidMain by getting
        val iosMain by creating {
            dependsOn(commonMain)
        }
    }
}

3. 验证变体匹配

执行以下命令确认:library模块已生成符合要求的Android变体:

./gradlew :library:outgoingVariants

在输出中查找包含org.jetbrains.kotlin.platform.type=androidJvm和com.android.build.api.attributes.BuildTypeAttr=debug/release的条目,确认它们存在。

4. 重新构建项目

清理并重新构建,确保配置生效:

./gradlew clean :app:assembleDebug

原因分析

错误的核心是:library模块未生成符合:app模块依赖要求的变体:

  • AGP 8.x要求Library模块必须显式声明buildTypes,否则不会自动生成标准的debug/release变体
  • Kotlin Multiplatform的androidTarget需要与AGP的Build Types绑定,才能生成带有androidJvm平台属性的变体,供纯Android应用模块解析

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 22:34:50