Je planifie un jeu qui nécessite plusieurs utilisateurs et je me demandais s’il était possible de lancer plusieurs instances du simulateur iPhone. Je n'ai rien vu dans les menus ni dans les résultats de recherche Google, mais je voulais simplement m'assurer que rien ne me manquait.
Autant que je sache, non seulement vous ne pouvez pas exécuter plusieurs instances du simulateur, mais, le moment venu, vous ne pouvez pas non plus exécuter plusieurs instances du débogueur.
Cela signifie que pour créer des applications multi-périphériques, vous devez attribuer un seul Mac à un seul iPhone/périphérique tactile (ou une seule instance de simulateur) exécutant chacun votre application.
J'ai commencé à chercher à savoir si VMWare ou Parallels pouvait être intégré, mais il n'y a pas grand chose à faire sans pirater le système d'exploitation.
Je suggère de déposer une demande de fonctionnalité avec http://bugreporter.Apple.com .
C'est possible mais seulement avec plusieurs utilisateurs.
Lisez ceci: http://www.coderebel.com/2010/08/31/iphone_simulator
En supposant que vous ayez deux projets (P1, P2) que vous souhaitez déboguer simultanément, procédez comme suit.
Étapes à suivre pour mettre en place:
Étapes pour déboguer:
Malheureusement, c'est un P.I.T.A. avoir à changer d'utilisateurs de temps en temps mais jusqu'à présent, je n'ai pas trouvé de meilleure solution. J'espère que cela t'aides.
Il existe un moyen de le faire facilement sans utiliser plusieurs utilisateurs. Gardez à l'esprit que vous ne serez pas connecté au débogueur cependant. N'oubliez pas que l'explication ci-dessous concerne XCode 6+. Vous pouvez ignorer cette explication et faire défiler l'écran jusqu'à la section d'emballage ci-dessous.
À partir d'une réponse ici nous pouvons voir que vous pouvez lancer n'importe quel simulateur depuis la ligne de commande:
ouvrir -a "iOS Simulator" --args -CurrentDeviceUDID
Vous pouvez trouver le deviceID (ainsi que tous vos simulateurs) en exécutant la commande xcrun simctl list
sur la console. Il va générer une liste comme celle-ci. L'ID de périphérique est le code entre accolades:
== 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....
Par conséquent, pour exécuter le simulateur en utilisant l'exemple ci-dessus, exécutez cette commande sur la console:
open -n /Applications/Xcode.app/Contents/Developer/Applications/iOS\ Simulator.app/ --args -CurrentDeviceUDID '99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8'
Nous utilisons à la place l'indicateur -n
car l'indicateur -a
spécifie l'application à utiliser pour ouvrir le fichier, tandis que l'indicateur -n
ouvre une nouvelle instance de la ou des applications même si elle est déjà en cours d'exécution. Utilisez la commande man open
pour connaître toutes ces informations.
Assurez-vous également que vous avez le bon chemin pour votre simulateur.
Une dernière chose à noter, si vous utilisez le simulateur de cette façon, il y a de fortes chances que vous ayez un nombre limité de simulateurs. Et comme il est limité, vous voudrez peut-être le lancer sans interrompre celui qui est déjà à l'écran. Nous pouvons résoudre ceci à partir de cette réponse ici où il vous montre comment create a new simulator and delete one.
A) Créez d’abord un simulateur avant de le lancer.
Utilisation: simctl crée "nom" "identifiant de type d'appareil" "identifiant d'exécution"
xcrun simctl create "mynewsimulator" "iPhone 6" "com.Apple.CoreSimulator.SimRuntime.iOS-8-3"
Vous trouverez l'ID d'exécution à partir de la commande xcrun simctl list
que j'ai exécutée ci-dessus. Après avoir exécuté la commande ci-dessus, le deviceID sera imprimé sur l'écran de la console. Prenez-en note car vous aurez besoin du dernier argument pour lancer le simulateur présenté ci-dessous. Supposons que cet identifiant était 99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8
B) le lancer
open -n /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/ --args -CurrentDeviceUDID '99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8'
C) supprimez-le une fois que vous avez terminé avec votre simulateur
xcrun simctl delete 99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8
Tout cela peut être placé dans un seul fichier .sh pour une exécution facile .. Veuillez noter de mettre les commandes wait
ou sleep
après chaque commande si vous décidez de mettre tout cela dans un fichier sh.
[EDIT 2017] Je vois que XCode 9 supportera désormais plusieurs simulateurs. En attendant de voir comment cela va fonctionner.
Si vous possédez une licence de serveur Mac OS X, vous pouvez également virtualiser une instance de Mac OS X Server et exécuter un second simulateur dans la machine virtuelle.
Pris en charge à partir de Xcode 9 sur.
(Source: WWDC 2017)
Suivez ces étapes pour tester votre application.
Vous devez d'abord faire une chose pour l'ensemble du processus: Allez dans Projet -> Modifier les paramètres du projet -> cochez l'option - Construisez des cibles indépendantes en parallèle.
Remarque: Faites tout avec précaution sinon vous devez réinitialiser votre simulateur Pour réinitialiser le simulateur -> Exécuter le simulateur -> Simulateur iPhone -> Réinitialiser le contenu et les paramètres ...
Maintenant, vous avez deux applications dans le simulateur et vous pouvez tester l'application sur toutes les instances.
J'espère que ça vous aidera :)
Dans XCode 4, vous pouvez exécuter plusieurs instances tout en étant en mode débogage.
Ce que j'ai fait était de créer un duplicata de ma cible et d'exécuter l'original et le duplicata. Si vous utilisez la fenêtre de sortie, vous pouvez choisir la sortie que vous regardez.
J'ai réussi à le faire fonctionner en combinant réponse par Ivsty avec celui-ci .
Fondamentalement, vous créez deux utilisateurs (A et B), exécutez des simulateurs dans chacun d'eux, exécutez le serveur VNC sur l'utilisateur B, puis vous vous connectez à partir de l'utilisateur A pour accéder à l'écran B sans avoir à changer d'utilisateur.
Hmm ... Je ne pense pas que vous manquez rien ici. Autant que je sache, le SDK ne dispose d'aucune technologie capable d'émuler plusieurs périphériques - bien que ce soit une fonctionnalité utile. Je pense que votre seule option serait d’obtenir un deuxième appareil iPhone OS, ou d’avoir un ami qui possède également un appareil iPhone OS pour vous permettre de l’utiliser à des fins de test.