使用React Native运行多个iOS模拟器?

时间:2016-06-29 12:04:59

标签: react-native

我想在使用React Native的多个IOS模拟器中运行该应用程序,以便能够比较iPhone版本与iPad版本

我看到有人已经做过了 https://ashleyd.ws/running-multiple-ios-simulators-with-react-native/

但不幸的是他没有提到他是怎么做到的

6 个答案:

答案 0 :(得分:21)

使用MacOs Terminal,启动第一个模拟器:

  1. cd /Applications/Xcode.app/Contents/Developer/Applications
  2. open -n Simulator.app
  3. cd <your react native project>
  4. react-native run-ios
  5. 现在,启动第二个模拟器:

    1. cd /Applications/Xcode.app/Contents/Developer/Applications
    2. open -n Simulator.app
    3. 点击&#34;确定&#34;当你得到&#34;无法以当前状态启动设备&#34;
    4. 将模拟器更改为与第一个模拟器不同(例如硬件 - &gt;设备 - &gt; iPhone 6s)
    5. cd <react-native project>
    6. react-native run-ios --simulator "iPhone 6s"(或您在步骤8中选择的任何模拟器)。
    7. 注意:在最后一步中,您可以忽略终端输出,因为它表示它是使用第一个模拟器硬件启动的。实际上,它正在启动第二个模拟器(根据需要)。

答案 1 :(得分:1)

从命令行打开多个模拟器对我来说不起作用。通过一些手动交互,我得到了这个与模拟器10.0和react-native 0.47.2一起使用 - 它基于反应原生的事实总是在最后打开的模拟器中打开应用程序:

  • 手动打开模拟器
  • 启动应用:react-native run-ios
  • 手动执行:硬件 - &gt;设备 - &gt;选择iOS - &gt;选择设备(之前不同!)
  • 将打开第二个模拟器
  • 再次启动应用:react-native run-ios
  • 这将在第二个模拟器中打开应用程序

答案 2 :(得分:0)

这不是您问题的直接答案,但我认为它提供了比运行不同模拟器更好的解决方案。 您可以检查以下名为ScreenSwitcher的库。

它基本上只使用相同的模拟器,在我们的情况下iPhone 6 plus,您可以直接检查并检查其上任何其他较小的屏幕。 我发现这种方法更有效,更快。

ScreenSwitcher

答案 3 :(得分:0)

上面的一些答案对我有所帮助,但我认为它们并不完整。

我一直在使用这种技术在iOS模拟器上测试两人游戏(halfchess.com)。我的目标是同时运行两个半音符实例。

要使我的应用程序在两个模拟器上运行,我首先需要install Expo app on multiple simulators。以下步骤是第一次。

  1. react-native-scripts start以运行程序包管理器。复制 该应用的expo URL,例如exp://172.20.10.2:19000到剪贴板。
  2. 从上方运行ios模拟器(按i)。这将打开一个默认的模拟器并运行该应用程序。让我们调用默认设备X
  3. 转到菜单Hardware -> Device -> iOS -> select a different device
  4. File -> Close Window关闭当前设备。现在我们只打开一个窗口。
  5. 通过重新启动软件包管理器,然后再次按i来在此设备上安装expo应用。
  6. 现在我们可以再次打开较早关闭的设备X。打开模拟器并打开博览会应用程序。
  7. 第1步中的博览会URL应位于博览会应用的剪贴板文本区域中。通过单击URL启动应用。

下一次起,拾取的设备已经安装了expo应用程序。

  1. 执行上述步骤1。
  2. 打开默认的X和其他设备Y
  3. 打开e

设备上的xpo应用,并按照步骤7在两个模拟器上运行该应用。

所以第二次以后更快了。

这样做的缺点是,两个模拟器的日志都出现在同一终端中。现在,我已经将该项目克隆到另一个目录中,并从另一个终端执行react-native-scrips start;并使用其中一个模拟器生成的第二个Expo URL。现在,两个模拟器的日志都显示在不同的终端中。应该有更好的方法来做到这一点。

PS-我当前正在使用xcode的10+版本。

答案 4 :(得分:0)

我有两个同时运行的独立本机应用程序

我在第一个应用程序的一个终端中输入了以下内容

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

完成建设后,我打开了另一个终端并运行第二个应用程序

react-native run-ios --simulator="iPhone XS" --port=8088

然后在新模拟器上构建第二个应用程序,并为Metro bundler使用不同的端口。但是,在第二个应用程序构建之后,第一个应用程序将其屏幕从第一个应用程序更改为第二个应用程序。我按下主屏幕按钮,然后重新打开了第一个应用程序。一个观察结果是,第一个应用程序似乎在模拟器中同时安装了两个应用程序,而第二个则没有。

答案 5 :(得分:-1)

另一种选择是从xcode运行应用程序,再从react-native命令行打开另一个应用程序。每个人通常打开自己的模拟器(我想知道为什么)。如果我使用Detox运行端到端测试,那么它也会打开自己的模拟器。