如何在 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
虽然接受的答案会启动另一个模拟器实例,但它实际上不会启动您的应用程序进行调试——除非我遗漏了什么——所以在那之后,请执行以下操作:
- 运行 您的应用程序 'manually' 在新的模拟器实例中——假设它之前已部署到此 device/iOS 组合。
- 在 Xcode 调试菜单中选择 'Attach to Process' menu-item 然后 select 从 'Likely Targets' 的列表中在步骤 1 中启动的实例。
您现在 运行 并在两个模拟器中调试您的应用程序。
Xcode 允许您 运行 并行模拟(也可以相互通信,如果这是应用程序功能的一部分),但您不能 运行 并行模拟在相同的模拟设备类型上(即,您不能在两个 iPhone 11 Pro 上进行模拟,但您的模拟可以是 iPhone 11 Pro Max 和 iPhone 11 Pro。 )
- 在Xcode、select你的第一个模拟目标平台(Xcode-Product-Destination-selectiOS模拟器)和运行 & 开始模拟(即 ⌘B, ⌘R)。
- 在 Xcode 中,从
执行调试分离。您的应用模拟将继续 运行,但 Xcode 将不再连接到它。
- Select 一个 不同的 iOS 模拟器设备。
- 运行 & 开始第二次模拟(即,⌘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 上 运行
- 调试->附加进程,然后从顶部选择(可能的目标)
根据 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
虽然接受的答案会启动另一个模拟器实例,但它实际上不会启动您的应用程序进行调试——除非我遗漏了什么——所以在那之后,请执行以下操作:
- 运行 您的应用程序 'manually' 在新的模拟器实例中——假设它之前已部署到此 device/iOS 组合。
- 在 Xcode 调试菜单中选择 'Attach to Process' menu-item 然后 select 从 'Likely Targets' 的列表中在步骤 1 中启动的实例。
您现在 运行 并在两个模拟器中调试您的应用程序。
Xcode 允许您 运行 并行模拟(也可以相互通信,如果这是应用程序功能的一部分),但您不能 运行 并行模拟在相同的模拟设备类型上(即,您不能在两个 iPhone 11 Pro 上进行模拟,但您的模拟可以是 iPhone 11 Pro Max 和 iPhone 11 Pro。 )
- 在Xcode、select你的第一个模拟目标平台(Xcode-Product-Destination-selectiOS模拟器)和运行 & 开始模拟(即 ⌘B, ⌘R)。
- 在 Xcode 中,从
执行调试分离。您的应用模拟将继续 运行,但 Xcode 将不再连接到它。 - Select 一个 不同的 iOS 模拟器设备。
- 运行 & 开始第二次模拟(即,⌘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 上 运行
- 调试->附加进程,然后从顶部选择(可能的目标)