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

无法在KMM库项目中正确生成并使用KMP库

问题分析与解决方案

核心问题

你的配置存在两个关键问题:

  1. 多平台依赖解析机制未被正确利用:直接通过files()引入单个jar文件,Gradle无法识别KMP库的多平台变体关联关系,导致common模块无法正确找到对应的实现,iOS模块也没有拿到实际的平台代码。
  2. iOS平台依赖配置错误:你给iOS架构引入的是metadata.jar,这只是KMP库的元数据文件,不包含iOS平台的实际编译代码,真正的iOS产物应该是.framework格式的文件。

正确的解决方法

推荐两种更可靠的方式,优先选择第一种:

方式一:发布到本地Maven仓库(最稳定)

  1. 在生成的KMP项目中执行发布任务:
    打开生成的KMP项目终端,运行Gradle命令:

    ./gradlew publishToMavenLocal
    

    这个任务会把KMP库的所有平台变体(common、JVM、iOS等)发布到本地Maven仓库,Gradle会自动维护各平台的依赖关联。

  2. 在KMM库项目中引入依赖:

    • 首先在项目根目录的settings.gradle.kts或模块的build.gradle.kts中添加本地Maven仓库:
      repositories {
          mavenLocal()
          // 其他仓库...
      }
      
    • 然后在模块的build.gradle.kts中,直接在commonMain添加依赖,Gradle会自动为各个平台匹配对应变体:
      sourceSets {
          val commonMain by getting {
              dependencies {
                  // 其他依赖...
                  implementation("你的生成库groupId:kotlin-client:1.0.0")
              }
          }
          // 其他sourceSet配置保留,无需手动添加各平台的jar依赖
      }
      

方式二:使用复合构建(适合调试阶段)

如果需要频繁修改生成的KMP库,复合构建可以直接关联两个项目,无需每次发布:

  1. 在KMM库项目的settings.gradle.kts中添加复合构建配置:

    includeBuild("../path/to/你的生成KMP项目目录")
    

    注意替换为实际的生成项目路径。

  2. 引入依赖:
    和方式一的第二步一样,直接在commonMain中添加groupId:artifactId:version格式的依赖即可,Gradle会自动关联本地项目。

不推荐的本地jar方式(仅作参考)

如果必须用本地jar文件,需要手动处理多平台变体,但维护成本高:

  1. 确保生成的KMP项目编译出iOS的.framework文件(路径一般在build/bin/ios/iosX64/releaseFramework等目录),将其复制到KMM项目的指定目录(比如iosFrameworks)。
  2. 在KMM项目的build.gradle.kts中配置iOS框架依赖:
    iosX64Main {
        dependencies {
            implementation(files("../iosFrameworks/kotlin-client.framework"))
        }
    }
    iosArm64Main {
        dependencies {
            implementation(files("../iosFrameworks/kotlin-client.framework"))
        }
    }
    
  3. 同时在commonMain中保留metadata jar依赖,但这种方式容易出现版本不匹配、变体关联错误等问题,不建议长期使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:05:54