web-dev-qa-db-fra.com

Erreur Cordova lors de la génération uniquement pour Android: Android.dex.DexException: plusieurs fichiers définissent Landroid/support/annotation/AnimRes;

J'ai suivi trois autres ressources sur ce problème, mais aucune n'a fonctionné.

Mon iOS construit parfaitement, mais Android donne cette erreur peu importe ce que j'essaie de changer.

  • Déjà essayé de créer un nouveau projet mais Android garde le même problème.
  • Tous les SDK Android sont installés

Voici l'erreur suivante:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':dexDebug'.
> com.Android.ide.common.internal.LoggedErrorException: Failed to run command:
  	/Users/sakai/Library/Android/sdk/build-tools/23.0.1/dx --dex --no-optimize --output /Users/sakai/mobile/cupomap/platforms/Android/build/intermediates/dex/debug --input-list=/Users/sakai/mobile/cupomap/platforms/Android/build/intermediates/tmp/dex/debug/inputList.txt
  Error Code:
  	2
  Output:
  	
  	UNEXPECTED TOP-LEVEL EXCEPTION:
  	com.Android.dex.DexException: Multiple dex files define Landroid/support/annotation/AnimRes;
  		at com.Android.dx.merge.DexMerger.readSortableTypes(DexMerger.Java:596)
  		at com.Android.dx.merge.DexMerger.getSortedTypes(DexMerger.Java:554)
  		at com.Android.dx.merge.DexMerger.mergeClassDefs(DexMerger.Java:535)
  		at com.Android.dx.merge.DexMerger.mergeDexes(DexMerger.Java:171)
  		at com.Android.dx.merge.DexMerger.merge(DexMerger.Java:189)
  		at com.Android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.Java:502)
  		at com.Android.dx.command.dexer.Main.runMonoDex(Main.Java:334)
  		at com.Android.dx.command.dexer.Main.run(Main.Java:277)
  		at com.Android.dx.command.dexer.Main.main(Main.Java:245)
  		at com.Android.dx.command.Main.main(Main.Java:106)
  	


* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 5.343 secs

/Users/sakai/mobile/cupomap/platforms/Android/cordova/node_modules/q/q.js:126
                    throw e;
                          ^
Error code 1 for command: /Users/sakai/mobile/cupomap/platforms/Android/gradlew with args: cdvBuildDebug,-b,/Users/sakai/mobile/cupomap/platforms/Android/build.gradle,-Dorg.gradle.daemon=true
ERROR building one of the platforms: Error: /Users/sakai/mobile/cupomap/platforms/Android/cordova/build: Command failed with exit code 8
You may not have the required environment or OS to build this project
Error: /Users/sakai/mobile/cupomap/platforms/Android/cordova/build: Command failed with exit code 8
    at ChildProcess.whenDone (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:139:23)
    at ChildProcess.emit (events.js:98:17)
    at maybeClose (child_process.js:756:16)
    at Process.ChildProcess._handle.onexit (child_process.js:823:5)

Beaucoup de ressources indiquent qu'il s'agit principalement d'un fichier de support dupliqué avec différentes versions. Alors voici ma liste de plugins

com.googlemaps.ios 1.9.2 "Google Map iOS SDK for Cordova"
cordova-plugin-console 1.0.1 "Console"
cordova-plugin-device 1.0.1 "Device"
cordova-plugin-device-motion 1.1.1 "Device Motion"
cordova-plugin-device-orientation 1.0.1 "Device Orientation"
cordova-plugin-dialogs 1.1.1 "Notification"
cordova-plugin-geolocation 1.0.1 "Geolocation"
cordova-plugin-splashscreen 2.1.0 "Splashscreen"
cordova-plugin-statusbar 1.0.1 "StatusBar"
cordova-plugin-whitelist 1.0.0 "Whitelist"
phonegap-plugin-Push 1.2.2 "PushPlugin"
plugin.google.maps 1.2.9 "phonegap-googlemaps-plugin"
plugin.http.request 1.0.4 "phonegap-http-request"

J'essaie de résoudre ce problème depuis presque un jour maintenant.

J'apprécie n'importe quel type d'aide

18
Sakai

Avait le même problème, l'ajout des lignes suivantes au fichier build.gradle situé dans les plates-formes/Android l'a fait pour moi.

configurations {
   all*.exclude group: 'com.Android.support', module: 'support-v4'
}

Je l'ai copié après la ligne:

apply plugin: 'Android'

J'espère que cela t'aides.

54
henkie14

C'est presque certainement à cause de plugins en conflit. La façon dont j'ai résolu le problème (j'espère que vous êtes assis confortablement) était de supprimer chaque plug-in, puis de les ajouter un par un et d'essayer de les construire. Autant que je sache, c’est la seule façon réelle de les diagnostiquer.

Il s’agit généralement de dépendances sur une sorte de bibliothèque Google (services de lecture ou emplacement). Je dirais donc que les coupables les plus probables sont les plug-ins impliqués dans l’emplacement ou les notifications Push.

2
Chris Rae

Cela a fonctionné pour moi:

Supprimez simplement le dossier "build" sur les plateformes/Android, puis exécutez cordova build Android. Pour moi ça marche

0
dian