You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Xcode 13上运行React Native 0.57.7项目并解决instruments报错

问题根因

Xcode 13 正式废弃并移除了旧版instruments工具,替代工具为xctrace,而React Native 0.62以下版本的iOS运行脚本硬编码调用了instruments命令,因此触发找不到工具的报错,无需升级RN版本即可修复。

不升级React Native的修复方案

方案1:全局命令映射(无需修改项目代码,重启设备后依然生效)

  • 关闭所有正在运行的Xcode和终端进程
  • 若为M系列芯片的Mac且/usr/local/bin目录不存在,先执行命令创建目录:
sudo mkdir -p /usr/local/bin
  • 执行终端命令创建软链接:
sudo ln -s /Applications/Xcode.app/Contents/Developer/usr/bin/xctrace /usr/local/bin/instruments
  • 执行完成后运行验证命令:instruments -s,如果正常输出iOS设备、模拟器列表即配置生效,重新执行RN运行命令即可正常启动项目。

方案2:修改项目内RN脚本(仅当前项目生效,重装node_modules后需要重新修改)

第一步:修改runIOS.js文件

  • 打开文件路径:node_modules/react-native/local-cli/runIOS/runIOS.js
  • 查找所有包含xcrun instruments的代码行,将instruments参数替换为xctrace,将-s参数替换为list devices,修改后示例:
// 修改前
const instrumentsProc = spawn('xcrun', ['instruments', '-s'], {
// 修改后
const instrumentsProc = spawn('xcrun', ['xctrace', 'list', 'devices'], {

第二步:修改findMatchingSimulator.js文件

  • 打开文件路径:node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js
  • 查找文件内匹配模拟器版本的正则表达式,调整为适配xctrace返回格式的规则,参考修改:
// 修改前
const simulatorVersionRegex = /-- iOS (.+) --/;
// 修改后
const simulatorVersionRegex = /iOS (\d+\.\d+(\.\d+)?)/;
  • 同步调整模拟器名称的提取逻辑,适配新返回值的格式即可。

内容的提问来源于stack exchange,提问作者Rohit Aggarwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 15:24:07