Xcode 构建脚本的权限管理与沙盒机制配置详解。

User Script Sandboxing 的作用

09-38-08-J2VxkM_扫码_搜索联合传播样式-标准色版

在 Xcode 的较新版本中,默认开启了 User Script Sandboxing(用户脚本沙盒化)。这一设置旨在提高安全性,控制 Xcode 构建过程中脚本(Run Script Phase)的权限。

默认情况下(设置为 YES),Xcode 会将脚本限制在一个沙盒环境中运行,严格限制其对文件系统的访问。这意味着,如果你的脚本尝试访问或修改未在 Build Phase 的 Input/Output Files 中声明的文件,或者尝试写入项目目录之外的区域,构建往往会失败并报出 Operation not permitted 错误。

为了解决这个问题,特别是对于一些需要广泛文件访问权限的遗留脚本或工具,你可以将 User Script Sandboxing 设置为 NO。这将禁用沙盒限制,允许脚本在构建过程中自由访问和修改文件系统。

如何禁用 User Script Sandboxing

  1. 打开 Xcode 项目,在左侧导航栏点击项目根节点(.xcodeproj)。
  2. 在右侧编辑区域,选中你需要配置的 Target
  3. 点击顶部的 Build Settings 选项卡。
  4. 在搜索框中输入 User Script Sandboxing(或者在 Build Options 分组下寻找)。
  5. 将该选项的值从 Yes 修改为 No

这样设置后,你的构建脚本将不再受沙盒机制的阻拦,可以正常读写文件。