解决 Xcode 报错:Sandbox rsync “Operation not permitted”(React Native / CocoaPods 完整方案)

解决 Xcode 报错:Sandbox rsync “Operation not permitted”(React Native / CocoaPods)



在使用 React Native 开发 iOS 应用时,如果你在 Xcode 中遇到类似如下错误:

Sandbox: rsync deny(1) file-read-data
Operation not permitted
PhaseScriptExecution [CP] Embed Pods Frameworks

那么你踩到了 Xcode 15+ 中一个非常常见的坑。

🔍 问题原因

Xcode 15 引入了更严格的安全机制 —— User Script Sandboxing(用户脚本沙箱)

这个机制会限制构建过程中脚本的文件访问权限,而 CocoaPods 在编译时会执行一个脚本(Embed Pods Frameworks),使用 rsync 来复制 framework:

  • ❌ 无法读取 framework 文件(如 React.framework)
  • ❌ 无法写入 app bundle

最终导致 Operation not permitted 错误。

✅ 解决方案(最有效)

关闭 Xcode 的 User Script Sandboxing

  1. 打开 Xcode
  2. 选择你的 Project(不是 Target)
  3. 进入 Build Settings
  4. 搜索:User Script Sandboxing
  5. 将其设置为:NO

然后执行清理并重新编译:

Shift + Command + K

通常问题会立刻解决。

💡 原理说明

关闭脚本沙箱后,CocoaPods 的构建脚本将可以正常执行:

  • 读取 framework 文件
  • 复制到应用目录
  • 保留签名信息(CodeSignature)

⚠️ 如果仍然报错(补充方案)

可以尝试以下操作:

  • 给 Xcode 添加 Full Disk Access(完整磁盘权限)
  • 删除 DerivedData 目录
  • 重新执行 pod install

🚀 总结

这个问题并不是你的项目配置错误,而是:

Xcode 新安全机制 与 CocoaPods / React Native 构建脚本之间的不兼容

在当前阶段,关闭 User Script Sandboxing 是最简单、最稳定的解决方案。


希望这篇文章能帮你少踩几个坑。

❤️ Support This Blog


If this post helped you, you can support my writing with a small donation. Thank you for reading.


Comments

Popular posts from this blog

fixed: embedded-redis: Unable to run on macOS Sonoma

Copying MDC Context Map in Web Clients: A Comprehensive Guide

Reset user password for your own Ghost blog