Je développe une application mobile multiplate-forme utilisant Cordova, principalement axée sur iOS au stade du développement.
Pour mon processus de développement, l'idéal serait de pouvoir démarrer mon application Cordova directement à partir de la ligne de commande et de 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 correctement et donne lieu à un simulateur iOS exécutant mon application dans un iPhone 4 simulé Retina avec iOS 7.0.3.
Outre cet appareil simulé, j'aimerais également tester (par exemple) un iPad. J'ai ces images d'émulation installées et je peux y démarrer mon application manuellement dans Xcode. De plus, 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 le suivant: je n'arrive pas à comprendre comment démarrer l'émulateur autrement que par défaut (ce qui semble être l'image d'émulation iPhone Retina (4-inch)
.). 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 celles-ci:
cordova run --debug --emulator=iPad iOS
Et de nombreuses variantes, mais pas de chance. Chaque fois qu'il commence dans le même émulateur.
La documentation pour l'outil de ligne de commande ne fournit aucune information à cet égard, et une recherche étendue dans Google a également échoué. Est-ce que je manque quelque chose de trivial? Ou est-ce que j'essaie de faire quelque chose de bizarre? J'espère vraiment que quelqu'un ici a de l'expérience avec cela et peut apporter des réponses.
Merci d'avance!
edit: oublié de mentionner explicitement; Je fais tout ça sur un Mac. Comme mentionné précédemment, exécuter l'application dans différents émulateurs/simulateurs sous Xcode fonctionne correctement.
Pour savoir quelles sont les images de simulateur disponibles, vous pouvez les lister.
$ cordova emulate ios --list
Available iOS Virtual Devices:
iPhone-4s, 9.3
iPhone-5, 9.3
iPhone-5s, 9.3
iPhone-6, 9.3
iPhone-6-Plus, 9.3
iPhone-6s, 9.3
iPhone-6s-Plus, 9.3
iPad-2, 9.3
iPad-Retina, 9.3
iPad-Air, 9.3
iPad-Air-2, 9.3
iPad-Pro, 9.3
Puis utilisez l’un des noms de simulateur dans le paramètre --target:
cordova emulate ios --target="iPhone-4s, 9.3"
cordova emulate ios --target="iPad-Air-2, 9.3"
cordova emulate ios --target="iPhone-6s, 9.3"
cordova emulate ios --target="iPhone-6-Plus, 9.3"
Important Quittez le simulateur avant de lancer un autre simulateur cible (dans la barre de menus, sélectionnez Simulator->Quit
).
Tenez compte du fait que vous devrez peut-être quitter le simulateur iOS via le menu pour passer d’un iPhone 3,5 à 4 pouces.
la liste dynamique est disponible dans platforms/ios/cordova/lib/list-emulator-images
Comme dit csantanapr vous pouvez utiliser:
cordova emulate ios --target="iPhone-4s"
mais, dans ce cas, le projet cordova (ou PhoneGap ou autre) sera lancé sur le simulateur de l'iPhone 4s avec iOS version 7.0.3 .
Si vous souhaitez lancer le projet sur le même simulateur, mais avec une autre version iOS (7.1 ou 8.0, si les versions existent dans votre système)?
De corse, vous pouvez faire comme par exemple cobberboy :
démarrez un émulateur spécifique et choisissez votre version d'ios en utilisant directement ios-sim.
Mais vous pouvez améliorer l’option --target
de la commande cordova run
.
Au début, vous devez vous assurer de la version iOS cible disponible sur votre système.
Pour cela, utilisez la réponse de cobberboy :
$ ios-sim showdevicetypes
Ensuite, vous devez ouvrir le fichier your_project_dir/platforms/ios/cordova/lib/run.js
et trouver des lignes de code comme ci-dessous:
// validate target device for ios-sim
// Valid values for "--target" (case sensitive):
var validTargets = ['iPhone-4s', 'iPhone-5', 'iPhone-5s', 'iPhone-6-Plus', 'iPhone-6',
'iPad-2', 'iPad-Retina', 'iPad-Air', 'Resizable-iPhone', 'Resizable-iPad'];
Pour utiliser iPhone-4s, 7.1
(ou un autre), ajoutez-le simplement au tableau validTargets
.
var validTargets = ['iPhone-4s', 'iPhone-4s, 7.1', 'iPhone-5', 'iPhone-5s', 'iPhone-6-Plus', 'iPhone-6',
'iPad-2', 'iPad-Retina', 'iPad-Air', 'Resizable-iPhone', 'Resizable-iPad'];
Et en
cordova emulate ios --target="iPhone-4s, 7.1"
votre --target="iPhone-4s, 7.1"
sera valide.
Et la fonction deployToSim
de run.js
:
function deployToSim(appPath, target) {
// Select target device for emulator. Default is 'iPhone-6'
if (!target) {
target = 'iPhone-6';
console.log('No target specified for emulator. Deploying to ' + target + ' simulator');
}
var logPath = path.join(cordovaPath, 'console.log');
var simArgs = ['launch', appPath,
'--devicetypeid', 'com.Apple.CoreSimulator.SimDeviceType.' + target,
// We need to redirect simulator output here to use cordova/log command
// TODO: Is there any other way to get emulator's output to use in log command?
'--stderr', logPath, '--stdout', logPath,
'--exit'];
return spawn('ios-sim', simArgs);
}
convertir iPhone-4s, 7.1
en argument valide com.Apple.CoreSimulator.SimDeviceType.iPhone-4s, 7.1
pour ios-sim
.
Vous pouvez démarrer un émulateur spécifique et choisir votre version d'ios en utilisant directement ios-sim.
export appname="./platforms/ios/build/emulator/Hello World.app"
ios-sim launch "$appname" --devicetypeid "com.Apple.CoreSimulator.SimDeviceType.iPad-2, 8.0" --stderr ./platforms/ios/cordova/console.log --stdout ./platforms/ios/cordova/console.log
Quand j'ai couru ceci:
cordova emulate ios --target="iPad"
et regardé les processus en cours, j'ai vu ceci (sur une seule ligne):
ios-sim launch ./platforms/ios/build/emulator/HelloWorld.app
--stderr ./platforms/ios/cordova/console.log
--stdout ./platforms/ios/cordova/console.log
--family ipad
--exit
En recherchant plus loin dans ios-sim , il semble y avoir quelques options plus spécifiques, en particulier:
--devicetypeid <device type> The id of the device type that should be simulated (Xcode6+). Use 'showdevicetypes' to list devices.
e.g "com.Apple.CoreSimulator.SimDeviceType.Resizable-iPhone6, 8.0"
Alors j'ai fait ce que cela suggérait et ai couru ios-sim avec un argument "showdevicetypes" et j'ai obtenu ceci:
$ ios-sim showdevicetypes
com.Apple.CoreSimulator.SimDeviceType.iPhone-4s, 7.1
com.Apple.CoreSimulator.SimDeviceType.iPhone-5, 7.1
com.Apple.CoreSimulator.SimDeviceType.iPhone-5s, 7.1
com.Apple.CoreSimulator.SimDeviceType.iPad-2, 7.1
com.Apple.CoreSimulator.SimDeviceType.iPad-Retina, 7.1
com.Apple.CoreSimulator.SimDeviceType.iPad-Air, 7.1
com.Apple.CoreSimulator.SimDeviceType.iPhone-4s, 8.0
com.Apple.CoreSimulator.SimDeviceType.iPhone-5, 8.0
com.Apple.CoreSimulator.SimDeviceType.iPhone-5s, 8.0
com.Apple.CoreSimulator.SimDeviceType.iPhone-6-Plus, 8.0
com.Apple.CoreSimulator.SimDeviceType.iPhone-6, 8.0
com.Apple.CoreSimulator.SimDeviceType.iPad-2, 8.0
com.Apple.CoreSimulator.SimDeviceType.iPad-Retina, 8.0
com.Apple.CoreSimulator.SimDeviceType.iPad-Air, 8.0
com.Apple.CoreSimulator.SimDeviceType.Resizable-iPhone, 8.0
com.Apple.CoreSimulator.SimDeviceType.Resizable-iPad, 8.0
Ne pas inclure le numéro de version
cordova run ios --target="iPhone-6s"
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, <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 lancez l'appel cordova dans l'émulateur souhaité.
cordova run ios --emulator --target="iPad-Air"
sortie la plus rapide de la liste des périphériques: $ instruments -s devices
Utilisez simplement le nom de l'appareil sans la version.
Je ne peux pas commenter la réponse ci-dessus en raison de ma faible réputation, mais la liste des cibles est disponible à partir de:
start-emulator
sous
your platform/ios/cordova/lib/
Ceci dit, je ne peux pas faire fonctionner l'émulateur de rétine ipad ...
Exécute le simulateur iOS avec une requête Web en fonction de la génération déjà générée pour l’application Cordova. Exécuter cette demande depuis le navigateur ouvre le simulateur sur mac avec iPhone 8Plus version: http: // nomhôte: 3000/cordova/build/[xxxx-buildnumber]/emulate? Target = iPhone-8-Plus
La réponse de @ Birja fonctionne actuellement, mais la commande d'exécution qu'il a finalement utilisée est toujours fausse alors voici la bonne réponse:
Pour répertorier tous les périphériques disponibles dans le simulateur cordova run ios --list
Il en résultera quelque chose comme ceci:
Available ios devices:
Available ios virtual devices:
Apple-TV-1080p, tvOS 12.2
Apple-Watch-Series-2-38mm, watchOS 5.2
iPhone-5s, 12.2
iPhone-6, 12.2
iPad-Air-2, 12.2
iPad--5th-generation-, 12.2
iPad-Pro--9-7-inch-, 12.2
iPad-Pro, 12.2
iPad-Pro--12-9-inch---2nd-generation-, 12.2
iPad-Pro--10-5-inch-, 12.2
iPad--6th-generation-, 12.2
iPad-Pro--11-inch-, 12.2
iPad-Pro--12-9-inch---3rd-generation-, 12.2
cordova run ios --target "iPad-Pro, 12.2"
Utilisez n'importe quelle cible ci-dessus. Pour exécuter en simulateur.
Différents simulateurs iphone et ipad
cordova run ios --list
cordova émuler ios --target "iPhone-7"