Xcode 11启动React Native应用时遭遇权限拒绝问题
React Native 遗留项目iOS模拟器权限错误(NSCocoaErrorDomain 257)解决方案
问题概述
维护React Native 0.59.10遗留项目,使用Xcode 11.3.1在macOS 10.15.2上构建iOS应用成功,但模拟器运行时触发权限错误(NSCocoaErrorDomain Code:257),手动拖拽安装也失败,已尝试清理DerivedData、pod操作、常规权限赋值等操作未解决。
针对性排查与解决步骤
1. 修复CoreSimulator目录权限
之前仅处理了Xcode DerivedData权限,CoreSimulator目录权限异常也会导致安装失败:
sudo chown -R $USER:staff /Users/$USER/Library/Developer/CoreSimulator sudo chmod -R 755 /Users/$USER/Library/Developer/CoreSimulator
2. 重置模拟器状态
模拟器缓存或状态异常可能引发权限问题:
- 打开模拟器,点击菜单栏
Hardware→Erase All Content and Settings... - 等待重置完成后重启模拟器,重新尝试构建安装
3. 确认Xcode完整磁盘访问权限
macOS的隐私权限限制可能阻止Xcode访问相关目录:
- 打开
系统偏好设置→安全性与隐私→隐私→完整磁盘访问权限 - 勾选Xcode,重启Xcode后再尝试构建
4. 检查构建产物可执行文件权限
手动验证.app包内可执行文件的权限:
- 导航到DerivedData的
Debug-iphonesimulator目录,右键.app文件选择显示包内容 - 找到与APP同名的可执行文件,右键
显示简介,确认当前用户拥有读取与执行权限 - 若权限不足,执行命令(替换路径为你的实际路径):
chmod +x /Users/***/Library/Developer/Xcode/DerivedData/***-dxvphugocaepzfaicmcbykxrlgrt/Build/Products/Debug-iphonesimulator/***.app/YourAppExecutableName
5. 更换模拟器iOS版本
React Native 0.59.10属于旧版本,与iOS13.2模拟器可能存在兼容性问题:
- 打开Xcode →
Window→Devices and Simulators - 添加iOS12.x版本的模拟器,切换后重新构建安装
6. 调整项目Build Settings配置
- 确认
Deployment Target设置不高于模拟器的iOS版本 - 搜索
User Script Sandboxing,设置为NO(旧项目开启该选项易引发权限限制) - 再次核对Build Settings中的
EXECUTABLE_NAME与Info.plist里的CFBundleExecutable完全一致,无拼写错误
7. 命令行手动安装到模拟器
绕过Xcode UI层面的问题,用命令行操作:
- 获取模拟器UDID:
xcrun simctl list devices
- 安装APP到模拟器(替换UDID和APP路径):
xcrun simctl install <模拟器UDID> /Users/***/Library/Developer/Xcode/DerivedData/***-dxvphugocaepzfaicmcbykxrlgrt/Build/Products/Debug-iphonesimulator/***.app
- 启动APP(替换UDID和Bundle ID):
xcrun simctl launch <模拟器UDID> <你的APP Bundle ID>
观察命令行输出的报错信息,进一步定位问题
8. 简化项目路径
尽管-是合法字符,但旧版本工具对复杂路径可能敏感:
将项目移动到更简洁的路径(如~/Desktop/MyRNApp),避免路径过长或包含潜在敏感字符,重新执行pod install和构建
内容的提问来源于stack exchange,提问作者Zenb0t
相关产品推荐
相关产品推荐

