¿Hay alguna forma de simular múltiples iphones usando xcode / iphone sim?


Estoy planeando un juego que requiere múltiples usuarios y me preguntaba si hay una manera de encender varias instancias del Simulador de iPhone. No vi nada en los menús o en los resultados de búsqueda de Google, pero solo quería asegurarme de que no me faltaba nada.

Author: Abel, 2009-05-22

10 answers

Por lo que puedo decir, no solo no puede tener varias instancias del simulador en ejecución, sino que cuando llega el momento de las pruebas reales del dispositivo, tampoco puede tener varias instancias del depurador en ejecución.

Esto significa que para hacer aplicaciones multidispositivo, deberá tener un solo Mac asignado a un solo dispositivo iPhone/táctil (o instancia de simulador) cada uno que ejecute su aplicación.

He comenzado a buscar si VMware o Parallels de alguna manera se puede traer a esto, pero no hay mucho que se puede hacer sin hackear el sistema operativo.

Sugiero presentar una solicitud de característica con http://bugreporter.apple.com .

 11
Author: Ramin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-22 14:50:54

Es posible pero solo con varios usuarios.

Lee esto: http://www.coderebel.com/2010/08/31/iphone_simulator

Asumiendo que tiene dos proyectos (P1,P2) que desea depurar simultáneamente, haga lo siguiente.

Pasos para configurar:

  1. Crea un nuevo usuario (U2) en tu Mac
  2. Dale acceso R/W a P2, especialmente a su carpeta de compilación.
  3. Descargue la aplicación launcher desde el sitio anterior y cópiela a Aplicación.

Pasos para depurar:

  1. Cierre Xcode y el simulador si se ejecuta
  2. Inicie el Lanzador de iPhone.app con U1.
  3. Inicie Xcode con U1, cargue P1, inicie la depuración.
  4. Inicie el Lanzador de iPhone.app con U2.
  5. Inicie Xcode con U2, cargue P2, inicie la depuración.

Desafortunadamente es un P. I. T. A. que tiene que cambiar de usuario de vez en cuando, pero hasta ahora no he encontrado ninguna solución mejor. Espero que esto ayude.

 61
Author: lvsti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-15 11:09:55

Hay una manera de hacer esto fácilmente sin usar varios usuarios. Sin embargo, tenga en cuenta que no estará conectado al depurador. Tenga en cuenta que la explicación a continuación es para XCode 6+. Puede omitir esta explicación y simplemente desplazarse hacia abajo a la sección envolver-it-up a continuación.

Desde una respuesta aquí podemos ver que puedes lanzar cualquier simulador desde la línea de comandos:

Open-un "simulador de iOS" arg args-CurrentDeviceUDID

Puedes encuentre el DeviceID (así como todos sus simuladores) ejecutando el comando xcrun simctl list en la consola. Generará una lista como esta. El ID del dispositivo es el código entre llaves:

== 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....

Por lo tanto, para ejecutar el simulador usando el ejemplo anterior, ejecute este comando en la consola:

open -n /Applications/Xcode.app/Contents/Developer/Applications/iOS\ Simulator.app/ --args -CurrentDeviceUDID '99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8'

Usamos el flag -n en su lugar porque el flag -a especifica la aplicación a usar para abrir el archivo, mientras que el flag -n abre una nueva instancia de la aplicación(s) incluso si ya se está ejecutando una. Utilizar el comando man open para saber todo esto.

También asegúrese de que tiene la ruta correcta para su simulador.

Una cosa más a tener en cuenta, si ejecuta el simulador de esta manera, es probable que tenga simuladores limitados. Y dado que es limitado, es posible que desee lanzarlo sin interrumpir uno que ya está en la pantalla. Podemos resolver esto desde esta respuesta aquí donde te muestra cómo create a new simulator and delete one.

Así que envolviendo todo, esto es lo que haces para lanzar ellos.

A) Primero crea un simulador antes de lanzarlo.

Uso: simctl create "name" "device type id" "runtime id" {[18]]}

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

