有没有办法使用 xcode/iphone sim 模拟多个 iphone?
题
我正在计划一款需要多个用户的游戏,我想知道是否有办法启动 iPhone 模拟器的多个实例。我没有在菜单或 Google 搜索结果中看到任何内容,但我只是想确保我没有遗漏任何内容。
解决方案
尽可能靠近我可以告诉大家,不仅可以不用模拟器运行多个实例,但在时机成熟时进行实际测试设备,你不能要么运行调试器的多个实例。
这意味着做多设备的应用程序,你需要有一个单一的Mac分配给一个iPhone /触摸设备(或仿真实例)每个运行你的应用程序。
我已经开始寻找到是否VMware或Parallels的能以某种方式被带入这一点,但没有太多可以不受黑客攻击的操作系统来实现。
我建议提交与 http://bugreporter.apple.com 。
的特征请求其他提示
这是可能的,但仅限于多个用户。
读这个: http://www.coderebel.com/2010/08/31/iphone_simulator
假设您有两个项目(P1,P2)要同时调试,请执行以下操作。
设置步骤:
- 在 Mac 上创建新用户 (U2)
- 授予它对 P2 的读/写访问权限,尤其是对其构建文件夹的访问权限。
- 从上面的网站下载启动器应用程序并将其复制到应用程序。
调试步骤:
- 关闭 Xcode 和模拟器(如果正在运行)
- 使用 U1 启动 iPhone Launcher.app。
- 用U1启动Xcode,加载P1,开始调试。
- 使用 U2 启动 iPhone Launcher.app。
- 用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文件。
请注意把wait
或sleep
命令,在每个命令后,如果您决定把这一切变成一个SH文件。
<强> [EDIT 2017] 强> 我看到的XCode 9将支持多个模拟器。等待,看看它是如何将所有的工作。
另一种选择(尽管可能是矫枉过正)如果你有一台Mac OS X服务器许可证是虚拟化的Mac OS X Server的实例,并运行在虚拟机中的第二模拟器。
嗯...我不认为你在这里缺少什么。据我所知,是能够模拟多台设备的SDK中没有技术 - 虽然这将是一个非常有用的功能有。我认为你唯一的选择是获得第二iPhone OS设备,或者让朋友谁也有一个iPhone OS设备让你使用它进行测试。
在的XCode 4可以同时具有两者处于调试模式下运行多个实例。
我所做的就是创建我的目标的重复跑原件和副本。如果您使用的输出窗口,你可以切换你正在寻找它的输出。
请按照以下步骤测试您的应用程序。
整个过程中你必须首先做一件事:转到项目 - >编辑项目设置 - >勾选选项 - 并行构建独立目标。
- 调试将在模拟器中创建应用程序的代码例如,您的应用程序名称是 - 实例
- 关闭模拟器
- 转到Project->新目标 - >实例2添加“ Bundle display name:instance2“ instance2.info.plist文件设置可执行名称:instance2选择实例2目标 - >转到项目 - >设置活动目标 - > Instance2用instence2构建
笔记 :请仔细地执行所有操作,否则您必须重置模拟器以重置模拟器 - >运行模拟器 - > iPhone模拟器 - >重置内容和设置...
现在您在模拟器中有两个应用程序,您可以在所有实例上测试应用程序。
希望它能帮助你:)
在Xcode 9上的支持的。
(来源:WWDC 2017)
是的,现在是可能的,也是很容易的。
你唯一需要的是xctool
,从Facebook和红宝石宝石构建工具。红宝石宝石有助于产生/破坏试验期间所需的模拟器。
您可以阅读链接的完整文档:
https://github.com/plu/parallel_ios_tests
我使用这种方法和我运行同时我4 iPhone模拟器测试