Xcode为macOS arm64构建时如何以x86_64架构执行构建脚本
可行解决方案如下:
- 首先修正你之前的命令写法错误:你原写法中的
$(node ...)会先在当前arm64架构的shell下执行node命令,再把执行输出作为参数传给x86_64的zsh,完全不符合预期。正确的嵌套写法如下,将整条待执行命令放在-c的字符串参数内,让x86_64架构的子shell执行node命令:
arch -x86_64 /bin/zsh -c 'node "$HOME/.vscode/extensions/adobe.extendscript-debug-1.1.2/public-scripts/exportToJSX.js" -f -n "$PROJECT_DIR/indesignagent/Javascript"'
用单引号包裹内层命令可避免环境变量在父shell提前展开,$PROJECT_DIR等Xcode内置变量可正常传递到子shell中。
- 更简化的方案:不需要嵌套shell,直接给node进程指定x86_64架构执行即可,适配性更强:
arch -x86_64 node "$HOME/.vscode/extensions/adobe.extendscript-debug-1.1.2/public-scripts/exportToJSX.js" -f -n "$PROJECT_DIR/indesignagent/Javascript"
- 全局修改脚本阶段架构的方案:直接修改Xcode脚本阶段顶部的「Shell」输入框,将默认的
/bin/sh改为arch -x86_64 /bin/sh,这样该脚本阶段内的所有命令都会默认以x86_64架构执行,无需为每条命令单独加前缀。
你可以在脚本中添加一行arch命令,执行构建后查看构建日志输出,若输出为x86_64即说明架构切换生效。
内容的提问来源于stack exchange,提问作者Pat_Morita
相关产品推荐
相关产品推荐

