如何在 Xcode 9 上 运行 多个模拟器?

How to run multiple simulators on Xcode 9?

根据 Xcode 的新增功能,Xcode 9 允许我们 运行 模拟器的多个实例。

但是有什么方法可以做到这一点呢?

我尝试在不同的模型上 Build & Run 但它 Quit 当前实例。

我解决了我的问题,是 "very simple" :]

在模拟器上,您必须从Hardware > Devices中选择一个新设备。新实例将启动。

然后,在 Xcode 上选择您的型号。

Here is 解决方案。

您可以 运行 使用 xcodebuild 终端命令这样的多重模拟器

xcodebuild test-without-building -xctestrun /PathTo/.xctestrun -sdk iphonesimulator -destination 'platform=iOS Simulator,id=name=iPhone 7,OS=10.3.1' -destination 'platform=iOS Simulator,name=iPhone 7,OS=10.3.1' -destination-timeout 300 -derivedDataPath /pathtoyourderivedata -only-testing:YourTestScheme/YourTestClass/YouTestMethod

这里的技巧是在您想要 运行 进行测试的设备上不断添加 -destination -目的地 test-without-building - 如果您的项目已经构建。

只需 select 型号列表中的设备名称:

如果已经有一个模拟器实例,我不得不从 "Debug" -> "Detach from ____" 菜单中分离我的 运行ning 应用程序 运行 获取多个到 运行一次

image

虽然接受的答案会启动另一个模拟器实例,但它实际上不会启动您的应用程序进行调试——除非我遗漏了什么——所以在那之后,请执行以下操作:

  1. 运行 您的应用程序 'manually' 在新的模拟器实例中——假设它之前已部署到此 device/iOS 组合。
  2. 在 Xcode 调试菜单中选择 'Attach to Process' menu-item 然后 select 从 'Likely Targets' 的列表中在步骤 1 中启动的实例。

您现在 运行 并在两个模拟器中调试您的应用程序。

Xcode 允许您 运行 并行模拟(也可以相互通信,如果这是应用程序功能的一部分),但您不能 运行 并行模拟在相同的模拟设备类型上(即,您不能在两个 iPhone 11 Pro 上进行模拟,但您的模拟可以是 iPhone 11 Pro Max 和 iPhone 11 Pro。 )

  1. 在Xcode、select你的第一个模拟目标平台(Xcode-Product-Destination-selectiOS模拟器)和运行 & 开始模拟(即 ⌘B, ⌘R)。
  2. 在 Xcode 中,从 执行调试分离。您的应用模拟将继续 运行,但 Xcode 将不再连接到它。
  3. Select 一个 不同的 iOS 模拟器设备。
  4. 运行 & 开始第二次模拟(即,⌘B, ⌘R)。

我怀疑您也可以通过重复步骤 2 将第二个模拟与 Xcode 分离,然后将 Xcode 重新附加到第一个实例,例如,如果您希望能够检查正在发生的事情在任一模拟设备上,但我还没有尝试过。

    1. check all device first:
    xcrun instruments -s devices
    2. go to base folder of proeject and open terminal
    3. run command to Build:

     xcodebuild \
      -workspace nsplus.xcworkspace \
      -scheme nsplus \
      -destination 'platform=iOS Simulator,OS=13.5,name=iPhone 11 Pro Max' \
      -destination 'platform=iOS Simulator,OS=13.5,name=iPhone SE (2nd generation)' \
      -destination 'platform=iOS Simulator,OS=13.5,name=iPhone 8' \
     build-for-testing

4. Run command to run these simulator:
  xcodebuild \
      -workspace nsplus.xcworkspace \
      -scheme nsplus \
      -destination 'platform=iOS Simulator,OS=13.5,name=iPhone 11 Pro Max' \
      -destination 'platform=iOS Simulator,OS=13.5,name=iPhone SE (2nd generation)' \
      -destination 'platform=iOS Simulator,OS=13.5,name=iPhone 8' \
     test-without-building &
    
   

在 Xcode 中执行以下操作(我使用的是 Xcode 12):

  • 运行模拟器1上的代码
  • 调试->分离,然后在模拟器 2 上 运行
  • 调试->附加进程,然后从顶部选择(可能的目标)