构建KMM iOS项目时遇‘Command PhaseScriptExecution failed with nonzero exit code’错误怎么办?
解决KMM iOS项目构建时的Command PhaseScriptExecution错误
创建KMM项目时选择Regular framework作为iOS框架分发类型,Android端运行正常,但iOS端构建时出现Command PhaseScriptExecution failed with a nonzero exit code错误,以下是经过验证的解决方法:
常见排查与修复步骤
确认版本兼容性
确保Xcode版本与Kotlin Multiplatform插件版本匹配,例如Kotlin 1.8+建议搭配Xcode 14.3及以上版本。可通过Android Studio的Settings -> Languages & Frameworks -> Kotlin Updates查看插件版本,Xcode版本在About Xcode中确认。清理缓存后重新构建
- Xcode中执行
Product -> Clean Build Folder(快捷键Shift+Command+K) - Android Studio中执行
File -> Invalidate Caches...,勾选Invalidate and Restart - 删除iOS项目的
DerivedData文件夹,路径一般为~/Library/Developer/Xcode/DerivedData/[项目名]-xxxxxx - 重新同步并构建项目
- Xcode中执行
检查Run Script配置
- 打开Xcode项目的
Build Phases,找到Run Script阶段 - 确认脚本内容为KMM自动生成的Gradle调用命令,若脚本异常,执行Android Studio的
File -> Sync Project with Gradle Files重新同步 - 给脚本添加执行权限:终端进入项目目录,执行
chmod +x [脚本文件路径]
- 打开Xcode项目的
验证架构设置
- Xcode的
Build Settings中,将Architectures设为Standard Architectures (arm64, x86_64) Build Active Architecture Only在Debug模式设为Yes,Release模式设为No,避免架构不兼容
- Xcode的
检查依赖版本一致性
确保KMM共享模块中iOS相关依赖(如kotlin-stdlib-ios、coroutines-ios)的版本与Kotlin版本完全一致,避免版本冲突。
内容的提问来源于stack exchange,提问作者KimDaeYoung
相关产品推荐
相关产品推荐

