能否在Xcode构建进程中止时执行清理脚本?
解决构建中止时无法恢复Info.plist的问题
可以通过在shell脚本中设置**信号陷阱(trap)**来实现构建中止时自动执行清理逻辑,不管构建是正常完成、被中断还是异常终止,都能保证原始Info.plist被恢复。
具体实现方案
在你的构建脚本开头添加陷阱处理逻辑,示例如下:
# 定义清理函数:恢复原始Info.plist cleanup() { if [ -f Info.plist.temp ]; then mv -f Info.plist.temp Info.plist echo "[Cleanup] 已恢复原始Info.plist文件" fi } # 设置陷阱:捕获脚本退出、中断、终止信号,触发清理 trap cleanup EXIT INT TERM # 复制原始plist到临时文件 cp Info.plist Info.plist.temp # 这里写入你Debug模式下更新Info.plist的代码 # ...(比如plutil修改、sed替换等操作)
关键说明
EXIT信号会覆盖脚本正常结束、错误退出的场景;INT对应Ctrl+C手动中断的信号;TERM对应进程被强制终止的信号,基本覆盖所有构建中止的情况。- 清理函数里先检查临时文件是否存在,避免因临时文件缺失导致
mv命令报错。 - 如果是在Xcode的「Run Script」构建阶段中使用这段逻辑,直接将代码粘贴到脚本框即可,无需额外配置。
内容的提问来源于stack exchange,提问作者Yamamoto
相关产品推荐
相关产品推荐

