我想在使用React Native的多个IOS模拟器中运行该应用程序,以便能够比较iPhone版本与iPad版本
我看到有人已经做过了 https://ashleyd.ws/running-multiple-ios-simulators-with-react-native/
但不幸的是他没有提到他是怎么做到的
答案 0 :(得分:21)
使用MacOs Terminal,启动第一个模拟器:
cd /Applications/Xcode.app/Contents/Developer/Applications
open -n Simulator.app
cd <your react native project>
react-native run-ios
现在,启动第二个模拟器:
cd /Applications/Xcode.app/Contents/Developer/Applications
open -n Simulator.app
cd <react-native project>
react-native run-ios --simulator "iPhone 6s"
(或您在步骤8中选择的任何模拟器)。 注意:在最后一步中,您可以忽略终端输出,因为它表示它是使用第一个模拟器硬件启动的。实际上,它正在启动第二个模拟器(根据需要)。
答案 1 :(得分:1)
从命令行打开多个模拟器对我来说不起作用。通过一些手动交互,我得到了这个与模拟器10.0和react-native 0.47.2一起使用 - 它基于反应原生的事实总是在最后打开的模拟器中打开应用程序:
答案 2 :(得分:0)
这不是您问题的直接答案,但我认为它提供了比运行不同模拟器更好的解决方案。 您可以检查以下名为ScreenSwitcher的库。
它基本上只使用相同的模拟器,在我们的情况下iPhone 6 plus
,您可以直接检查并检查其上任何其他较小的屏幕。
我发现这种方法更有效,更快。
答案 3 :(得分:0)
上面的一些答案对我有所帮助,但我认为它们并不完整。
我一直在使用这种技术在iOS模拟器上测试两人游戏(halfchess.com)。我的目标是同时运行两个半音符实例。
要使我的应用程序在两个模拟器上运行,我首先需要install Expo app on multiple simulators
。以下步骤是第一次。
react-native-scripts start
以运行程序包管理器。复制
该应用的expo URL,例如exp://172.20.10.2:19000到剪贴板。i
)。这将打开一个默认的模拟器并运行该应用程序。让我们调用默认设备X
。Hardware -> Device -> iOS -> select a different device
File -> Close Window
关闭当前设备。现在我们只打开一个窗口。i
来在此设备上安装expo应用。X
。打开模拟器并打开博览会应用程序。下一次起,拾取的设备已经安装了expo应用程序。
X
和其他设备Y
。设备上的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运行端到端测试,那么它也会打开自己的模拟器。