我正在计划一个需要多个用户的游戏,我想知道是否有办法启动iPhone模拟器的多个实例.我没有在菜单或Google搜索结果中看到任何内容,但我只是想确保我没有遗漏任何内容.
这是可能的,但只有多个用户.
请阅读:http://www.coderebel.com/2010/08/31/iphone_simulator
假设您有两个要同时调试的项目(P1,P2),请执行以下操作.
设置步骤:
在Mac上创建一个新用户(U2)
给它R/W访问P2,特别是它的构建文件夹.
从上面的站点下载启动器应用程序并将其复制到应用程序.
调试步骤:
如果正在运行,请关闭Xcode和模拟器
使用U1启动iPhone Launcher.app.
用U1启动Xcode,加载P1,开始调试.
使用U2启动iPhone Launcher.app.
用U2启动Xcode,加载P2,开始调试.
不幸的是,PITA必须时不时地改变用户,但到目前为止我还没有找到更好的解决方案.希望这可以帮助.
有一种方法可以轻松完成此操作而无需使用多个用户.请记住,您不会连接到调试器.请记住,下面的解释适用于XCode 6+.您可以跳过此说明,然后向下滚动到下面的包装部分.
从这里的答案我们可以看到您可以从命令行启动任何模拟器:
打开-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
命令可以了解所有这些内容.
还要确保您的模拟器具有正确的路径.
还有一点需要注意,如果你像这样运行模拟器,很可能你的模拟器有限.由于它有限,你可能想要启动它而不会中断已经在屏幕上的那个.我们可以从这个回答解决了这个位置,在那里他展示了如何create a new simulator and delete one.
A)首先在启动模拟器之前创建模拟器.
用法:simctl创建"名称""设备类型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现在将支持多个模拟器.等待看它将如何工作.
尽管我可以告诉你,你不仅可以运行多个模拟器实例,而且当实际设备测试时间到来时,你也无法运行多个调试器实例.
这意味着要进行多设备应用程序,您需要将单个Mac分配给运行应用程序的单个iPhone /触摸设备(或模拟器实例).
我已经开始研究VMWare或Parallels是否能够以某种方式进入这个领域,但是如果不破解操作系统,就没有什么可以做的.
我建议您使用http://bugreporter.apple.com提交功能请求.