除关闭ENABLE_USER_SCRIPT_SANDBOXING外,Xcode中Sandbox rsync.samba报错的其他解法?
Xcode构建Mapbox项目时沙箱权限报错的替代解决方案(保持
ENABLE_USER_SCRIPT_SANDBOXING为YES) 报错信息
error: Sandbox: rsync.samba(76010) deny(1) file-write-create /Users/lluis/Library/Developer/Xcode/DerivedData/MyProject-dlpddtwcucwpygcxhthjwisifahq/Build/Products/Debug-iphonesimulator/MyProject-Des.app/Frameworks/MapboxMaps.framework/MapboxMapsResources.bundle (in target 'MyProject-Des' from project 'MyProject') error: Sandbox: rsync.samba(76011) deny(1) file-write-create /Users/lluis/Library/Developer/Xcode/DerivedData/MyProject-dlpddtwcucwpygcxhthjwisifahq/Build/Products/Debug-iphonesimulator/MyProject-Des.app/Frameworks/MapboxMaps.framework/.Info.plist.7j5Zxx (in target 'MyProject-Des' from project 'MyProject') error: Sandbox: rsync.samba(76011) deny(1) file-write-create /Users/lluis/Library/Developer/Xcode/DerivedData/MyProject-dlpddtwcucwpygcxhthjwisifahq/Build/Products/Debug-iphonesimulator/MyProject-Des.app/Frameworks/MapboxMaps.framework/.MapboxMaps.rIRQea
现状与需求
现有通用解决方案是将ENABLE_USER_SCRIPT_SANDBOXING设置为NO,执行清理后可解决,但需在保持该配置为YES的前提下找到替代方案。
环境信息
- Ruby 3.3.0
- Xcode 15.4
- 系统Cocoapods版本:1.15.2
- Gemfile限制Cocoapods版本
<1.15,存在版本冲突嫌疑
可行排查与解决方向
1. 统一Cocoapods版本
系统Cocoapods版本与Gemfile限制存在冲突,需二选一调整:
- 更新Gemfile,将Cocoapods版本限制改为
>=1.15.2,执行bundle install同步版本 - 降级系统Cocoapods到1.14.x版本,执行
sudo gem uninstall cocoapods -v 1.15.2 && sudo gem install cocoapods -v 1.14.3
之后执行全套清理命令:
pod deintegrate && pod clean && rm -rf ~/Library/Developer/Xcode/DerivedData && pod install
2. 调整Mapbox构建脚本路径
进入项目Target的Build Phases,找到Mapbox相关的Run Script阶段:
- 检查脚本中是否有直接写入
MapboxMaps.framework内部的操作,这类操作会触发沙箱权限限制 - 将临时文件的生成路径改为沙箱允许的临时目录(如
${DERIVED_FILE_DIR}),处理完成后再复制到目标位置 - 若使用rsync命令,调整参数避免在.framework目录下创建临时文件,改为先同步到临时目录再替换
3. 升级Mapbox SDK版本
当前使用的Mapbox Maps SDK可能未适配Xcode 15.4的沙箱规则,尝试升级到官方最新兼容版本:
- 修改Podfile中Mapbox的版本号,例如
pod 'MapboxMaps', '~> 11.0'(以官方最新稳定版为准) - 执行
pod update MapboxMaps后重新构建项目
内容的提问来源于stack exchange,提问作者Lluís Rodríguez
相关产品推荐
相关产品推荐

