【问题标题】:Could not find iPhone X simulator. Run CLI with --verbose flag for more details找不到 iPhone X 模拟器。使用 --verbose 标志运行 CLI 以获取更多详细信息
【发布时间】:2019-10-21 06:58:50
【问题描述】:

我下载了最近发布的 Xcode 11 测试版,但现在我无法在我的模拟器上运行我的 React-Native 应用程序。 我知道有关堆栈溢出的一些问题,但他们没有帮助。问题是没有

/node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js

文件。在local-cli文件夹中只有一个名为cli.js的文件

'use strict';

var cli = require('@react-native-community/cli');

if (require.main === module) {
  cli.run();
}

module.exports = cli;

【问题讨论】:

  • 为什么你提到的文件路径不退出是个问题。根据您提到的cli.js 文件,它看起来好像源刚刚移动。检查node_modules/@react-native-communitylink to repo
  • @MattyK14 是的,里面有 runIOS 文件。但里面的代码如下。 if (!version.includes('iOS') && !version.includes('tvOS')) { continue; }

标签: ios xcode react-native ios-simulator


【解决方案1】:

试试这个

react-native run-ios --simulator="iPhone 11"

【讨论】:

    【解决方案2】:

    我也被这个问题困扰了很长时间。解决这个问题的一种方法是在 node_modules 文件夹中进行更改。下面的步骤。

    1. 转到node_modules/@react-native-community/cli/build/commands 并打开findMatchingSimulator.js
    2. 找到函数findMatchingSimulator
    3. 完成该函数后,您将看到该函数返回第一个匹配的模拟器以打开您的项目。
    4. 有一行我们迭代设备并检查设备是否可用。
    5. 在此检查之前放置一个 console.log 以获取每个设备的详细信息。

         for (const i in device) {
             const simulator = device[i]; // Skipping non-available simulator
             console.log(JSON.stringify(simulator));
      
             if (simulator.availability !== '(available)' && simulator.isAvailable !== 'YES') 
             {
              continue;
             }
             ...................
      
    6. 现在运行react-native run-ios 命令。您将看到所有模拟器设备详细信息都打印在控制台中。选择一个你喜欢的并用你想要的模拟器替换return null

      就我而言:

      返回{
          udid: "E345U7U8-2213-11WQ-443D-OOJU7865P8J1",
          名称:“iPhone 11”,
          启动:假,
          版本:空
        }

    再次运行react-native run-ios

    【讨论】:

    • 谢谢,我可以说这是最适合我的快速修复方法!
    【解决方案3】:

    error Could not find "iPhone X" simulator. Run CLI with --verbose flag for more details.

    问题

    如果你用最新的 Xcode (11) 试试这个,就没有 iPhone X!

    自行运行模拟器,在顶部菜单中,查看硬件、设备、iOS 13.0 下。

    你会看到有: - iPhone 8 - iPhone 8 加 - iPhone XS - iPhone XS 最大 - iPhone XR - ...和一些iPad

    当你执行 run-ios 时,react-native 旨在匹配请求的设备。

    内部硬编码默认为 iPhone X。

    尝试匹配请求设备的函数在:

    /node_modules/@react-native-community/cli-platform-ios/build/commands/runIOS/findMatchingSimulator.js

    此功能的设计目的是让您可以给它一个设备和一个可选的版本号。

    如果找不到给定的设备和版本,它将默认使用列表中的第一个设备返回匹配项。

    但是……实际上,第一个设备是手表,任何手表都被排除在匹配之外,所以这个函数会返回null。

    解决方案 1 - 使用现有的 Xcode iOS 设备

    首先单独运行模拟器,如上所述,并记下您想要哪款 iPhone 或 iPad。

    然后将此名称作为可选参数传递给 run-ios 命令行命令,如下所示:

    react-native run-ios --simulator="iPhone 8"

    解决方案 2 - 添加新的 Xcode iOS 设备

    根据Xcode 11 Release Notes

    “默认情况下,Xcode 不再创建每个可用的 iOS 模拟器设备。而是创建一组最常用的设备。要创建其他设备 - 或设备的多个实例 - 打开设备窗口,选择模拟器,单击+ 按钮,输入名称,选择相关的设备类型和操作系统版本。在终端中,执行 xcrun simctl create 命令,例如 xcrun simctl create "My iPhone 7" "iPhone 7" iOS13.0. (49428617)"

    在 Xcode 中,您需要添加一个名为“iPhone X”的新设备。

    也在这里回答:

    error Could not find iPhone X simulator #418

    【讨论】:

      【解决方案4】:

      通过命令行添加 iPhone X 模拟器:

      /Applications/Xcode.app/Contents/Developer/usr/bin/simctl create "iPhone X" com.apple.CoreSimulator.SimDeviceType.iPhone-X com.apple.CoreSimulator.SimRuntime.iOS-13-0
      

      为我解决了这个问题。

      【讨论】:

        【解决方案5】:

        转到 Xcode > 打开开发者工具 > 模拟器 > 添加模拟器

        【讨论】:

          【解决方案6】:

          我今天更新了 xcode,2019 年 7 月 26 日,我收到了同样的信息。我简单地重新启动了 iMac,运行“react-native run-ios”,它启动了,模拟器启动并运行了!

          【讨论】:

            【解决方案7】:

            我也有同样的问题。尝试玩测试版并得到了一点。我能够在 Xcode 10 中打开 .xcodeproj 文件,然后运行模拟器。然后我可以在 Atom 中进行更改并在模拟器中刷新应用程序。

            【讨论】:

              【解决方案8】:

              如果你的项目是使用 react-native init 创建的,在你的 CLIxcrun simctl list devices 获取所有可用模拟器的列表。 滚动到顶部以查看可用设备列表。 如果你想用 iPhone XS Max 运行模拟器,那么只需; react-native run-ios --simulator="iPhone XS Max"

              【讨论】:

              • 是的,已经尝试过了。设备列表正在显示,但是当我使用任何命令运行时,它说没有找到模拟器
              猜你喜欢
              • 2020-01-09
              • 2020-04-01
              • 2014-07-18
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-04-27
              • 1970-01-01
              相关资源
              最近更新 更多