web-dev-qa-db-fra.com

Plusieurs fichiers dex définissent Lorg / Apache / cordova / BuildHelper

Je suis en difficulté depuis hier. Dans mon stage, j'ai rencontré l'erreur de construction suivante, mais je ne comprenais pas pourquoi:

$ cordova build Android

[...]

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':transformClassesWithDexForDebug'.
> com.Android.build.api.transform.TransformException: com.Android.ide.common.process.ProcessException: Java.util.concurrent.ExecutionException: com.Android.dex.DexException: Multiple dex files define Lorg/Apache/cordova/BuildHelper;

* 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: 3.379 secs
Error: /home/thor/Projects/App_CDP/platforms/Android/gradlew: Command failed with exit code 1 Error output:
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':transformClassesWithDexForDebug'.
> com.Android.build.api.transform.TransformException: com.Android.ide.common.process.ProcessException: Java.util.concurrent.ExecutionException: com.Android.dex.DexException: Multiple dex files define Lorg/Apache/cordova/BuildHelper;

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

Voici le résultat de cordova plugins list, je n'ai pas le conflit support-v4/v13 comme vous pouvez le voir:

$ cordova plugin list
com.googlemaps.ios 2.2.0-fixed "Google Maps SDK for iOS"
com.moust.cordova.videoplayer 1.0.1 "Video Player"
cordova-plugin-camera 2.4.1 "Camera"
cordova-plugin-compat 1.1.0 "Compat"
cordova-plugin-console 1.0.5 "Console"
cordova-plugin-device 1.1.4 "Device"
cordova-plugin-facebook4 1.9.1 "Facebook Connect"
cordova-plugin-file 4.0.0 "File"
cordova-plugin-file-transfer 1.6.3 "File Transfer"
cordova-plugin-geolocation 2.4.3 "Geolocation"
cordova-plugin-googlemaps 1.4.0 "phonegap-googlemaps-plugin"
cordova-plugin-inappbrowser 1.7.1 "InAppBrowser"
cordova-plugin-splashscreen 4.0.3 "Splashscreen"
cordova-plugin-statusbar 2.2.2 "StatusBar"
cordova-plugin-whitelist 1.3.1 "Whitelist"
ionic-plugin-keyboard 2.2.1 "Keyboard"
{}

Voici aussi quelques informations supplémentaires:

$ cordova -v
7.0.1

$ ionic -v
2.1.4
68
Biboozz

