Xcode 15构建Unity游戏报错:Command PhaseScriptExecution失败
Xcode 15 + iOS 17 构建Unity游戏出现PhaseScriptExecution错误的解决办法
检查Unity版本兼容性
确保使用的Unity版本已适配Xcode 15,比如Unity 2022.3.7f1及以上的稳定版本,旧版本Unity对Xcode 15的新编译规则支持不足,直接升级到官方标注支持Xcode 15的版本即可。修改Xcode Build Settings配置
打开Xcode工程,进入Build Settings:- 搜索
ENABLE_USER_SCRIPT_SANDBOXING,设置为NO,Xcode 15新增的沙箱限制会拦截Unity的部分脚本执行; - 搜索
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER,设置为NO,关闭框架头文件引用警告,避免部分Unity插件的旧格式头文件触发错误; - 检查
Other Linker Flags,移除过时参数(如-weak-lSystem),替换为Xcode 15支持的写法。
- 搜索
清理构建缓存
- 在Xcode中执行
Product > Clean Build Folder(快捷键Shift+Command+K),彻底清理旧构建缓存; - 删除Unity导出目录下的
DerivedData文件夹,重新从Unity导出Xcode工程后再尝试构建。
- 在Xcode中执行
调整Unity导出设置
在Unity的Player Settings > iOS面板中:- 将
Architecture设置为ARM64,Xcode 15已不再支持32位架构; - 关闭
Bitcode选项,Xcode 15已废弃Bitcode,开启状态会直接导致构建失败; - 选择
IL2CPP作为Scripting Backend,若无需调试可勾选Strip Engine Code,减少编译冲突概率。
- 将
排查第三方插件问题
- 逐个禁用第三方插件,重新导出构建,定位是否为某款插件的脚本与Xcode 15不兼容;
- 替换老旧插件为最新版本,或手动修改插件的PostBuild脚本,适配Xcode 15的API变化。
手动修复报错脚本
点击错误信息展开详情,找到Build Phases > Run Script中报错的具体脚本:- 检查脚本中的权限、路径是否正确,比如是否存在文件访问权限限制;
- 将脚本中直接调用的Xcode命令替换为
xcrun调用,例如用xcrun lipo代替直接执行lipo。
内容的提问来源于stack exchange,提问作者SteveGates
相关产品推荐
相关产品推荐

