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

现有Android项目创建KMM共享模块编译失败问题求助

问题:现有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插件。

解决步骤

  1. 统一根项目插件声明
    打开根目录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" }
      
  2. 确保版本目录功能开启
    检查根目录settings.gradle.kts,确认包含以下配置(这是解决初始"Unresolved reference: libs"错误的关键):

    enableFeaturePreview("VERSION_CATALOGS")
    dependencyResolutionManagement {
        repositories {
            google()
            mavenCentral()
        }
        versionCatalogs {
            create("libs") {
                from(files("gradle/libs.versions.toml"))
            }
        }
    }
    
  3. 清理缓存并同步

    • 执行命令:./gradlew clean build --refresh-dependencies,清理缓存并强制拉取依赖。
    • 在Android Studio中点击File -> Sync Project with Gradle Files重新同步项目。
  4. 校验KMM插件兼容性
    当前KMM插件版本0.8.2(231)-25适配Kotlin 1.9.x版本,若问题仍存在,可尝试更新KMM插件到最新版本。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:05:29