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

KMM项目共享层导入自定义修改的.jar依赖失败求助

解决KMM项目中修改SQLDelight Native Driver源码的问题

核心问题

你之前的尝试全部失败,核心原因是:app.cash.sqldelight:native-driver:2.0.0针对iOS的实现不是jar文件。jar是JVM/Android平台的产物,iOS平台需要的是Kotlin/Native编译出的.klib或.framework,你下载的jar里只有JVM端的空存根,完全不包含iOS运行需要的代码,所以替换后必然出现“未解析引用”错误。

正确解决方案

1. 获取并修改SQLDelight源码

  • 克隆SQLDelight仓库:git clone https://github.com/cashapp/sqldelight.git
  • 切换到2.0.0版本:git checkout 2.0.0
  • 找到native-driver模块(仓库根目录下的native-driver文件夹),修改你需要的代码。

2. 在KMM项目中引入本地修改后的模块

步骤1:配置settings.gradle.kts

在项目根目录的settings.gradle.kts中,添加本地native-driver模块的引用:

pluginManagement { ... }

rootProject.name = "YourKMMProject"

// 添加这两行,路径根据你本地sqldelight仓库的位置调整
include(":native-driver")
project(":native-driver").projectDir = file("../sqldelight/native-driver")

步骤2:修改shared/build.gradle.kts的依赖

替换原来的远程依赖为本地模块依赖:

kotlin {
  sourceSets {
    val androidMain by getting { ... }
    val iosMain by getting {
      dependencies { 
        // 替换远程依赖为本地模块
        implementation(project(":native-driver"))
      }
    }
  }
}

3. 同步并构建项目

  • 点击Android Studio的“Sync Project with Gradle Files”按钮
  • 重新构建iOS目标,此时会使用你修改后的native-driver代码编译。

为什么之前的方法无效?

  • 方法1:用jar替换完全错误,jar不包含iOS平台的代码,仅适用于Android/JVM。
  • 方法2:顶级dependencies块会将jar依赖应用到所有平台,iOS无法识别JVM格式的jar内容。
  • 方法3:同样是使用了错误的jar文件,即使写法正确,文件类型不匹配也无法被iOS编译链识别。

内容的提问来源于stack exchange,提问作者broken-cat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 09:57:47