2014-04-06 21 views
16

Sto costruendo un'app ionico/angularjs/phonegap. Sono nuovo nello sviluppo front-end. Ho un package.json e un bowser.json. In package.json, dopo aver installato i pacchetti, eseguo "bower install" per installare tutte le dipendenze bower. Sono in grado di eseguire un server Python in www e vedere l'app in chrome. Tuttavia, non sono in grado di eseguire l'emulatore Android. Qualcuno può guidarmi per favore?cordova fallisce con codice di uscita 2

EDIT

ho capito dopo la pubblicazione questa domanda che ionici già fornito con angolare e dovrei usare quella. Inoltre non ho bisogno di bootstrap in quanto ionico è un framework di cui ho bisogno. Solo bisogno di sottolineatura. Lo pulirò. Ma non credo che tutto ciò sia legato all'errore.

Ecco l'errore dopo l'esecuzione di "Cordova costruire":

BUILD FAILED 
k:\android\sdk\tools\ant\build.xml:932: The following error occurred while execu 
ting this line: 
k:\android\sdk\tools\ant\build.xml:950: java.lang.ArrayIndexOutOfBoundsException 
: 1 
     at com.android.ant.DependencyGraph.parseDependencyFile(DependencyGraph.j 
ava:180) 
     at com.android.ant.DependencyGraph.<init>(DependencyGraph.java:54) 
     at com.android.ant.SingleDependencyTask.initDependencies(SingleDependenc 
yTask.java:87) 
     at com.android.ant.AaptExecTask.execute(AaptExecTask.java:509) 
     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292) 
     at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav 
a:106) 
     at org.apache.tools.ant.Task.perform(Task.java:348) 
     at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68) 
     at com.android.ant.IfElseTask.execute(IfElseTask.java:124) 
     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292) 
     at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav 
a:106) 
     at org.apache.tools.ant.Task.perform(Task.java:348) 
     at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68) 
     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292) 
     at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav 
a:106) 
     at org.apache.tools.ant.Task.perform(Task.java:348) 
     at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.jav 
a:396) 
     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292) 
     at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav 
a:106) 
     at org.apache.tools.ant.Task.perform(Task.java:348) 
     at org.apache.tools.ant.Target.execute(Target.java:435) 
     at org.apache.tools.ant.Target.performTasks(Target.java:456) 
     at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393) 
     at org.apache.tools.ant.Project.executeTarget(Project.java:1364) 
     at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExe 
cutor.java:41) 
     at org.apache.tools.ant.Project.executeTargets(Project.java:1248) 
     at org.apache.tools.ant.Main.runBuild(Main.java:851) 
     at org.apache.tools.ant.Main.startAnt(Main.java:235) 
     at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280) 
     at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109) 

Total time: 4 seconds 
Error code 1 for command: cmd with args: /s,/c,ant,debug,-f,k:\tmp\angularToDo\p 
latforms\android\build.xml,-Dout.dir=ant-build,-Dgen.absolute.dir=ant-gen 
Error: cmd: Command failed with exit code 2 
    at ChildProcess.whenDone (c:\Users\IBM_ADMIN\AppData\Roaming\npm\node_module 
s\cordova\src\superspawn.js:112:23) 
    at ChildProcess.EventEmitter.emit (events.js:98:17) 
    at maybeClose (child_process.js:743:16) 
    at Process.ChildProcess._handle.onexit (child_process.js:810:5) 

Package.json

{ 
    "name": "ionic-project", 
    "version": "1.0.0", 
    "description": "An Ionic project", 
    "dependencies": { 
    "gulp": "^3.5.6", 
    "gulp-sass": "^0.7.1", 
    "gulp-concat": "^2.2.0", 
    "gulp-minify-css": "^0.3.0", 
    "gulp-rename": "^1.2.0", 
    "karma": "~0.10", 
    "protractor": "~0.17.0", 
    "bower": "^1.3.1" 
    }, 
    "scripts": { 
    "postinstall": "bower install" 
    } 
} 

