2015-03-24 14 views
6

Sto lavorando con l'ultima Cordova (4.3) su OS X e ho 2 iPhone collegati al mio Macbook Pro. Ogni volta che voglio mettere alla prova la mia app, ho eseguito il seguente comando nel terminale:Come distribuire l'app Cordova tramite CLI su un dispositivo iPhone specificato?

cordova run ios --device 

Lo script produce il seguente output nel terminale:

** BUILD SUCCEEDED ** 
[....] Waiting up to 5 seconds for iOS device to be connected 
[....] Found iPhone 4S 'iPhone 4S' (0b2799xxxxx) connected through USB. 
[....] Found iPhone 4 (GSM) 'QA iPhone 4' (40daa94b6dc607595a570c0893ba54b185a85124) connected through USB. 
[....] Waiting for iOS device to be connected 
[....] Using iPhone 4S 'iPhone 4S' (0b27990xxxxxx) (0b2799xxxx). 
------ Install phase ------ 
[ 0%] Found iPhone 4S 'iPhone 4S' (0b279904xxxxxxx) connected through USB, beginning install 

E poi si procede per installare l'applicazione su UNO dei l'iPhone e apre il prompt lldb. Il secondo iPhone rimane morto e silenzioso.

Quando esco dal lldb (via 'uscita', 'y'), gli script mostra un errore:

Quitting LLDB will kill one or more processes. Do you really want to proceed: [Y/n] y 
Error code 253 for command: ios-deploy with args: -d,-b,/Users/path_to_app/appname.app 
ERROR running one or more of the platforms: Error: /Users/path_to_app/platforms/ios/cordova/run: Command failed with exit code 2 
You may not have the required environment or OS to run this project 

Ho guardato tutto la documentazione Cordova CLI e Google, ma non riesco a vedere come posso schierare un'app per un dispositivo fisico iPhone specifico (non emulatore!). Su Android, posso usare "cordova run android --target = 06af27413440e95f", dove il numero lungo è l'id del dispositivo in adb. Come faccio a farlo per gli iPhone?

Ho provato quanto segue senza alcun risultato:

cordova run ios --target='QA iPhone 4' 
cordova run ios --device='QA iPhone 4' 
cordova run ios --device --target='QA iPhone 4' 
+1

avete provato questo 'Cordova gestito ios --target = 0b27990xxxxxx' – AtanuCSE

+0

sì, l'ho fatto, risponde con "0b27990xxxxxx non è un obiettivo valido per emulatore"(la parte xxxx è naturalmente lì per nascondere la mia vero UDID) –

+0

Grazie @AtanuCSE la tua anima ha funzionato per me – yatg

risposta

12

Ciao io sono uno sviluppatore ionico, però io uso chiaramente Cordova. Lasciami provare ad aiutarti.

Privet Sergey!

Uso uno script di shell che utilizza il modulo di nodo ios-deploy che può distribuire e eseguire il debug tramite l'uso di Xcode.

In primo luogo eseguire questo comando per elencare tutti i dispositivi, si dovrebbe vedere entrambi (FYI, è quella normale per distribuire a 2 dispositivi contemporaneamente utilizzando Xcode?)

ios-deploy -c 

Per l'installazione di iOS da implementare, vedi (https://github.com/phonegap/ios-deploy)

Ora per la connessione e l'esecuzione di comandi ad un uso specifico dispositivo questo comando:

ios-deploy --id <device_id> --bundle my.app 

Non ci sono scorciatoie per ° è un fantastico strumento a riga di comando.

Usage: ios-deploy [OPTION]... 
    -d, --debug     launch the app in GDB after installation 
    -i, --id <device_id>   the id of the device to connect to 
    -c, --detect     only detect if the device is connected 
    -b, --bundle <bundle.app> the path to the app bundle to be installed 
    -a, --args <args>   command line arguments to pass to the app when launching it 
    -t, --timeout <timeout>  number of seconds to wait for a device to be connected 
    -u, --unbuffered    don't buffer stdout 
    -n, --nostart    do not start the app when debugging 
    -I, --noninteractive   start in non interactive mode (quit when app crashes or exits) 
    -L, --justlaunch    just launch the app and exit lldb 
    -v, --verbose    enable verbose output 
    -m, --noinstall    directly start debugging without app install (-d not required) 
    -p, --port <number>   port used for device, default: 12345 
    -r, --uninstall    uninstall the app before install (do not use with -m; app cache and data are cleared) 
    -1, --bundle_id <bundle id> specify bundle id for list and upload 
    -l, --list     list files 
    -o, --upload <file>   upload file 
    -w, --download    download app tree 
    -2, --to <target pathname> use together with up/download file/tree. specify target 
    -V, --version    print the executable version 
    -e, --exists     check if the app with given bundle_id is installed or not 
+0

Ho notato solo la tua risposta ora (perché SO mi ha dato un badge '1000 visualizzazioni' per questa domanda) quindi ... grazie, immagino :) Non posso confermare se funziona ma sembra certamente che tu sappia di cosa stai parlando. Спасибо! –

+0

Aggiunta di un aggiornamento: questo strumento potrebbe essere deprecato nella futura versione di cordova-cli, sarà possibile distribuirlo in modo diverso, tramite lo strumento cli stesso senza il nuovo di questo script. – jeveloper