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

KMP构建iOS应用时arm64架构出现未定义符号错误求助

KMP构建iOS应用时arm64架构出现未定义符号错误求助

嘿,看到你碰到的这个问题,我之前做KMP iOS构建时也踩过类似的坑,结合你给出的版本信息,给你几个实用的排查和解决方向:

先把你的错误信息和环境版本明确下,方便对应排查:

错误信息:
Undefined symbols for architecture arm64:
"_kfun:androidx.lifecycle.viewmodel.compose#androidx_lifecycle_viewmodel_compose_LocalViewModelStoreOwner$stableprop_getter$artificial(){}kotlin.Int"

环境版本:

  • Kotlin: 2.1.20
  • AGP: 8.6.1
  • Koin: 4.0.4
  • Compose: 1.8.0-rc01

1. 检查Common模块是否意外引入Android专属依赖

这个错误的核心是iOS构建里出现了Android的lifecycle-viewmodel-compose符号,大概率是CommonMain的依赖里不小心包含了这个Android专属库。你需要:

  • 只在androidMain的sourceSet中引入androidx.lifecycle:lifecycle-viewmodel-compose相关依赖,CommonMain里绝对不要加。
  • 检查Koin的依赖配置,Koin的Compose扩展如果是Android专属的,也要限定在Android目标里,比如:
// 在build.gradle.kts的Android块里
dependencies {
    implementation("io.insert-koin:koin-androidx-compose:4.0.4")
}
// CommonMain里只加通用的Koin依赖
commonMain.dependencies {
    implementation("io.insert-koin:koin-core:4.0.4")
}

2. 清理缓存并重新构建

缓存混乱是KMP构建里的常见坑,试试这几步彻底清理:

  • 执行Gradle清理:./gradlew clean
  • 打开Xcode,执行Product -> Clean Build Folder(快捷键Shift+Command+K)
  • 删除Xcode的Derived Data(通过Xcode偏好设置 -> Locations找到路径删除)
  • 重新执行iOS框架构建:./gradlew iosFramework,再在Xcode里Run

3. 强制统一Lifecycle相关依赖版本

不同库可能依赖不同版本的Lifecycle,导致符号不匹配。你可以在项目根目录的settings.gradle.kts里添加版本强制:

dependencyResolutionManagement {
    resolutionStrategy {
        eachDependency {
            if (requested.group == "androidx.lifecycle") {
                useVersion("2.8.4") // 选择和Compose 1.8.0-rc01兼容的版本
            }
        }
    }
}

Lifecycle 2.8.x系列和Compose 1.8.x是官方适配的版本组合,能避免很多兼容性问题。

4. 调整iOS目标的框架构建配置

确保iOS框架正确导出所有必要的符号,试试修改配置:

iosTarget {
    binaries {
        framework {
            baseName = "YourAppFramework"
            transitiveExportDependencies = true // 确保依赖的符号都被导出
            isStatic = false // 如果之前用的静态框架,切换成动态框架试试
        }
    }
}

我当时是通过前两个步骤解决的问题,你可以先从检查依赖范围开始排查,这个是最常见的触发原因。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 12:14:34