web-dev-qa-db-fra.com

cordova échoue avec le code de sortie 2

Je construis une application ionique/angularjs/phonegap. Je suis nouveau dans le développement frontal. J'ai un package.json et un bowser.json. Dans package.json, après l'installation des packages, je lance "bower install" pour installer toutes les dépendances de bower. Je suis capable de faire tourner un serveur python sur www et de voir l'application en chrome. Je ne suis cependant pas capable de courir dans l'émulateur Android. Quelqu'un peut-il me guider s'il vous plaît?

MODIFIER

J'ai réalisé après avoir posté cette question que ionic est déjà livré avec angular et que je devrais juste l'utiliser. De plus, pas besoin de bootstrap car ionic est un framework dont j'ai besoin. Juste besoin de soulignement. Je vais le nettoyer. Mais je ne pense pas que cela soit lié à l'erreur.

Voici l'erreur après avoir exécuté " cordova build ":

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 (Je l'ai eu du projet de semences 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"
  }
}
16
U-L

@givanse - J'ai répondu à ma propre question, donc si vous avez des dépendances de la plate-forme (code que vous ne voulez pas perdre dans la plate-forme/Android), vous devez donc:

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

tout va bien maintenant. Merci.

22
hani elabed

L'erreur semble être provoquée par une construction qui a été abandonnée avant d'être terminée, laissant le projet dans un état incohérent.

Si vous n'avez pas de code de plateforme personnalisé, simplement:

rm -r platforms/Android/
phonegap run Android

Notez que si vous utilisez un outil de contrôle de version, vous pouvez facilement récupérer les modifications (engagées) de votre plate-forme:

git checkout platforms/Android/
7
givanse

THIS IS CORRECT >>>>>>>> Ceci est causé par une compilation interrompue dans cordova et ressemble à ceci: 

ÉCHEC DE CONSTRUCTION

~\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)

vous le corrigez en renommant le dossier ~\platforms en quelque chose d'autre (ou en le supprimant simplement) puis en l'exécutant dans cmd

cordova platform add Android

puis

cordova run Android
2
Mr Heelis

Cela m'est arrivé après la mise à niveau des versions et après quelques recherches sur Google, j'ai trouvé la meilleure solution pour simplement supprimer la plate-forme, puis l'ajouter de nouveau avec le nouveau CLI:

cordova platform remove PLATFORM
cordova platform add PLATFORM

Ensuite, la construction réussit

1
blnc

Si vous lisez attentivement le message, vous obtiendrez un indice. Il cherche Android.bat dans votre répertoire Android-sdk, il vous suffit donc de copier l'emplacement de Android.bat et de le placer dans le chemin de votre environnement.

Vous pouvez également obtenir l’erreur de sortie 1 "parce que vous avez modifié ou mis à jour votre répertoire Java. Ajoutez donc à votre chemin d’environnement le répertoire Java\bin.

1
Naiem Soliman Saad