Is there a way to simulate multiple iphones using xcode/iphone sim?
我正在计划一款需要多个用户的游戏,我想知道是否有办法启动多个iPhone Simulator实例。 我没有在菜单或Google搜索结果中看到任何内容,但我只是想确保自己没有遗漏任何内容。
可能,但仅适用于多个用户。
阅读此:http://www.coderebel.com/2010/08/31/iphone_simulator
假设您有两个项目(P1,P2)要同时调试,请执行以下操作。
设置步骤:
调试步骤:
不幸的是,这是P.I.T.A.不得不不时更改用户,但是到目前为止,我还没有找到更好的解决方案。希望这可以帮助。
有一种无需使用多个用户即可轻松完成此操作的方法。请记住,虽然您不会连接到调试器。请记住,以下说明适用于XCode 6+。您可以跳过此说明,而向下滚动到下面的"包装起来"部分。
从这里的答案中,我们可以看到您可以从命令行启动任何模拟器:
open -a"iOS Simulator" --args -CurrentDeviceUDID
通过在控制台上运行
1 2 3 4 5 6 7 8 9 10 | == 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.... |
因此,要以上面的示例为例运行模拟器,请在控制台上运行以下命令:
1 | open -n /Applications/Xcode.app/Contents/Developer/Applications/iOS\\ Simulator.app/ --args -CurrentDeviceUDID '99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8' |
我们使用
另外,请确保您具有正确的模拟器路径。
还有一点需要注意的是,如果您以这种方式运行模拟器,则可能是模拟器数量有限。并且由于它的局限性,您可能希望在不中断屏幕上已经启动的情况下启动它。我们可以从这里的答案中解决这个问题,在那里他向您展示了如何
总结一下,这就是启动它们的方法。
A)首先创建一个模拟器,然后再启动它。
用法:simctl创建"名称""设备类型ID""运行时ID"
1 | xcrun simctl create"mynewsimulator""iPhone 6""com.apple.CoreSimulator.SimRuntime.iOS-8-3" |
您可以从上面运行的命令
B)启动
1 | open -n /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/ --args -CurrentDeviceUDID '99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8' |
C)完成模拟器后将其删除
1 | xcrun simctl delete 99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8 |
所有这些都可以放在一个.sh文件中,以便于运行。
如果决定将所有这些内容放入sh文件,请注意在每个命令之后放置
[编辑2017]
我看到XCode 9现在将支持多个模拟器。等待看一切如何工作。
据我所知,不仅不能运行模拟器的多个实例,而且在进行实际设备测试时,您也不能运行调试器的多个实例。
这意味着要执行多设备应用程序,您需要将单个Mac分配给单个iPhone /触摸设备(或模拟器实例),每个Mac / iPhone都可以运行您的应用程序。
我已经开始研究可以通过某种方式将VMWare或Parallels引入其中,但是如果不对OS进行黑客攻击,将无法完成很多工作。
我建议通过http://bugreporter.apple.com提交功能请求。
如果您拥有Mac OS X服务器许可证,另一种选择(尽管可能会过大)是虚拟化Mac OS X服务器的实例,然后在VM中运行第二个模拟器。
从Xcode 9开始受支持。
(来源:WWDC 2017)
我设法使它结合Ivsty的答案和它一起工作。
基本上,您要做的是创建两个用户(A和B),在每个用户中运行模拟器,在用户B上运行VNC服务器,然后从用户A连接到访问屏幕B,而无需切换用户。
在XCode 4中,您可以同时运行多个实例并使其处于调试模式。
我要做的是创建目标的副本,并同时运行原始副本和副本。如果使用输出窗口,则可以切换要查看的输出。
请按照以下步骤测试您的应用。
您必须首先为整个过程做一件事:
转到项目->编辑项目设置->勾选选项-并行构建独立目标。
在Instance2.info.plist文件中添加"捆绑显示名称:Instance2"
设置可执行名称:Instance2
选择Instance2目标->转到项目->设置活动目标-> Instance2
使用Instance2进行构建
注意:请仔细进行所有操作,否则必须重置模拟器
对于重置模拟器->运行模拟器-> iPhone模拟器->重置内容和设置...
现在,您在模拟器中有两个应用程序,您可以在所有实例上测试该应用程序。
希望它能对您有所帮助:)
嗯...我不认为您在这里没有任何遗漏。据我所知,SDK中没有能够模拟多个设备的技术-尽管这将是一个有用的功能。我认为您唯一的选择是购买第二台iPhone OS设备,或者找一个也拥有iPhone OS设备让您使用它进行测试的朋友。
是的,现在有可能,而且也很容易。
您唯一需要的是
您可以阅读此链接上的完整文档:
https://github.com/plu/parallel_ios_tests
我正在使用这种方法,并且同时在4个iOS模拟器上运行测试。