Encontrará el id de tiempo de ejecución del comando xcrun simctl list comando que ejecuté anteriormente. Después de ejecutar el comando anterior, el DeviceID se imprimirá en la pantalla de la consola. Tome nota de ello, ya que necesitará como último argumento para lanzar el simulador que se muestra a continuación. Supongamos que este ID era 99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8

B) lanzarlo

open -n /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/ --args -CurrentDeviceUDID '99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8'

C) bórralo una vez que hayas terminado con tu simulador

xcrun simctl delete 99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8

Todo esto se puede colocar en un solo archivo .sh para facilitar su ejecución. Tenga en cuenta que debe poner wait o sleep comandos después de cada comando si decide poner todo esto en un archivo sh.

[EDITAR 2017] Veo que XCode 9 ahora soportará múltiples simuladores. A la espera de ver cómo va a funcionar todo.

 19
Author: iOS Calendar View OnMyProfile,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-07 14:34:18

Otra opción (aunque probablemente exagerada) si tiene una licencia de Mac OS X Server es virtualizar una instancia de Mac OS X Server y ejecutar un segundo simulador en la máquina virtual.

 1
Author: Mike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-03 04:29:21

Hmm...No creo que te estés perdiendo nada aquí. Por lo que sé no hay tecnología dentro del SDK que sea capaz de emular múltiples dispositivos though aunque eso sería una característica útil para tener. Creo que sus únicas opciones sería conseguir un segundo dispositivo iPhone OS, o conseguir un amigo que también tiene un dispositivo iPhone OS para que lo utilice para las pruebas.

 0
Author: RexOnRoids,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-22 05:42:52

En XCode 4 puede ejecutar varias instancias mientras ambas estén en modo de depuración.

Lo que hice fue crear un duplicado de mi objetivo y ejecutar tanto el original como el duplicado. Si está utilizando la ventana de salida, puede alternar la salida que está mirando.

 0
Author: the_e,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-06 17:00:35

Sigue estos pasos para probar tu app.

Primero tienes que hacer una cosa para todo el proceso : Vaya a Proyecto - > Editar Configuración del proyecto - > marque la opción-Construir objetivos independientes en paralelo.

  1. Código de depuración que creará su aplicación en simulator, Por ejemplo, el nombre de su aplicación es - Instance
  2. Cerrar Simulador
  3. Ir a Proyecto->Nuevo Objetivo -> Instancia2 Agregue "Bundle display name: Instance2" en el archivo Instance2.info.plist Establecer Nombre Del Ejecutable : Instancia2 Seleccionar Instancia2 de Destino -> Project -> Conjunto de Activos de Destino -> Instancia2 Construir con Instancia2

Nota: Haz todo con cuidado, de lo contrario tendrás que restablecer tu simulador Para Restablecer Simulador - > Ejecutar Simulador - > iPhone Simulador - > Restablecer Contenido y configuración...

Ahora tiene dos aplicaciones en el simulador y puede probar la aplicación en todas las instancias.

Espero que te ayude:)

 0
Author: Ravikant Nagar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-17 06:32:40

Logré que funcionara combinando la respuesta de Ivstycon esta.

Básicamente, lo que hace es crear dos usuarios (A y B), ejecutar simuladores en cada uno de ellos, ejecutar VNC server en el usuario B, y luego conectarse desde el usuario A para acceder a la pantalla B sin necesidad de cambiar de usuario.

 0
Author: Andrej Karadzic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:08

Soportado desde Xcode 9 en adelante.

(Fuente: WWDC 2017)

 0
Author: julien_c,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-09 11:18:38

Sí, ahora es posible y también es bastante fácil. Lo único que necesitas es xctool, las herramientas de compilación de Facebook y una gema ruby. La gema ruby ayuda a crear / destruir el simulador necesario durante la prueba.

Puede leer la documentación completa en este enlace:

Https://github.com/plu/parallel_ios_tests

Estoy usando este enfoque y corro mi prueba en el simulador de iOS 4 al mismo tiempo.

 -1
Author: IgnazioC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-15 13:15:18