Unity Xcode打包报错 Command PhaseScriptExecution failed with a nonzero exit code

文章讲述了在将Unity项目打包到Xcode时遇到的编码错误,特别提到检查工程名和路径中是否有中文,以及如何解决MapFileParser.sh权限问题。解决方法包括删除不必要的RunScript和提供MapFileParser.sh的使用说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-1 Unity转Xcode打包

一旦报错,首先想想自己Unity工程名和路径有没有中文。
一旦报错,首先想想自己Unity工程名和路径有没有中文。
一旦报错,首先想想自己Unity工程名和路径有没有中文。

0 报错这原因有很多种,这里只是其中一种

原因有很多。找好久才找到解决方法,记录一下免得忘记

1 情况

xcode打包时报错Command PhaseScriptExecution failed with a nonzero exit code 。
报错代码上面有指向MapFileParser.sh这个文件的
例如下面

/Users/xxx/Library/Deve loper/Xcode/DerivedData/Unity-iPhone-cdewarxkdigbngevcbokloxswv/Build/Intermediates-moindexUnity-iPhone.build/ReleaseForRunning-iphoneos/UnityFramework,
build/Script-9D3DC87A22D90AB00B296B-sh: Line 2: 
/Usersderek/Desktop/Dxxx/MapFileParser.sh: Permission denied

2 解决方法

Target选择UnityFramework->Build Phases
删除 RunScript
Ps:这个文件的代码,删除并没有什么影响

#!/bin/sh
if [ "$UNITY_SCRIPTING_BACKEND" = "il2cpp" ]
then
    if [ -f "$PROJECT_DIR/MapFileParser" ]
    then
        if [[ $ARCHS == *"armv7"* ]]
        then
            "$PROJECT_DIR/MapFileParser" -format=Clang "$TARGET_TEMP_DIR/$PRODUCT_NAME-LinkMap-$CURRENT_VARIANT-armv7.txt" "$PROJECT_DIR/Data/Managed/SymbolMap-32"
        fi
    else
        echo "The MapFileParser utility was not found in the directory '$PROJECT_DIR'. Managed stack traces may not be reported correctly. This usually happens when the Unity project is built with a Windows editor, then the Xcode project is copied to OSX to build for the target device. You can work around this issue by manually copying the MapFileParser executable from an OSX installation of the Unity editor into the '$PROJECT_DIR' directory."
    fi
fi

### iOS gameAssembly Command PhaseScriptExecution Failed with a Nonzero Exit Code 当遇到 `Command PhaseScriptExecution failed with a nonzero exit code` 错误时,这通常意味着构建过程中某个脚本执行阶段出现问题。对于特定于 `gameAssembly` 的情况,可能涉及多个方面的原因。 #### 可能原因分析 1. **环境配置不一致** 如果项目的依赖项或工具链版本与当前 Xcode 版本不符,可能会导致此类错误。确保所有使用的库和框架都兼容当前的 Xcode 和 Swift 编译器版本[^2]。 2. **权限问题** 构建过程中的某些操作可能需要更高的文件系统访问权限。确认项目目录及其子文件夹具有适当的读写权限[^3]。 3. **第三方库集成不当** 对于游戏开发而言,尤其是涉及到 Cocos2d-x 或 Unity 这样的引擎时,如果这些外部资源未正确导入或链接,则可能导致此错误。检查并更新 Podfile 中的相关设置以及任何自定义脚本[^1]。 4. **Shell Script 设置有误** 查看 Build Phases 下面的 Run Scripts 部分是否有语法错误或其他逻辑缺陷。特别是那些用于处理 asset bundle、代码混淆或者其他预处理工作的 shell 命令。 5. **缓存残留影响** 清理 Derived Data 文件夹可以有效排除因旧数据干扰而引发的新问题。通过菜单栏选择 Product -> Clean Build Folder 来清除不必要的中间产物。 6. **架构支持冲突** 确认 Target Settings 中 Architectures 字段下的值是否合理,避免 armv7/8 vs x86_64 之间的矛盾引起的问题。 #### 实际解决方案建议 针对上述提到的各种可能性,采取以下措施有助于解决问题: - 更新 CocoaPods 并重新安装依赖包: ```bash pod repo update && pod install ``` - 修改 Scheme 设置以禁用 Parallelize build option,在编辑 scheme 后保存更改再尝试重建工程。 - 审查所有的 Shell scripts, 尤其注意路径变量 ($PATH) 是否指向正确的 SDK 工具位置;必要时调整 PATH 环境变量声明顺序。 - 使用命令行参数 `-UseModernBuildSystem=0` 强制回退到传统构建模式测试效果如何。 - 若仍无法定位具体成因,考虑创建一个新的空白项目逐步迁移现有功能模块过来排查潜在隐患所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值