Bower.json (l'ho presa da progetto seme angularjs)

{ 
    "name": "angular-seed", 
    "description": "A starter project for AngularJS", 
    "version": "0.0.0", 
    "homepage": "https://github.com/angular/angular-seed", 
    "license": "MIT", 
    "private": true, 
    "dependencies": { 
    "angular": "1.2.x", 
    "angular-route": "1.2.x", 
    "angular-loader": "1.2.x", 
    "angular-mocks": "~1.2.15", 
    "bootstrap" : "3.1.1", 
    "underscore" : "1.6.0" 
    } 
} 
+0

Sto ricevendo lo stesso errore dopo un'interruzione di corrente sfortunata nel mezzo di '' 'phonegap esegue Android''' con un dispositivo collegato tramite USB. – givanse

risposta

7

L'errore sembra essere causato da una build che è stata interrotta prima del completamento, lasciando il progetto in uno stato incoerente.

Se non si dispone di codice piattaforma personalizzata, semplicemente:

rm -r platforms/android/ 
phonegap run android 

Si noti che se si utilizza uno strumento di controllo della versione, è possibile recuperare facilmente la vostra piattaforma di modifiche (impegnati):

git checkout platforms/android/ 
+0

Cosa succede se ho delle dipendenze dalla piattaforma, quale sottodirectory di costruzione devo fare per rm -r? Grazie in anticipo ...
c'è un'opzione pulita? cordova run android -clean –

+0

Sì, ho cercato qualcosa di simile, ho persino provato i bersagli delle formiche direttamente nella cartella di Android, ma non ho preso un dado. Dal momento che non ho avuto modifiche specifiche per Android, sono passato al nucleare sull'errore. – givanse

22

@givanse - ho risposto alla mia domanda, quindi se avete le dipendenze di piattaforma (che significa codice che non si vuole perdere in piattaforma/Android), in modo da fare una generazione pulita, ho fatto:

rm -r platforms/android/ant-build 
rm -r platforms/android/assets 

tutto è buono ora. Grazie.

+3

Funzionano anche le piattaforme di clearing/android/ant-build. comunque: +1: – kushdilip

2

questo è corretto >>>>>>>> questo è causato da una interruzione compilare a Cordova e si presenta così:

generazione non riuscita

~\sdk\tools\ant\build.xml:932: The following error occurred while executing this line: 
~\sdk\tools\ant\build.xml:950: java.lang.ArrayIndexOutOfBoundsException: 1 
     at com.android.ant.DependencyGraph.parseDependencyFile(DependencyGraph.java:180) 
     at com.android.ant.DependencyGraph.<init>(DependencyGraph.java:54) 
     at com.android.ant.SingleDependencyTask.initDependencies(SingleDependencyTask.java:87) 
     at com.android.ant.AaptExecTask.execute(AaptExecTask.java:509) 

Error: ~\platforms\android\cordova\run.bat: Command failed with exit code 8 
    at ChildProcess.whenDone (~npm\node_modules\cordova\node_modules\cordova-lib\src\cordova\superspawn.js:135:23) 

a risolvere il problema rinominando la cartella ~\platforms a qualcos'altro (o semplicemente rimuoverlo) poi correre in cmd

cordova platform add android 

poi

cordova run android 
1

Questo è accaduto a me dopo l'aggiornamento versioni e dopo un po 'googling ho trovato la soluzione migliore per rimuovere solo la piattaforma e quindi aggiungere nuovamente con il nuovo CLI:

cordova platform remove PLATFORM 
cordova platform add PLATFORM 

Quindi la compilazione ha esito positivo

1

Se si legge attentamente quale messaggio si otterrà il suggerimento. È in cerca di android.bat nella directory di Android-sdk, quindi tutto ciò che devi fare è copiare la posizione di android.bat e inserire il percorso di Windows dell'ambiente.

Si potrebbe anche ottenere un errore di uscita di uno "1" perché si è modificata o aggiornata la directory java in modo da aggiungere al percorso dell'ambiente la directory java \ bin.

Problemi correlati