我正在计划一款需要多个用户的游戏,我想知道是否有办法启动iPhone模拟器的多个实例。我没有在菜单或Google搜索结果中看到任何内容,但我只是想确保我没有遗漏任何内容。
答案 0 :(得分:61)
这是可能的,但只有多个用户。
阅读本文:http://www.coderebel.com/2010/08/31/iphone_simulator
假设您有两个要同时调试的项目(P1,P2),请执行以下操作。
设置步骤:
调试步骤:
不幸的是,它是P.I.T.A.不得不经常改变用户,但到目前为止我还没有找到更好的解决方案。希望这会有所帮助。
答案 1 :(得分:19)
有一种方法可以在不使用多个用户的情况下轻松完成此操作。请记住,您不会连接到调试器。请注意,以下说明适用于 XCode 6 + 。您可以跳过此说明,然后向下滚动到下面的包装部分。
从答案here我们可以看到您可以从命令行启动任何模拟器:
打开-a" iOS模拟器" --args -CurrentDeviceUDID
您可以通过在控制台上运行xcrun simctl list
命令来查找deviceID(以及所有模拟器)。它会生成这样的列表。设备ID是大括号中的代码:
== Runtimes ==
iOS 8.3 (8.3 - 12F69) (com.apple.CoreSimulator.SimRuntime.iOS-8-3)
== Devices ==
-- iOS 8.3 --
iPhone 4s (99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8) (Shutdown)
iPhone 5 (K262AF11-ADD2-4FDA-ACBA-8C80DD9D4AA1) (Shutdown)
iPhone 5s (337KDC51-0A4B-47DB-8966-83562FD92C93) (Shutdown)
iPhone 6 Plus (9GK714E2-F713-4F98-A96E-C72ACD6571A8) (Shutdown)
-- iOS 8.2 --
etc continued....
因此,要使用上面的示例运行模拟器,请在控制台上运行此命令:
open -n /Applications/Xcode.app/Contents/Developer/Applications/iOS\ Simulator.app/ --args -CurrentDeviceUDID '99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8'
我们使用-n
标志,因为-a
标志指定用于打开文件的应用程序,而-n
标志甚至打开应用程序的新实例如果一个人已经在跑步使用man open
命令了解所有这些内容。
还要确保模拟器的路径正确。
还有一点需要注意,如果你像这样运行模拟器,很可能你的模拟器有限。由于它有限,你可能想要启动它而不会打断已经在屏幕上显示的那个。我们可以通过这个答案here解决这个问题,他会向您展示如何create a new simulator and delete one.
A)首先在启动之前创建一个模拟器。
用法:simctl create" name" "设备类型ID" "运行时ID"
xcrun simctl create "mynewsimulator" "iPhone 6" "com.apple.CoreSimulator.SimRuntime.iOS-8-3"
您将从上面运行的命令xcrun simctl list
命令中找到运行时ID。运行上述命令后,将在控制台屏幕上打印deviceID。请注意它,因为您将需要作为启动下面显示的模拟器的最后一个参数。我们假设此ID为99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8
B)启动它
open -n /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/ --args -CurrentDeviceUDID '99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8'
C)完成模拟器
后删除它xcrun simctl delete 99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8
所有这些都可以放在一个.sh文件中,以便于运行。
请注意,如果您决定将所有这些命令放入sh文件中,请在每个命令后面添加wait
或sleep
命令。
[编辑2017] 我看到XCode 9现在支持多个模拟器。等待看它将如何运作。
答案 2 :(得分:11)
尽管我已经知道了,你不仅可以运行多个模拟器实例,而且当实际设备测试时间到来时,你也无法运行多个调试器实例。
这意味着要进行多设备应用程序,您需要将一台Mac分配给运行应用程序的单个iPhone /触摸设备(或模拟器实例)。
我已经开始研究VMWare或Parallels是否可以以某种方式加入其中,但如果不破解操作系统,就无法做到这一点。
我建议使用http://bugreporter.apple.com提交功能请求。
答案 3 :(得分:1)
如果您拥有Mac OS X服务器许可证,另一种选择(尽管可能有点过分)是虚拟化Mac OS X Server实例,并在VM中运行第二个模拟器。
答案 4 :(得分:0)
答案 5 :(得分:0)
按照以下步骤测试您的应用。
你必须先为整个过程做一件事: 转到项目 - >编辑项目设置 - >勾选选项 - 并行构建独立目标。
注意:请小心,否则您必须重置模拟器 对于重置模拟器 - >运行模拟器 - > iPhone模拟器 - >重置内容&设置...
现在您在模拟器中有两个应用程序,您可以在所有实例上测试应用程序。
希望它会对你有所帮助:)。
答案 6 :(得分:0)
在XCode 4中,您可以运行多个实例,同时处于调试模式。
我所做的是创建目标的副本并运行原始副本和副本。如果您正在使用输出窗口,则可以切换您正在查看的输出。
答案 7 :(得分:0)
答案 8 :(得分:0)
支持Xcode 9 on。
(资料来源:WWDC 2017)
答案 9 :(得分:-1)
是的,现在它可能也很容易。
您唯一需要的是xctool
,Facebook的构建工具和红宝石。 ruby gem有助于创建/破坏测试期间所需的模拟器。
您可以阅读以下链接的完整文档:
https://github.com/plu/parallel_ios_tests
我使用这种方法,同时在4个iOS模拟器上运行我的测试。