You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何区分SwiftUI预览构建与Cmd+B构建?实现Build phase按需执行

让Build Phase仅在实际构建时运行,跳过SwiftUI预览

要区分Xcode的实际构建/运行和SwiftUI预览构建,核心是利用Xcode自动设置的环境变量:

  • SwiftUI预览构建时,环境变量ACTION的值为build-for-previews;
  • 手动构建(Cmd+B)时ACTION值为build,点击播放按钮运行时为install。

处理Run Script类型的Build Phase

直接在脚本最开头加入判断逻辑,预览时直接退出脚本,不执行后续内容:

# 检测到是SwiftUI预览构建,跳过后续脚本执行
if [ "$ACTION" = "build-for-previews" ]; then
  exit 0
fi

# 这里写你原本需要执行的脚本内容
# 示例:
# echo "执行实际构建的脚本任务"

处理非脚本类型的Build Phase

如果是Copy Files、Embed Frameworks这类自定义Build Phase,可以给它添加前置控制脚本:

  1. 在目标的Build Phases列表中,新增一个"Run Script" phase,放在你要控制的phase之前;
  2. 在这个前置脚本中写入:
if [ "$ACTION" = "build-for-previews" ]; then
  # 预览时让前置脚本返回失败,阻止后续phase执行
  exit 1
else
  # 实际构建时正常通过,后续phase正常执行
  exit 0
fi
  1. 确保你要控制的phase处于前置脚本之后,Xcode会在前置脚本失败时自动跳过后续phase的执行。

内容的提问来源于stack exchange,提问作者Tobonaut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 22:20:05