有没有办法使用xcode / iphone sim模拟多个iphone?

时间:2009-05-22 05:36:20

标签: iphone xcode simulator

我正在计划一款需要多个用户的游戏,我想知道是否有办法启动iPhone模拟器的多个实例。我没有在菜单或Google搜索结果中看到任何内容,但我只是想确保我没有遗漏任何内容。

10 个答案:

答案 0 :(得分:61)

这是可能的,但只有多个用户。

阅读本文:http://www.coderebel.com/2010/08/31/iphone_simulator

假设您有两个要同时调试的项目(P1,P2),请执行以下操作。

设置步骤:

  1. 在Mac上创建新用户(U2)
  2. 授予它对P2的R / W访问权限,尤其是对其构建文件夹。
  3. 从上面的网站下载启动器应用程序并将其复制到“应用程序”。
  4. 调试步骤:

    1. 如果正在运行,请关闭Xcode和模拟器
    2. 使用U1启动iPhone Launcher.app。
    3. 用U1启动Xcode,加载P1,开始调试。
    4. 使用U2启动iPhone Launcher.app。
    5. 用U2启动Xcode,加载P2,开始调试。
    6. 不幸的是,它是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文件中,请在每个命令后面添加waitsleep命令。

[编辑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)

嗯......我不认为你在这里遗漏任何东西。据我所知,SDK中没有能够模拟多个设备的技术 - 尽管这将是一个有用的功能。我认为你唯一的选择就是获得第二个iPhone OS设备,或者让一个拥有iPhone OS设备的朋友让你用它进行测试。

答案 5 :(得分:0)

按照以下步骤测试您的应用。

你必须先为整个过程做一件事: 转到项目 - >编辑项目设置 - >勾选选项 - 并行构建独立目标。

  1. 将在模拟器中创建应用程序的调试代码例如,您的应用程序名称为 - Instance
  2. 关闭模拟器
  3. 转到项目 - >新目标 - >实例2 在Instance2.info.plist文件中添加“Bundle display name:Instance2” 设置可执行文件名称:Instance2 选择Instance2 Target - >转到项目 - >设置有效目标 - >实例2 使用Instance2构建
  4. 注意:请小心,否则您必须重置模拟器 对于重置模拟器 - >运行模拟器 - > iPhone模拟器 - >重置内容&设置...

    现在您在模拟器中有两个应用程序,您可以在所有实例上测试应用程序。

    希望它会对你有所帮助:)。

答案 6 :(得分:0)

在XCode 4中,您可以运行多个实例,同时处于调试模式。

我所做的是创建目标的副本并运行原始副本和副本。如果您正在使用输出窗口,则可以切换您正在查看的输出。

答案 7 :(得分:0)

我设法将Ivstythis one的答案结合起来。

基本上,您要做的是创建两个用户(A和B),在每个用户中运行模拟器,在用户B上运行VNC服务器,然后从用户A连接到访问屏幕B而无需切换用户。

答案 8 :(得分:0)

支持Xcode 9 on。

(资料来源:WWDC 2017)

答案 9 :(得分:-1)

是的,现在它可能也很容易。 您唯一需要的是xctool,Facebook的构建工具和红宝石。 ruby gem有助于创建/破坏测试期间所需的模拟器。

您可以阅读以下链接的完整文档:

https://github.com/plu/parallel_ios_tests

我使用这种方法,同时在4个iOS模拟器上运行我的测试。