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

KMM编译iOS二进制时compileIosMainKotlinMetadata报Unresolved reference

问题根因
  • 重复声明iOS编译目标:你在公共插件kotlin-multiplatform-lib-setup中已经通过ios()完成了iOS全架构目标(iosArm64、iosX64等)和对应源集的注册,但是模块级build.gradle.kts中又在kotlin块内重复调用了ios()。Kotlin Gradle插件会因为重复注册目标打乱默认的分层源集依赖关系,直接导致compileIosMainKotlinMetadata任务执行时,iosMain源集无法正确拉取commonMain传递下来的依赖元数据,触发未解析引用错误。
  • 你之前尝试添加的export配置完全不解决问题:export是iOS framework二进制链接阶段的配置,作用是控制哪些依赖会被打包进最终输出的framework、暴露给下游调用,和编译期元数据解析阶段完全无关,自然无法修复编译报错。
  • 冗余依赖配置加剧解析混乱:你已经在commonMain中声明了Reaktive依赖,又在iosMain中重复添加了同个依赖的implementation声明,虽然不是报错的直接诱因,但会干扰KGP的依赖拓扑计算。
修复步骤
  1. 删除模块级build.gradle.kts中kotlin块内重复的ios()调用,iOS目标统一由公共插件配置即可。
  2. 删除iosMain源集中重复的Reaktive依赖声明,commonMain声明的implementation依赖会自动传递到所有平台源集,不需要重复配置。
    修改后的模块kotlin核心配置参考:
kotlin {
    // 已删除重复的ios()调用
    sourceSets {
        commonMain {
            dependencies {
                implementation(Deps.Badoo.reaktive)
                implementation(Deps.Badoo.coroutinesInterop)
                implementation(Deps.KotlinX.Coroutines.core)
                implementation(Deps.uuid)
            }
        }

        commonTest {
            dependencies {
                implementation(Deps.Badoo.reaktive)
                implementation(Deps.KotlinX.Coroutines.core)
                implementation(Deps.Badoo.reaktiveTesting)
            }
        }
        // 已删除iosMain中重复的Reaktive依赖
    }
}
  1. 如果你确实需要把Reaktive的类作为你自己库的公共API暴露给下游iOS项目,可以保留export配置,但不要重复声明iOS目标,直接配置公共插件已经创建好的iOS目标即可:
kotlin {
    ios {
        binaries {
            framework { 
                // 仅当Reaktive类型出现在你库的公开API签名中时才需要export,内部使用不需要加
                export(Deps.Badoo.reaktive)
                transitiveExport = true
            }
        }
    }
}
  1. 配置修改完成后,先执行./gradlew clean清空旧构建缓存,再执行compileIosMainKotlinMetadata任务验证修复结果。

补充说明:如果清理缓存后仍然报错,检查你引用的Reaktive、kotlinx-coroutines、uuid等KMP依赖的版本,是否和你当前使用的Kotlin插件版本完全兼容。KMP跨版本依赖经常会出现元数据不兼容的问题,同样会在metadata编译阶段抛出Unresolved reference错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 03:24:25