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

在Compose Multiplatform中使用Ktor CIO客户端遇依赖解析错误求助

解决Compose Multiplatform中Ktor-CIO依赖解析错误

问题根源

  1. 平台专属依赖放错位置:ktor-client-cio是仅支持JVM/Desktop的专属引擎,你把它加到了commonMain的依赖bundle里,导致Wasm平台编译时找不到对应变体。
  2. Ktor版本不一致:项目同时使用了Ktor 2.3.10和3.2.0两个版本,跨版本依赖会引发兼容性问题。

解决方案

1. 统一Ktor版本并调整依赖配置

修改libs.versions.toml,将所有Ktor依赖统一到同一稳定版本(示例用3.2.0),并把CIO从通用bundle中移除:

ktor = "3.2.0"

ktor-client-cio = { group = "io.ktor", name = "ktor-client-cio", version.ref = "ktor" }
ktor-client-contentNegotiation = { group = "io.ktor", name = "ktor-client-content-negotiation", version.ref = "ktor" }
ktor-client-android = { group = "io.ktor", name = "ktor-client-android", version.ref = "ktor" }
ktor-client-darwin = { group = "io.ktor", name = "ktor-client-darwin", version.ref = "ktor" }
ktor-client-js = { group = "io.ktor", name = "ktor-client-js", version.ref = "ktor" }

[bundles]
ktor-client = ["ktor-client-core", "ktor-client-contentNegotiation" /* 仅保留跨平台通用依赖 */]

2. 拆分平台专属依赖

在composeApp/build.gradle.kts中,给不同平台的sourceSet配置对应专属的Ktor引擎,common只保留通用依赖:

kotlin {
    sourceSets {
        val desktopMain by getting
        val wasmJsMain by getting // 确保Wasm源集已配置

        commonMain.dependencies {
            // ... 其他通用依赖
            implementation(libs.bundles.ktor.client) // 仅包含core、contentNegotiation等跨平台模块
        }

        androidMain.dependencies {
            // ... 其他Android依赖
            implementation(libs.ktor.client.android) // Android专属引擎
        }

        iosMain.dependencies {
            // ... 其他iOS依赖
            implementation(libs.ktor.client.darwin) // iOS专属引擎
        }

        desktopMain.dependencies {
            // ... 其他Desktop依赖
            implementation(libs.ktor.client.cio) // Desktop专属CIO引擎
        }

        wasmJsMain.dependencies {
            implementation(libs.ktor.client.js) // Wasm专属JS引擎
        }
    }
}

3. 同步验证

执行Gradle同步操作后,重新构建项目,Wasm平台的依赖解析错误将被修复。


关键说明

  • Ktor客户端引擎是平台专属的:CIO仅支持JVM/Desktop,Android用ktor-client-android,iOS用ktor-client-darwin,Wasm用ktor-client-js,不能在common源集中引用这些专属引擎。
  • 必须保持Ktor所有模块版本一致,否则会出现二进制不兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 03:12:46