Xcode编译空Unity iOS项目时出现Command PhaseScriptExecution失败
解决Unity 2022.3.6f1 + Xcode 15 + iOS 17构建报错问题
问题背景
用Unity Editor 2022.3.6f1将空项目切换到iOS平台,导出Xcode工程后,Xcode 15编译失败,报错:Command PhaseScriptExecution failed with a nonzero exit code
完整日志显示无法检测到兼容的iPhoneOS SDK,尝试将Xcode-Beta重命名为Xcode、修改Run Script的「仅用于安装构建」选项后,错误反而增多。
排查&解决步骤
确认SDK路径与Unity配置匹配
- 打开Xcode,点击顶部菜单栏
Xcode > Settings > Locations,检查Command Line Tools是否选中Xcode 15; - 打开Unity,进入
Edit > Preferences > External Tools,确保iOS > Xcode的路径指向正确的Xcode.app(建议用正式版Xcode 15安装到默认路径/Applications/Xcode.app,避免Beta版改名带来的路径识别异常)。
- 打开Xcode,点击顶部菜单栏
修复Xcode工程的Run Script
Unity 2022.3.6f1对Xcode 15的适配存在问题,需手动修改导出工程的脚本:- 打开Xcode工程,选中主工程目标,进入
Build Phases标签; - 找到
[CP] Embed Pods Frameworks和[CP] Copy Pods Resources两个Run Script,取消「仅用于安装构建」勾选(之前勾了的话改回来),并在脚本开头添加:SDKROOT=$(xcrun --sdk iphoneos --show-sdk-path) export SDKROOT - 找到
UnityFramework目标下的相关Run Script,执行同样修改。
- 打开Xcode工程,选中主工程目标,进入
验证设备开发者权限
- 连接iOS 17设备,通过Xcode的
Window > Devices and Simulators确认设备已连接,且在设备的设置 > 通用 > VPN与设备管理中信任你的开发者账号; - 检查主工程
Signing & Capabilities,确保选择正确的开发者团队,且开启自动管理签名。
- 连接iOS 17设备,通过Xcode的
清理缓存重新构建
- 在Unity中点击
File > Build Settings > Clean Build,清理构建缓存; - 在Xcode中按
Cmd+Shift+K清理编译缓存,之后重新编译。
- 在Unity中点击
如果以上步骤无效,建议升级Unity到2022.3.x最新补丁版本(官方后续针对Xcode 15做了兼容性修复),或在项目允许的前提下降级Xcode到14.3.1。
内容的提问来源于stack exchange,提问作者Duck Duck
相关产品推荐
相关产品推荐

