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

升级Compose至1.8.0后Xcode运行KMM项目失败:Undefined symbol错误

Compose Multiplatform 1.8.0 + KMM iOS 链接器错误排查与解决

问题背景

升级JetBrains Compose至1.8.0后,KMM项目的iOS目标在Xcode构建时出现链接器错误:

Undefined symbol: _kfun:androidx.compose.animation.core#androidx_compose_animation_core_MutableTransitionState$stableprop_getter$artificial(){}kotlin.Int

仅Xcode启动时触发该错误,Android和桌面端运行正常,当前环境为Kotlin 2.1.20 + Compose Multiplatform 1.8.0,已尝试清理构建、清除缓存但无效。

可能的解决方法

1. 确认Compose依赖配置完整性

检查项目build.gradle.kts中iOS目标的依赖,确保compose.animation库已正确引入:

iosMain.dependencies {
    implementation(compose.animation)
    // 其他必要的Compose依赖
}

若之前仅依赖compose.ui等聚合库,升级后可能需要显式添加compose.animation,确保相关符号被编译到iOS产物中。

2. 调整Xcode构建配置

  • 关闭Dead Code Stripping:在Xcode项目设置的Build Settings -> Linking中,将Dead Code Stripping设为NO。链接器可能误判Compose稳定属性的getter为无用代码并剥离。
  • 确认架构覆盖:确保Valid Architectures包含项目运行所需架构(如arm64、x86_64),避免因架构不匹配导致符号缺失。

3. 重新同步Xcode项目文件

执行Gradle命令重新生成Xcode配置,修复缓存或配置不一致问题:

./gradlew iosXcodeSync

完成后重新打开Xcode并构建。

4. 排查依赖版本冲突

用Gradle命令查看依赖树,检查是否有第三方库或自定义模块依赖旧版本compose.animation-core:

./gradlew dependencies

若发现冲突,通过exclude强制统一版本为1.8.0:

implementation("第三方库坐标") {
    exclude(group = "androidx.compose.animation", module = "animation-core")
}

5. 确认Xcode版本兼容性

Compose Multiplatform 1.8.0要求Xcode版本至少为15.0,若当前版本过低,升级至最新稳定版后重试。

Compose 1.8.0对KMM iOS的新要求

  • 最低Xcode版本提升至15.0,依赖iOS 17.0 SDK部分特性;
  • Kotlin版本需至少为2.0.0(你的2.1.20符合要求);
  • 部分Compose模块的iOS产物结构调整,需显式声明所需模块,而非仅依赖聚合库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 04:22:44