Ich entwickle eine plattformübergreifende mobile App mit Cordova, die sich in der Entwicklungsphase hauptsächlich auf iOS konzentriert.
Für meinen Entwicklungsprozess wäre es ideal, wenn ich meine Cordova-App direkt über die Befehlszeile starten und in einen bestimmten Emulator laden könnte. Ich kann dies tun, indem ich Folgendes aus dem Projektstammverzeichnis ausführe:
$cordova run --debug --emulator iOS
Dies funktioniert einwandfrei und führt dazu, dass ein iOS-Simulator meine App auf einem simulierten iPhone 4 Retina mit iOS 7.0.3 ausführt
Neben diesem simulierten Gerät möchte ich auch (zum Beispiel) auf einem iPad testen. Ich habe diese Emulationsimages installiert und kann meine App in Xcode manuell starten. Der Befehl list-emulator-images
(befindet sich in project_dir/platforms/ios/cordova/lib
) gibt außerdem die folgende Ausgabe aus:
"iPhone Retina (3.5-inch)"
"iPhone Retina (4-inch)"
"iPhone Retina (4-inch 64-bit)"
"iPhone"
"iPad"
"iPad Retina"
Die Sache ist jedoch: Ich kann anscheinend nicht herausfinden, wie der Emulator in etwas anderem als der Standardeinstellung (die das iPhone Retina (4-inch)
Emulationsbild zu sein scheint) gestartet wird . Die relevante Ausgabe von cordova help
gibt folgende Informationen:
run [--debug|--release]
[--device|--emulator|--target=FOO]
[PLATFORM] ............................ deploys app on specified platform devices / emulators
Ich habe folgende Dinge ausprobiert:
cordova run --debug --emulator=iPad iOS
Und viele Variationen davon, aber kein Glück. Jedes Mal startet es im selben Emulator.
Die Dokumentation für das Befehlszeilentool enthält diesbezüglich keine Informationen, und eine umfangreiche Google-Suche hat auch nichts ergeben. Vermisse ich etwas Triviales? Oder versuche ich etwas Seltsames zu tun? Ich hoffe wirklich, dass jemand hier Erfahrung damit hat und einige Antworten geben kann.
Vielen Dank im Voraus!
bearbeiten: vergessen, explizit zu erwähnen; Ich mache das alles auf einem Mac. Wie bereits erwähnt, funktioniert das Ausführen der App in verschiedenen Emulatoren / Simulatoren in Xcode einwandfrei.
"Error: Cannot read property 'name' of undefined"
bei der Angabe des Ziels mit Anführungszeichen werfen. Ich konnte es nur zum Laufen bringen, indem ich es so ausführtecordova run ios --target=iPhone-6
. Hoffe, das erspart jemand anderem Ärger!Wie sagen Sie csantanapr können Sie verwenden:
In diesem Fall wird das Cordova-Projekt (oder PhoneGap oder ein anderes Projekt) auf dem iPhone 4s-Simulator mit iOS-Version 7.0.3 gestartet .
Wenn Sie das Projekt auf demselben Simulator starten möchten, jedoch mit einer anderen Version von iOS (7.1 oder 8.0, falls in Ihrem System Versionen vorhanden sind)?
Natürlich können Sie sagen, Cobberboy :
Sie können jedoch die
--target
Option des Cordova-run
Befehls verbessern .Zunächst müssen Sie sicherstellen, welche Ziel-iOS-Version auf Ihrem System verfügbar ist.
Verwenden Sie dazu die Antwort von Cobberboy :
Dann müssen Sie die Datei öffnen
your_project_dir/platforms/ios/cordova/lib/run.js
und Codezeilen wie folgt finden:Zur Verwendung
iPhone-4s, 7.1
(oder einer anderen) einfach zum Array hinzufügenvalidTargets
.Und in
Ihr
--target="iPhone-4s, 7.1"
wird gültig sein.Und Funktion
deployToSim
vonrun.js
:iPhone-4s, 7.1
in gültiges Argumentcom.apple.CoreSimulator.SimDeviceType.iPhone-4s, 7.1
für konvertierenios-sim
.quelle
ionic run ios --target='iPhone-6, 9.0'
bei der Verwendung von Ionic Framework.validTargets
und konnte die vollständige Plattform angeben, z"--target="iPhone-6, 8.4""
. Wäre sehr schön, wenn Cordova die Zielvalidierung an delegieren würdeios-sim
.TL; DR
Sie können einen bestimmten Emulator starten und Ihre iOS-Version auswählen, indem Sie ios-sim direkt verwenden.
Einzelheiten
Als ich das lief:
und sah mir die laufenden Prozesse an, ich sah dies (in einer einzigen Zeile):
Bei näherer Betrachtung von ios-sim scheint es einige spezifischere Optionen zu geben, insbesondere:
Also habe ich getan, was vorgeschlagen wurde, und ios-sim mit dem Argument "showdevicetypes" ausgeführt und Folgendes erhalten:
quelle
Geben Sie keine Versionsnummer an
quelle
Ab Xcode 8.3.2 ...
Alter Thread, ich weiß, aber es scheint, dass sich die Antwort leicht geändert hat. Die Hinweise aus früheren Beiträgen in diesem Thread haben geholfen, aber auch das Lesen der im Code enthaltenen Dokumentation.
<cordova-project>/platforms/ios/cordova/lib/run.js
Ausführen,
./platforms/ios/cordova/lib/list-emulator-images
um die verfügbaren Emulatorbilder aufzulisten. Geben Sie die Versionsnummer nicht am Ende an, wenn Sie den Cordova-Aufruf ausführen, um ihn im gewünschten Emulator auszuführen.Mehr sehen
quelle
cordova run ios --target=iPhone-6
Ich kann die obige Antwort aufgrund meines schlechten Rufs nicht kommentieren, aber die Liste der Ziele ist verfügbar unter:
unter
Trotzdem kann ich den iPad Retina Emulator nicht zum Laufen bringen ...
quelle
schnellste Ausgabe der Geräteliste:
$ instruments -s devices
Verwenden Sie einfach den Gerätenamen ohne die Version.
quelle
Führt den iOS-Simulator mit einer Webanforderung aus, die auf dem bereits generierten Build für die Cordova-Anwendung basiert. Wenn Sie diese Anforderung über den Browser ausführen, wird der Simulator auf dem Mac mit dem iPhone 8Plus geöffnet. Version: http: // Hostname: 3000 / cordova / build / [xxxx-buildnumber] / emulate? Target = iPhone-8-Plus
quelle
Unterschiedlicher iPhone- und iPad-Simulator
cordova run ios --list
cordova emuliert ios --target "iPhone-7"
quelle
@ Birjas Antwort funktioniert gerade, aber der Befehl run, den er schließlich verwendet hat, ist immer noch falsch. Hier also die richtige Antwort:
Zum Auflisten aller im Simulator verfügbaren Geräte
cordova run ios --list
Es wird so etwas ergeben:
cordova run ios --target "iPad-Pro, 12.2"
Verwenden Sie ein beliebiges Ziel von oben. Im Simulator ausführen.quelle