Domanda

Sto progettando un gioco che richiede più utenti e mi chiedevo se c'è un modo per accendere più istanze di iPhone Simulator. Non ho visto nulla nei menu o nei risultati di ricerca di Google, ma volevo solo fare in modo che non mancava nulla.

È stato utile?

Soluzione

Da quanto posso dire, non solo si può non avere più istanze del simulatore di corsa, ma quando arriva il momento per il dispositivo vero e proprio test non si può avere più istanze del debugger in esecuzione sia.

Questo significa fare le applicazioni multi-device, è necessario avere un singolo Mac assegnato a un unico dispositivo iPhone / touch (o istanza simulatore) ognuno dei quali esegue la vostra applicazione.

Ho iniziato a guardare in se VMWare o Parallels possano in qualche modo essere portati in questo, ma non c'è molto che si può fare senza l'hacking del sistema operativo.

Suggerisco di presentazione di una richiesta di funzionalità con http://bugreporter.apple.com .

Altri suggerimenti

E 'possibile, ma solo con più utenti.

Leggere questo: http://www.coderebel.com/2010/08/31 / iphone_simulator

Supponendo di avere due progetti (P1, P2), che si desidera eseguire il debug contemporaneamente, procedere come segue.

I passaggi per impostare:

  1. Creare un nuovo utente (U2) sul vostro Mac
  2. Dategli R / W l'accesso a P2, in particolare alla sua cartella di compilazione.
  3. Scarica l'applicazione launcher dal sito di cui sopra e copiarlo applicazioni.

I passaggi per eseguire il debug:

  1. Chiudi Xcode e il simulatore se in esecuzione
  2. Avviare il Launcher.app iPhone con U1.
  3. Avvia Xcode con U1, carico P1, avviare il debug.
  4. Avviare il Launcher.app iPhone con gli U2.
  5. Avvia Xcode con gli U2, carico P2, avviare il debug.

Purtroppo è un P.I.T.A. dover cambiare gli utenti ogni ora e poi, ma finora non ho trovato una soluzione migliore. Spero che questo aiuti.

C'è un modo per farlo con facilità, senza l'utilizzo di più utenti. Tenete a mente che non sarà in contatto con il debugger però. Tenete a mente la spiegazione sotto è per XCode 6 + . È possibile saltare questa spiegazione e basta scorrere fino alla sezione di avvolgimento-it-up di sotto.

Da una risposta qui possiamo vedere che si può lanciare qualsiasi simulatore da linea di comando:

  

open -a "simulatore iOS" --args -CurrentDeviceUDID

È possibile trovare la deviceID (così come tutti i tuoi simulatori) eseguendo il comando xcrun simctl list su console. Esso genera una lista come questa. L'ID del dispositivo è il codice tra parentesi graffe:

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

Quindi per eseguire il simulatore con cui sopra come ad esempio, eseguire questo comando su console:

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

Usiamo la bandiera -n, invece, perché la bandiera -a specifica l'applicazione da utilizzare per aprire il file, mentre la bandiera -n apre una nuova istanza dell'applicazione (s) anche se si è già in esecuzione. Utilizzare il comando man open di conoscere tutta questa roba.

Inoltre, assicurarsi che il percorso corretto per il simulatore.

Una cosa da notare, se si esegue il simulatore come questo, è probabile che si dispone di simulatori limitate. E dal momento che la sua limitata, si potrebbe desiderare di lanciarlo senza interrompere quello che è già sullo schermo. Siamo in grado di risolvere questo da questa risposta qui dove mostra come create a new simulator and delete one.

Quindi avvolgere il tutto, ecco cosa dovete fare per lanciare loro.

A) Innanzitutto creare un simulatore prima di lanciarlo.

Utilizzo: simctl creare "nome" "tipo di dispositivo id" "runtime id"

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

Troverete l'id runtime dal comando comando xcrun simctl list mi sono imbattuto in precedenza. Dopo aver eseguito il comando precedente, la deviceID verrà stampato sullo schermo della console. Prendere nota di esso in quanto sarà necessario come ultimo argomento per lanciare il simulatore mostrato di seguito. Supponiamo che questo ID è stato 99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8

B) lanciarlo

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

C) eliminarlo una volta che hai finito con il vostro simulatore

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

Tutto questo può essere collocato in un unico file .sh per una facile esecuzione. Si prega di notare per mettere i comandi wait o sleep dopo ogni comando se si decide di mettere tutto questo in un file sh.

[EDIT 2017] Vedo che XCode 9 ora supportare più simulatori. In attesa di vedere come andrà a tutto il lavoro.

Un'altra opzione (anche se probabilmente eccessivo) se si dispone di una licenza server Mac OS X è quello di virtualizzare un esempio di Mac OS X Server, ed eseguire un secondo simulatore nella VM.

Hmm ... Non credo che vi manca qualcosa qui. Per quanto ne so non esiste una tecnologia all'interno del SDK che è in grado di emulare più dispositivi - anche se sarebbe una funzione utile per avere. Credo che le uniche opzioni potrebbe essere quella di ottenere un secondo dispositivo iPhone OS, o ottenere un amico che ha anche un dispositivo iPhone OS per consentire di utilizzare per il test.

In XCode 4 è possibile eseguire più istanze, pur avendo entrambi in modalità di debug.

Quello che ho fatto è stato creare un duplicato del mio obiettivo e corse sia l'originale e il duplicato. Se si sta utilizzando la finestra di output è possibile passare che l'uscita si sta guardando.

Seguire questa procedura per testare la tua app.

Devi fare una cosa per tutto il processo prima: Vai a Progetto -> Modifica impostazioni di progetto -> segno di spunta su opzione -. Costruire obiettivi indipendenti in parallelo

    codice
  1. Debug che creerà la tua applicazione in simulatore per esempio il vostro nome App è - Instance
  2. Chiudi Simulator
  3. Vai a Progetto-> Nuova destinazione -> Istanza2 Aggiungi "Bundle nome visualizzato: Istanza2" nel file Instance2.info.plist Impostare nome del file eseguibile: Istanza2 Selezionare Istanza2 Target -> Vai a Progetto -> Imposta destinazione attiva -> Istanza2 Costruire con Istanza2

Nota: Fate tutto con attenzione altrimenti bisogna reimpostare il simulatore Per Reset Simulator -> Esegui Simulator -> iPhone Simulator -> Ripristina Impostazioni contenuti e ...

Ora avete due applicazioni in simulatore e si può testare app su tutte le istanze.

Spero che vi aiuterà a:)

Sono riuscito a farlo funzionare combinando risposta da Ivsty con questo .

In sostanza, quello che fai è creare due utenti (A e B), simulatori di correre in ciascuno di essi, server VNC funzionare su l'utente B, e quindi connettersi da utente A per accedere alla schermata B senza la necessità di cambiare utente.

supportati da Xcode 9 su.

(Fonte: WWDC 2017)

Sì, ora è possibile ed è anche abbastanza facile. L'unica cosa che serve è xctool, gli strumenti di generazione di Facebook e una gemma rubino. La gemma rubino contribuisce a creare / distruggere il simulatore necessaria durante il test.

È possibile leggere la documentazione completa su questo link:

https://github.com/plu/parallel_ios_tests

Sto usando questo approccio e ho eseguito il mio test su 4 iOS simulatore stesso tempo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top