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
相关产品推荐
相关产品推荐