Très probablement, vous utilisez le [email protected] récemment publié, qui inclut désormais BuildHelper.Java (comme indiqué dans votre message d'erreur) et PermissionHelper.Java , mais vous ont le code obsolète cordova-plugin-compat dans votre projet, ce qui entraîne l'échec de la construction car il contient également ces classes .

Pour résoudre ce problème, supprimez cordova-plugin-compat de votre projet pour désinstaller ces fichiers Java du projet de plate-forme cordova-Android:

cordova plugin rm cordova-plugin-compat --force

Mettre à jour

Pour conserver cette modification, ajoutez [email protected] qui inclut un contrainte de moteur pour empêcher les fichiers Java d'être réinstallés sur la plate-forme [email protected]+:

cordova plugin add [email protected]

Une autre mise à jour (copypasté à partir de commentaires)

Après avoir supprimé et ajouté [email protected], au lieu de supprimer et d'ajouter toute la plate-forme Android, vous ne pouvez supprimer que les fichiers BuildHelper.Java et PermissionHelper.Java du dossier plates-formes/Android.

152
DaveAlden

Je vais ajouter mes 2 cents, car aucune des solutions ne fonctionne pour moi. La seule chose qui a fonctionné pour moi:

cordova plugin rm cordova-plugin-compat --force
cordova platform rm Android
cordova platform add [email protected]
41
Eric

Je devais faire:

cordova plugin rm cordova-plugin-compat --force
cordova plugin add [email protected]
cordova platform rm Android
cordova platform add [email protected]

considérant que vous ne pouvez pas simplement supprimer cordova-plugin-compat car des plugins comme cordova-plugin-file en dépendent.

19
jlchereau

Je sais que la question a déjà répondu, mais je veux ajouter un lien vers les notes de publication officielles:

https://cordova.Apache.org/news/2017/11/10/plugins-release.html

Dans notre dernière version, nous avons déconseillé cordova-plugin-compat depuis son intégration dans [email protected]. Donc, pour ce cycle de publication, nous avons supprimé la dépendance des plugins qui le dépendaient et leur avons donné un saut de version majeur. Les plugins suivants ont abandonné cordova-plugin-compat: cordova-plugin-camera, cordova-plugin-contacts, cordova-plugin-file, cordova-plugin-geolocation, cordova-plugin-media, et cordova-plugin-media-capture .

Assurez-vous donc de mettre à jour tous les plug-in répertoriés dans la version publiée dans les notes de publication.

10
Alexander S.

Une solution: rétrograder cordova Android platform @6.2.3

$ cordova platform remove Android && cordova platform add [email protected]

9
Made in Moon

J'utilise pour Ionic 3 Project, je dois faire:

ionic cordova plugin rm cordova-plugin-compat --force
ionic cordova plugin add [email protected]
ionic cordova platform rm Android
ionic cordova platform add [email protected]

c'est un travail pour moi.

4
MD.Riyaz

Avec mon projet Ionic 3, il suffisait d'exécuter:

ionic cordova plugin rm cordova-plugin-compat --force
ionic cordova plugin add [email protected]

Et lancez à nouveau une compilation. Pas besoin de supprimer et d'ajouter la plate-forme.

4
Dark Smile

j'ai eu la même erreur, et je n'avais pas de plugin compat dans mes plugins, je viens d'exécuter ce code, alors j'ai construit, ça a bien fonctionné

$ cordova platform remove Android && cordova platform add [email protected]
2
Maryam

Voici la solution:

cordova plugin rm cordova-plugin-compat --force
1
Talha Baktır

cordova plugin rm cordova-plugin-compat --force

cordova plate-forme rm Android

plate-forme cordova ajouter [email protected]

cordova plugin add [email protected]

dans cet ordre, travaille pour moi !! Merci beaucoup

1
Alejandro Cristian

J'utilise Ionic 4 et cela l'a résolu pour moi (cela ne prend que quelques secondes):

cordova clean
0
Baub

J'ai supprimé le plugin Compat après la mise à jour de la dépendance des autres plugins; comme caméra à la nouvelle version et son travail. Exemple: plugin cordova rm cordova-plugin-camera --save plugin cordova add cordova-plugin-camera @ latest --save Après la nouvelle addition du plugin, l'ancienne version 2.3.0 a été remplacée par la version 4.0.2 pour le plugin Camera.

après cette étape. J'ai simplement retiré le plugin "Compat" plugin cordova rm cordova-plugin-compat --force

0
Ajit Kumar Singh

Je confirme que Answer by DaveAlden Works !!

Mais dans le fichier plugin.xml à l'intérieur de cordova-plugin-compat, une erreur de syntaxe avec un signe inférieur à '<' a été détectée, car elle est illégale en xml.

Ce problème apparaît dans visual studio et vous ne pouvez pas installer de plug-in avec le gestionnaire de configuration car il détecte cette erreur de syntaxe en xml sur la ressource de plug-in.

Vous devez installer avec la ligne de commande comme dit DaveAlden.

Ignore les erreurs, et après l'installation, remplacez:

<engine name="cordova-Android" version="<6.3.0"/>

par

<engine name="cordova-Android" version="&lt;6.3.0"/>

Et la compilation courue à la fin !! :)

0
bras cyril

Pour résumer. Cela signifie que plugin-camera n'est pas compatible avec la dernière version de Android oreo

0
Renato Alvarez

Il se peut que les plug-ins ne correspondent pas dans les versions Android. Donc, mieux exécuter 2 commandes pour une construction réussie

cordova platform rm Android
cordova platform add Android

Après deux jours perdus, cela ne semble être que des solutions efficaces pour moi.

0

Supprimer le plugin cordova-plugin-compat avec force Android sdk au-dessus de la version 6.3.0 ou équivalent, car il est intégré à cordova Android.

cordova plugin rm cordova-plugin-compat --force

Comme référence ci-dessous

https://cordova.Apache.org/announcements 2017/09/27/Android-release.html

0
Vinod Gehlot