升级macOS Sonoma后Xcode构建Ionic iOS项目遇Sandbox权限错误
解决Ionic iOS项目在Xcode 15.3 + Appflow构建时的Sandbox权限错误
问题重现
升级到macOS Sonoma 14.4.1后,使用Xcode 15.3构建Ionic iOS项目时出现沙箱权限错误:
Sandbox: bash(2538) deny(1) file-read-data /Users/.../ios/App/Pods/Target Support Files/Pods-App/Pods-App-frameworks.sh
本地修改User Script Sandboxing为No可正常构建,但Ionic Appflow构建同一提交版本时仍报错。
解决方案
1. 通过Podfile钩子强制关闭所有Pods Target的沙箱限制
由于pod install会自动生成并覆盖Pods Target的构建配置,仅修改主项目设置无法同步到Appflow环境,需在Podfile中添加Post-install钩子:
- 打开ios目录下的
Podfile - 在文件末尾添加以下代码:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['USER_SCRIPT_SANDBOXING'] = 'NO' end end end
- 执行
pod install更新配置 - 提交修改后的
Podfile和Podfile.lock到版本库
2. 持久化主项目的User Script Sandboxing设置
确保主App Target的沙箱限制也被关闭:
- 用Xcode打开ios/App/App.xcodeproj
- 选择主App Target,进入
Build Settings - 搜索
User Script Sandboxing,将其值改为No - 保存项目,提交
project.pbxproj文件到版本库
3. 清理Appflow构建缓存
Appflow的缓存可能导致旧配置残留,操作步骤:
- 登录Ionic Appflow后台,进入对应项目的构建页面
- 找到失败的构建任务,选择
Clean Cache后重新触发构建 - 确认构建步骤中包含
pod install命令(默认Ionic构建流程已包含)
原因说明
Xcode 15+默认开启了User Script Sandboxing,对脚本文件的读取权限进行严格限制。本地修改仅作用于本地Xcode配置,但Appflow构建环境会重新执行pod install生成Pods配置,若未通过Podfile钩子持久化设置,Pods Target的沙箱限制会被重新开启,导致权限错误。
内容的提问来源于stack exchange,提问作者Patrick
相关产品推荐
相关产品推荐

