现有Android项目创建KMM共享模块编译失败问题求助
在现有Android项目中添加Kotlin Multiplatform(KMM)共享模块以复用业务逻辑拓展iOS用户群体时,模块无法编译,出现以下连续错误:
初始错误
Unresolved reference: libs
参照KMM项目向导添加libs.versions.toml文件后,出现新错误:
Error resolving plugin [id: 'org.jetbrains.kotlin.multiplatform', version: '1.9.22']
The request for this plugin could not be satisfied because the plugin is already on the classpath with an unknown version, so compatibility cannot be checked.
相关配置代码
共享模块build.gradle.kts代码
plugins { alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.androidLibrary) } kotlin { androidTarget { compilations.all { kotlinOptions { jvmTarget = "1.8" } } } listOf( iosX64(), iosArm64(), iosSimulatorArm64() ).forEach { it.binaries.framework { baseName = "shared" isStatic = true } } sourceSets { commonMain.dependencies { //put your multiplatform dependencies here } commonTest.dependencies { implementation(libs.kotlin.test) } } } android { namespace = "net.petrabarus.poc.android.shared" compileSdk = 34 defaultConfig { minSdk = 24 } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } }
libs.versions.toml配置
[versions] agp = "8.2.0" kotlin = "1.9.22" [plugins] androidLibrary = { id = "com.android.library", version.ref = "agp" } kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
环境信息
- Android Studio版本:Hedgehog | 2023.1.1
- 非捆绑插件:
com.jetbrains.kmm (0.8.2(231)-25)、org.jetbrains.compose.desktop.ide (1.6.0)
问题原因及解决方案
原因分析
错误核心是项目中已通过其他路径引入kotlin-multiplatform插件,但版本未明确声明,导致Gradle无法校验你在libs.versions.toml中指定的1.9.22版本兼容性。通常是根项目的Gradle配置中直接声明了插件,或通过AGP间接引入了不同版本的Kotlin插件。
解决步骤
统一根项目插件声明
打开根目录build.gradle.kts,检查插件区块:- 若存在直接声明的
org.jetbrains.kotlin.multiplatform或org.jetbrains.kotlin.android插件,移除硬编码版本号,改为使用alias(libs.plugins.xxx)方式引用。 - 若
libs.versions.toml中缺少kotlinAndroid插件配置,补充:[plugins] # 原有配置保留 kotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
- 若存在直接声明的
确保版本目录功能开启
检查根目录settings.gradle.kts,确认包含以下配置(这是解决初始"Unresolved reference: libs"错误的关键):enableFeaturePreview("VERSION_CATALOGS") dependencyResolutionManagement { repositories { google() mavenCentral() } versionCatalogs { create("libs") { from(files("gradle/libs.versions.toml")) } } }清理缓存并同步
- 执行命令:
./gradlew clean build --refresh-dependencies,清理缓存并强制拉取依赖。 - 在Android Studio中点击
File -> Sync Project with Gradle Files重新同步项目。
- 执行命令:
校验KMM插件兼容性
当前KMM插件版本0.8.2(231)-25适配Kotlin 1.9.x版本,若问题仍存在,可尝试更新KMM插件到最新版本。
内容的提问来源于stack exchange,提问作者Petra Barus

