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

有帮助吗?

解决方案

尽可能靠近我可以告诉大家,不仅可以不用模拟器运行多个实例,但在时机成熟时进行实际测试设备,你不能要么运行调试器的多个实例。

这意味着做多设备的应用程序,你需要有一个单一的Mac分配给一个iPhone /触摸设备(或仿真实例)每个运行你的应用程序。

我已经开始寻找到是否VMware或Parallels的能以某种方式被带入这一点,但没有太多可以不受黑客攻击的操作系统来实现。

我建议提交与 http://bugreporter.apple.com

的特征请求

其他提示

这是可能的,但仅限于多个用户。

读这个: http://www.coderebel.com/2010/08/31/iphone_simulator

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

设置步骤:

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

调试步骤:

  1. 关闭 Xcode 和模拟器(如果正在运行)
  2. 使用 U1 启动 iPhone Launcher.app。
  3. 用U1启动Xcode,加载P1,开始调试。
  4. 使用 U2 启动 iPhone Launcher.app。
  5. 用U2启动Xcode,加载P2,开始调试。

不幸的是,这是一个 P.I.T.A.不得不时不时地更改用户,但到目前为止我还没有找到更好的解决方案。希望这可以帮助。

有一种方法,而无需使用多个用户来执行此操作容易。请记住,你将不会被连接,虽然在调试器。记住以下的说明为的的XCode 6 + 即可。您可以跳过这个解释,只是向下滚动到下面的包装,其上升区间。

这是一个答案这里我们可以看到可以从命令行启动任何模拟器:

  

开放-a “iPhone模拟器” --args -CurrentDeviceUDID

您可以通过运行在控制台上的xcrun simctl list命令来查找设备ID(以及所有模拟器)。它会产生这样的列表。该设备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。运行上述命令后,设备ID将在控制台屏幕上被打印。注意到这点,你将需要作为最后一个参数推出如下所示的模拟器。让我们假设这个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文件。 请注意把waitsleep命令,在每个命令后,如果您决定把这一切变成一个SH文件。

<强> [EDIT 2017] 我看到的XCode 9将支持多个模拟器。等待,看看它是如何将所有的工作。

另一种选择(尽管可能是矫枉过正)如果你有一台Mac OS X服务器许可证是虚拟化的Mac OS X Server的实例,并运行在虚拟机中的第二模拟器。

嗯...我不认为你在这里缺少什么。据我所知,是能够模拟多台设备的SDK中没有技术 - 虽然这将是一个非常有用的功能有。我认为你唯一的选择是获得第二iPhone OS设备,或者让朋友谁也有一个iPhone OS设备让你使用它进行测试。

在的XCode 4可以同时具有两者处于调试模式下运行多个实例。

我所做的就是创建我的目标的重复跑原件和副本。如果您使用的输出窗口,你可以切换你正在寻找它的输出。

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

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

  1. 调试将在模拟器中创建应用程序的代码例如,您的应用程序名称是 - 实例
  2. 关闭模拟器
  3. 转到Project->新目标 - >实例2添加“ Bundle display name:instance2“ instance2.info.plist文件设置可执行名称:instance2选择实例2目标 - >转到项目 - >设置活动目标 - > Instance2用instence2构建

笔记 :请仔细地执行所有操作,否则您必须重置模拟器以重置模拟器 - >运行模拟器 - > iPhone模拟器 - >重置内容和设置...

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

希望它能帮助你:)

我设法得到它的工作由 Ivsty ,提供的这一项

基本上,你做的是创建两个用户(A和B),在它们中的每运行仿真器,对用户B运行VNC服务器,然后从用户A连接到访问画面B而无需切换用户。

在Xcode 9上的支持的。

(来源:WWDC 2017)

是的,现在是可能的,也是很容易的。 你唯一需要的是xctool,从Facebook和红宝石宝石构建工具。红宝石宝石有助于产生/破坏试验期间所需的模拟器。

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

https://github.com/plu/parallel_ios_tests

我使用这种方法和我运行同时我4 iPhone模拟器测试

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top