Есть ли способ симулировать несколько iphone, используя xcode / iphone sim? - PullRequest
42 голосов
/ 22 мая 2009

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

Ответы [ 10 ]

61 голосов
/ 15 сентября 2010

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

Читать это: http://www.coderebel.com/2010/08/31/iphone_simulator

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

Порядок настройки:

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

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

  1. Закрыть Xcode и симулятор, если запущен
  2. Запустите iPhone Launcher.app с U1.
  3. Запустите Xcode с U1, загрузите P1, начните отладку.
  4. Запустите iPhone Launcher.app с U2.
  5. Запустите Xcode с U2, загрузите P2, начните отладку.

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

19 голосов
/ 03 июня 2015

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

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

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

Вы можете найти ID устройства (а также все ваши симуляторы), запустив команду 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 create "name" "id типа устройства" "id времени выполнения"

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.

[РЕДАКТИРОВАТЬ 2017] Я вижу, что XCode 9 теперь будет поддерживать несколько симуляторов. В ожидании, чтобы увидеть, как все это будет работать.

11 голосов
/ 22 мая 2009

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

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

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

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

1 голос
/ 03 января 2010

Другой вариант (хотя, возможно, и избыточный), если у вас есть лицензия на сервер Mac OS X, заключается в виртуализации экземпляра Mac OS X Server и запуске второго симулятора на виртуальной машине.

0 голосов
/ 09 июня 2017

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

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

0 голосов
/ 15 апреля 2016

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

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

https://github.com/plu/parallel_ios_tests

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

0 голосов
/ 25 октября 2014

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

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

0 голосов
/ 06 марта 2012

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

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

0 голосов
/ 22 октября 2011

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

Сначала вы должны сделать одну вещь для всего процесса: Выберите «Проект» -> «Изменить настройки проекта» -> отметьте галочкой опцию «Построить независимые цели параллельно».

  1. Отладочный код, который создаст ваше приложение в симуляторе. Например, ваше имя приложения - Экземпляр
  2. Закрыть симулятор
  3. Перейти к проекту-> Новая цель -> Экземпляр2 Добавьте «Отображаемое имя пакета: Instance2» в файл Instance2.info.plist Установить имя исполняемого файла: Instance2 Выберите Instance2 Target -> Перейти к проекту -> Установить активную цель -> Instance2 Сборка с экземпляром2

Примечание: делайте все осторожно, иначе вам придется перезагрузить симулятор Для сброса симулятора -> Запуск симулятора -> Симулятор iPhone -> Сброс содержимого и настроек ...

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

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

0 голосов
/ 22 мая 2009

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

...