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

Xcode 15中cp命令操作不被允许,构建失败如何解决?

解决Xcode 15构建脚本磁盘权限问题的方案

1. 改用绝对路径替代相对路径

Xcode 15对相对路径的沙箱限制更严格,放弃./MyProject/SupportingFiles/这类写法,直接用Xcode提供的环境变量${SRCROOT}(项目根目录)拼接绝对路径,避免路径解析错误导致的权限问题。示例脚本:

# 根据配置选择对应密钥文件
if [ "${CONFIGURATION}" = "Debug" ]; then
  SOURCE_FILE="${SRCROOT}/MyProject/SupportingFiles/SecretsDev.json"
else
  SOURCE_FILE="${SRCROOT}/MyProject/SupportingFiles/SecretsProd.json"
fi
TARGET_FILE="${SRCROOT}/MyProject/SupportingFiles/Secrets.json"

cp "${SOURCE_FILE}" "${TARGET_FILE}"

2. 调整脚本执行阶段到Pre-build

将你的Run Script阶段拖到Xcode Build Phases的Pre-build区域(在Target Dependencies之后,Compile Sources之前)。Pre-build阶段的脚本未进入严格的构建沙箱,拥有更高的磁盘访问权限,能避免后续阶段的权限限制。

3. 临时关闭本地构建沙箱(仅本地调试)

如果是本地开发临时排查问题,可在项目Build Settings中搜索ENABLE_USER_SCRIPT_SANDBOXING,将其设置为NO。注意:Xcode Cloud会强制开启沙箱,此方案仅适用于本地,不要用于CI环境。

4. 检查文件的目标成员配置

选中SecretsDev.json、SecretsProd.json文件,在右侧File Inspector中确认:

  • Target Membership勾选了你的主应用目标
  • Location设置为Relative to Project,确保路径解析一致

Xcode Cloud 额外配置要点

  • 拉取密钥的步骤必须放在Pre-build阶段执行,不要放在后续的Run Script阶段
  • 确认Xcode Cloud的环境变量中SRCROOT等路径变量能正常获取,避免路径拼接错误

内容的提问来源于stack exchange,提问作者Clément Cardonnel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 16:33:12