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
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.
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]
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.
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.
Une solution: rétrograder cordova Android platform @6.2.3
$ cordova platform remove Android && cordova platform add [email protected]
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.
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.
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]
Voici la solution:
cordova plugin rm cordova-plugin-compat --force
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
J'utilise Ionic 4 et cela l'a résolu pour moi (cela ne prend que quelques secondes):
cordova clean
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
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="<6.3.0"/>
Et la compilation courue à la fin !! :)
Pour résumer. Cela signifie que plugin-camera n'est pas compatible avec la dernière version de Android oreo
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.
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