我下载了最近发布的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;
答案 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不再创建每个可用的iOS模拟器设备。而是创建一组最常用的设备。要创建其他设备(或设备的多个实例),请打开“设备”窗口,选择“模拟器”,然后单击“ +按钮,输入名称,然后选择相关的设备类型和操作系统版本,在终端中,执行xcrun simctl create命令,例如xcrun simctl create“ My iPhone 7”“ iPhone 7” iOS13.0。(49428617)“ < / p>
在Xcode中,您需要添加一个名为“ iPhone X”的新设备。
也在这里回答:
答案 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文件夹中进行更改。步骤如下。
node_modules/@react-native-community/cli/build/commands
并打开findMatchingSimulator.js
findMatchingSimulator
在进行此检查之前放入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;
}
...................
现在运行您的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”,它已经启动并且模拟器已经启动并运行!