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

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

Es posible pero solo con múltiples usuarios.

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

Suponiendo 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 comstackción.
  3. Descargue la aplicación de inicio desde el sitio anterior y cópiela en Aplicaciones.

Pasos para depurar:

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

Desafortunadamente, es un PITA que tiene que cambiar usuarios de vez en cuando, pero hasta ahora no he encontrado ninguna solución mejor. Espero que esto ayude.

Hay una forma de hacerlo fácilmente sin usar múltiples usuarios. Sin embargo, ten en cuenta que no estarás conectado al depurador. Tenga en cuenta que la explicación a continuación es para XCode 6+ . Puede omitir esta explicación y simplemente desplácese hacia abajo a la siguiente sección de envoltura.

De una respuesta aquí podemos ver que puedes ejecutar cualquier simulador desde la línea de comando:

abierto -a “Simulador de iOS” –args -CurrentDeviceUDID

Puede encontrar el ID de dispositivo (así como todos sus simuladores) ejecutando el xcrun simctl list en la consola. Generará una lista como esta. La identificación 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 arriba como ejemplo, ejecute este comando en la consola:

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

En su lugar, usamos el -n porque el -a especifica la aplicación que se utilizará para abrir el archivo, mientras que el -n abre una nueva instancia de la aplicación incluso si ya se está ejecutando. Usa el comando man open para saber todo esto.

También asegúrese de tener 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 iniciarlo sin interrumpir uno que ya está en la pantalla. Podemos resolver esto a partir de esta respuesta aquí donde él le muestra cómo create a new simulator and delete one.

Para resumir todo, esto es lo que debes hacer para lanzarlos.

A) Primero crea un simulador antes de lanzarlo.

Uso: simctl crea “nombre” “identificador de tipo de dispositivo” “id de tiempo de ejecución”

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

Encontrarás el id de tiempo de ejecución del comando xcrun simctl list que ejecuté arriba. Después de ejecutar el comando anterior, el ID del dispositivo se imprimirá en la pantalla de la consola. Tome nota de ello ya que lo necesitará como último argumento para iniciar el simulador que se muestra a continuación. Supongamos que esta 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) eliminarlo una vez que haya terminado con su simulador

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

Todo esto se puede colocar en un solo archivo .sh para una ejecución fácil. Tenga en cuenta poner comandos de wait o de wait después de cada comando si decide poner todo esto en un archivo sh.

[EDIT 2017] Veo que XCode 9 ahora admitirá múltiples simuladores. Esperando ver cómo funcionará todo.

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

Hmm … No creo que te estés perdiendo nada aquí. Hasta donde sé, no hay tecnología dentro del SDK que sea capaz de emular múltiples dispositivos, aunque sería una característica útil. Creo que sus únicas opciones serían obtener un segundo dispositivo con sistema operativo para iPhone o conseguir un amigo que también tenga un dispositivo con sistema operativo para iPhone que le permita usarlo para las pruebas.

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

Lo que hice fue crear un duplicado de mi objective y ejecuté tanto el original como el duplicado. Si está utilizando la ventana de salida, puede alternar qué salida está viendo.

Sigue estos pasos para probar tu aplicación.

Primero debe hacer una cosa para todo el proceso: vaya a Proyecto -> Editar configuración del proyecto -> opción de marcar – Cree objectives independientes en paralelo.

  1. Código de depuración que creará su aplicación en el simulador Por ejemplo, el nombre de su aplicación es – Instancia
  2. Cerrar simulador
  3. Vaya a Proyecto-> Nuevo objective-> Instancia2 Agregue “Nombre de visualización del paquete: Instancia2” en el archivo Instance2.info.plist Establezca el nombre del ejecutable: Instancia2 Seleccione Instancia2 Objetivo-> Ir al proyecto-> Establecer destino activo-> Instancia2 Crear con instancia2

Nota: Haga todo cuidadosamente; de ​​lo contrario, debe reiniciar su simulador. Para reiniciar el simulador -> Ejecutar simulador -> Simulador de iPhone -> 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 🙂

Logré que funcionase combinando la respuesta de Ivsty con esta .

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

Compatible con Xcode 9 en.

(Fuente: WWDC 2017)

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

Puede leer la documentación completa en este enlace:

https://github.com/plu/parallel_ios_tests

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