Je développe une application mobile multiplateforme utilisant Cordova, en me concentrant principalement sur iOS en phase de développement.
Pour mon processus de développement, ce serait idéal si je pouvais démarrer mon application Cordova directement à partir de la ligne de commande et la charger dans un émulateur spécifié. Je peux le faire en exécutant ce qui suit à partir du répertoire racine du projet:
$cordova run --debug --emulator iOS
Cela fonctionne bien et se traduit par un simulateur iOS exécutant mon application dans un iPhone 4 Retina simulé avec iOS 7.0.3
Outre cet appareil simulé, j'aimerais également tester (par exemple) un iPad. J'ai installé ces images d'émulation et je peux y démarrer mon application manuellement dans Xcode. En outre, la commande list-emulator-images
(située dans project_dir/platforms/ios/cordova/lib
) donne la sortie suivante:
"iPhone Retina (3.5-inch)"
"iPhone Retina (4-inch)"
"iPhone Retina (4-inch 64-bit)"
"iPhone"
"iPad"
"iPad Retina"
Cependant, le problème est que je n'arrive pas à comprendre comment démarrer l'émulateur dans autre chose que la valeur par défaut (qui semble être l' iPhone Retina (4-inch)
image d'émulation). La sortie correspondante de cordova help
donne les informations suivantes:
run [--debug|--release]
[--device|--emulator|--target=FOO]
[PLATFORM] ............................ deploys app on specified platform devices / emulators
J'ai essayé des choses comme les suivantes:
cordova run --debug --emulator=iPad iOS
Et de nombreuses variantes, mais pas de chance. Chaque fois qu'il démarre dans le même émulateur.
La documentation de l'outil de ligne de commande n'offre aucune information à cet égard, et une recherche approfondie sur Google n'a pas réussi à trouver quoi que ce soit. Est-ce que je rate quelque chose de trivial? Ou est-ce que j'essaye de faire quelque chose de bizarre? J'espère vraiment que quelqu'un ici a une expérience dans ce domaine et pourra fournir des réponses.
Merci d'avance!
modifier: oublié de mentionner explicitement; Je fais tout cela sur un Mac. Comme mentionné précédemment, exécuter l'application dans différents émulateurs / simulateurs dans Xcode fonctionne correctement.
"Error: Cannot read property 'name' of undefined"
lors de la spécification de la cible avec des guillemets, je ne pouvais le faire fonctionner qu'en l'exécutant comme çacordova run ios --target=iPhone-6
. J'espère que cela évitera des ennuis à quelqu'un d'autre!Comme disons csantanapr, vous pouvez utiliser:
mais, dans ce cas, le projet cordova (ou PhoneGap ou autre) sera lancé sur le simulateur iPhone 4s avec la version iOS 7.0.3 .
Si vous souhaitez lancer un projet sur le même simulateur, mais avec une autre version iOS (7.1 ou 8.0, si des versions existent dans votre système)?
De corse, vous pouvez faire comme dire cobberboy :
Mais vous pouvez améliorer l'
--target
option de larun
commande cordova .Dans un premier temps, vous devez vous assurer de la version iOS cible disponible sur votre système.
Pour cela, utilisez la réponse de cobberboy :
Ensuite, vous devez ouvrir le fichier
your_project_dir/platforms/ios/cordova/lib/run.js
et trouver des lignes de code comme ci-dessous:Pour une utilisation
iPhone-4s, 7.1
(ou autre), ajoutez-le simplement au tableauvalidTargets
.Et en
votre
--target="iPhone-4s, 7.1"
sera valide.Et fonction
deployToSim
derun.js
:convertir
iPhone-4s, 7.1
en argument validecom.apple.CoreSimulator.SimDeviceType.iPhone-4s, 7.1
pourios-sim
.la source
ionic run ios --target='iPhone-6, 9.0'
lors de l'utilisation de Ionic Framework.validTargets
et j'ai été en mesure de préciser la plate - forme complète, ex:"--target="iPhone-6, 8.4""
. Ce serait vraiment bien si Cordova déléguait la validation de la cible àios-sim
.TL; DR
Vous pouvez démarrer un émulateur spécifique et choisir votre version ios en utilisant directement ios-sim.
Détails
Quand j'ai couru ceci:
et j'ai regardé les processus en cours d'exécution, j'ai vu ceci (sur une seule ligne):
En étudiant plus en détail ios-sim , il semble qu'il existe des options plus spécifiques, en particulier:
J'ai donc fait ce qu'il a suggéré et j'ai exécuté ios-sim avec un argument "showdevicetypes" et j'ai obtenu ceci:
la source
N'incluez pas le numéro de version
la source
À partir de Xcode 8.3.2 ...
Vieux fil, je sais, mais il semble, peut-être, que la réponse a légèrement changé. Les astuces des articles précédents dans ce fil ont aidé, mais la lecture de la documentation incluse dans le code a également aidé,
<cordova-project>/platforms/ios/cordova/lib/run.js
Exécutez
./platforms/ios/cordova/lib/list-emulator-images
pour répertorier les images d'émulateur disponibles. N'incluez pas le numéro de version à la fin lorsque vous effectuez l'appel cordova pour l'exécuter dans l'émulateur souhaité.En savoir plus
la source
cordova run ios --target=iPhone-6
Je ne peux pas commenter la réponse ci-dessus en raison de ma faible réputation, mais la liste des cibles est disponible sur:
sous
Cela dit, je ne peux pas faire fonctionner l'émulateur iPad Retina ...
la source
sortie la plus rapide de la liste des appareils:
$ instruments -s devices
Utilisez simplement le nom de l'appareil sans la version.
la source
Exécute le simulateur iOS avec une requête Web basée sur une version déjà générée pour l'application cordova. Exécutez cette requête depuis le navigateur ouvre le simulateur sur mac avec la version iPhone 8Plus: http: // nom d'hôte: 3000 / cordova / build / [xxxx-buildnumber] / emulate? Target = iPhone-8-Plus
la source
Différents simulateurs iphone et ipad
cordova run ios - liste
cordova émule ios - cible "iPhone-7"
la source
La réponse de @ Birja fonctionne en ce moment, mais la commande d'exécution qu'il a finalement utilisée est toujours fausse, alors voici la bonne réponse:
Pour lister tous les appareils disponibles dans le simulateur
cordova run ios --list
Il en résultera quelque chose comme ceci:
cordova run ios --target "iPad-Pro, 12.2"
Utilisez n'importe quelle cible ci-dessus. Pour exécuter dans le simulateur.la source