找不到iPhone X模拟器。使用--verbose标志运行CLI以获取更多详细信息

时间:2019-06-05 18:21:26

标签: ios xcode react-native ios-simulator

我下载了最近发布的Xcode 11 beta版本,现在我无法在模拟器上运行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;

8 个答案:

答案 0 :(得分:9)

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 Plus -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)“ < / p>

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

也在这里回答:

error Could not find iPhone X simulator #418

答案 1 :(得分:2)

通过命令行通过以下方式添加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

为我解决了这个问题。

答案 2 :(得分:1)

尝试一下

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

答案 3 :(得分:0)

如果您的项目是使用react-native init创建的,则在CLI中< xcrun simctl list devices获取所有可用模拟器的列表。 滚动到顶部以查看可用设备的列表。 如果您想用iPhone XS Max来运行Simulator,那就可以了。 react-native run-ios --simulator="iPhone XS Max"

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

我也被这个问题困扰了很长时间。一种解决方法是在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替换为所需的模拟器。

    就我而言:   

    return {
        udid: "E345U7U8-2213-11WQ-443D-OOJU7865P8J1",
        name: "iPhone 11",
        booted : false,
        version : null
      }

再次运行react-native run-ios

答案 7 :(得分:-1)

我今天于2019年7月26日对xcode进行了更新,并且得到了相同的消息。我对iMac进行了简单的重启,运行了“ react-native run-ios”,它已经启动并且模拟器已经启动并运行!