Есть ли способ имитировать несколько iphones с помощью xcode/iphone sim?

Я планирую игру, требующую нескольких пользователей, и мне было интересно, есть ли способ запустить несколько экземпляров iPhone Simulator. Я ничего не видел в меню или в результатах поиска Google, но я просто хотел убедиться, что ничего не пропал.

Ответ 1

Насколько я могу судить, не только вы не можете иметь несколько экземпляров работающего симулятора, но когда придет время для фактического тестирования устройства, вы не сможете запустить несколько экземпляров отладчика.

Это означает, что для работы с несколькими устройствами вам потребуется один Mac, назначенный одному устройству iPhone/touch (или экземпляру симулятора), каждый из которых запускает ваше приложение.

Я начал изучать, можно ли каким-то образом привести VMWare или Parallels в это, но этого не может быть сделано без взлома ОС.

Я предлагаю подать запрос функции с http://bugreporter.apple.com.

Ответ 2

Возможно, но только с несколькими пользователями.

Прочтите это: http://www.coderebel.com/2010/08/31/iphone_simulator

Предполагая, что у вас есть два проекта (P1, P2), которые вы хотите отлаживать одновременно, выполните следующие действия.

Шаги по настройке:

  • Создайте нового пользователя (U2) на вашем Mac
  • Дайте ему R/W доступ к P2, особенно к его папке сборки.
  • Загрузите приложение launcher с сайта выше и скопируйте его в Приложения.

Шаги для отладки:

  • Закройте Xcode и симулятор при запуске
  • Запустите iPhone Launcher.app с U1.
  • Запустите Xcode с U1, загрузите P1, начните отладку.
  • Запустите iPhone Launcher.app с U2.
  • Запустите Xcode с U2, загрузите P2, начните отладку.

К сожалению, это P.I.T.A. постоянно меняя пользователей, но пока я не нашел лучшего решения. Надеюсь, это поможет.

Ответ 3

Существует простой способ сделать это без использования нескольких пользователей. Имейте в виду, что вы не будете подключены к отладчику. Имейте в виду, что приведенное ниже объяснение относится к XCode 6 +. Вы можете пропустить это объяснение и просто прокрутить вниз до раздела обертывания ниже.

Из ответа здесь видно, что вы можете запустить любой симулятор из командной строки:

open -a "iOS Simulator" --args -CurrentDeviceUDID

Вы можете найти идентификатор устройства (как и все ваши симуляторы), выполнив команду xcrun simctl list на консоли. Он будет генерировать список, подобный этому. Идентификатор устройства - это код в фигурных скобках:

== 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 создать "имя" "идентификатор типа устройства" "идентификатор времени выполнения"

xcrun simctl create "mynewsimulator" "iPhone 6" "com.apple.CoreSimulator.SimRuntime.iOS-8-3"

Вы найдете идентификатор времени выполнения из команды xcrun simctl list, которую я выполнил выше. После выполнения указанной выше команды идентификатор устройства будет напечатан на экране консоли. Обратите внимание на это, поскольку вам понадобится последний аргумент для запуска симулятора, показанного ниже. Предположим, что этот идентификатор был 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 теперь поддерживает несколько симуляторов. В ожидании увидеть, как все это будет работать.

Ответ 4

Еще один вариант (хотя и, вероятно, перебор), если у вас есть лицензия на сервер Mac OS X, - это виртуализировать экземпляр Mac OS X Server и запустить второй симулятор в виртуальной машине.

Ответ 5

Хм... Я не думаю, что здесь что-то не хватает. Насколько я знаю, в SDK нет технологии, способной эмулировать несколько устройств, хотя это было бы полезной функцией. Я думаю, что вашими единственными вариантами было бы получить второе устройство для iPhone OS или получить друга, у которого также есть устройство iPhone OS, чтобы вы могли использовать его для тестирования.

Ответ 6

Выполните следующие действия, чтобы протестировать ваше приложение.

Сначала вы должны сделать одну вещь для всего процесса: Перейдите в Project → Edit Project Settings → tick on option - Создайте независимые цели параллельно.

  • Код отладки, который создаст ваше приложение в симуляторе. Например, ваше имя приложения - экземпляр
  • Закрыть симулятор
  • Перейдите в Project- > New Target → Instance2 Добавить "Отображаемое имя пакета: Instance2" в файле Instance2.info.plist Установить исполняемое имя: экземпляр2 Выберите объект Instance2 Target → Перейти к проекту → Установить активную цель → Экземпляр2 Build with Instance2

Примечание. Делайте все тщательно, иначе вы должны reset ваш симулятор Для reset Симулятор → Симулятор запуска → Симулятор iPhone → reset Содержание и настройки...

Теперь у вас есть два приложения в симуляторе, и вы можете тестировать приложение на всех экземплярах.

Надеюсь, это поможет вам:)

Ответ 7

В XCode 4 вы можете запускать несколько экземпляров, пока оба находятся в режиме отладки.

То, что я сделал, это создать дубликат моей цели и запустить как оригинал, так и дубликат. Если вы используете окно вывода, вы можете переключать вывод, на который вы смотрите.

Ответ 8

Мне удалось заставить его работать, комбинируя ответ Ivsty с этим.

В основном, вы создаете двух пользователей (A и B), запускаете имитаторы в каждом из них, запускаете VNC-сервер на пользователе B, а затем подключаетесь от пользователя A к экрану доступа B без необходимости переключения пользователей.

Ответ 9

Поддерживается с Xcode 9 на.

(Источник: WWDC 2017)

Ответ 10

Да, теперь это возможно и тоже довольно легко. Единственное, что вам нужно - это xctool, инструменты сборки из Facebook и рубиновый камень. Рубиновый камень помогает создать/уничтожить симулятор, необходимый во время теста.

Вы можете прочитать полную документацию по этой ссылке:

https://github.com/plu/parallel_ios_tests

Я использую этот подход, и я запускаю свой тест на 4 симуляторах iOS в одно и то же время.