android - transformdexwithdexforrelease - Varios archivos dex definen Lorg/apache/cordova/BuildHelper
multiple dex files define lorg/apache/cordova/buildhelper; (16)
Estoy en problemas desde ayer. En mi pasantía enfrenté el siguiente error de compilación, pero no podía entender por qué:
$ 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.
Aquí está la salida de la
cordova plugins list
de
cordova plugins list
, no tengo el conflicto support-v4 / v13 como puedes ver:
$ 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"
{}
Aquí también hay más información:
$ cordova -v
7.0.1
$ ionic -v
2.1.4
Con mi proyecto Ionic 3 fue suficiente para ejecutar:
ionic cordova plugin rm cordova-plugin-compat --force
ionic cordova plugin add [email protected]
Y luego ejecuta una compilación de nuevo. No es necesario eliminar y agregar la plataforma.
Confirmo que la respuesta de DaveAlden Works !!
Pero en el plugin.xml dentro del cordova-plugin-compat tuve un error de sintaxis con menos que el signo ''<'', porque es ilegal en xml.
Este problema aparece en Visual Studio, y no puede instalar el complemento con el administrador de configuración porque detecta este error de sintaxis en xml en el recurso del complemento.
Debe instalar con la línea de comando como dice DaveAlden.
Ignorar errores, y después de instalar reemplazar:
<engine name="cordova-android" version="<6.3.0"/>
por
<engine name="cordova-android" version="<6.3.0"/>
Y la compilación corre al final !! :)
Elimine el plugin cordova-plugin-compat forzosamente android sdk anterior a la versión 6.3.0 o igual porque está integrado con cordova android.
cordova plugin rm cordova-plugin-compat --force
Como referencia a continuación
https://cordova.apache.org/announcements/2017/09/27/android-release.html
En resumen. Esto significa que la cámara de complemento no es compatible con la última versión de Android Oreo
Esta es la solución:
cordova plugin rm cordova-plugin-compat --force
Estoy usando Ionic 4 y esto lo resolvió por mí (solo toma unos segundos para ejecutarse):
cordova clean
Estoy usando para el Proyecto
Ionic 3
, tengo que hacer:
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]
Es trabajo para mí.
He eliminado el complemento Compat después de la actualización de la dependencia de otros complementos; como Cámara a la nueva versión y funciona. Ejemplo: cordova plugin rm cordova-plugin-camera --save cordova plugin add cordova-plugin-camera @ latest --save Publique la nueva adición del complemento, la versión anterior 2.3.0 fue reemplazada por 4.0.2 para Camera plugin.
despues de este paso. Simplemente eliminé el complemento "Compat" cordova plugin rm cordova-plugin-compat --force
Lo más probable es que esté utilizando el
[email protected]
recientemente lanzado, que ahora incluye
BuildHelper.java
(como se indica en su mensaje de error) y
PermissionHelper.java
, pero aún tiene el obsoleto
cordova-plugin-compat
en su proyecto que está causando que la compilación falle porque
también contiene estas clases
.
Para solucionar esto, elimine
cordova-plugin-compat
de su proyecto para desinstalar estos archivos Java del proyecto de plataforma
cordova-android
::
cordova plugin rm cordova-plugin-compat --force
Actualizar
Para persistir este cambio, agregue
[email protected]
que incluye una
restricción del motor
para evitar que los archivos Java se reinstalen en la plataforma
[email protected]+
:
cordova plugin add [email protected]
Otra actualización (copiada de los comentarios)
Después de eliminar y agregar [email protected], en lugar de eliminar y agregar toda la plataforma Android, solo puede eliminar los archivos BuildHelper.java y PermissionHelper.java de las plataformas de carpetas / android
Puede haber una falta de coincidencia de los complementos en las compilaciones de Android. Así que mejor ejecuta 2 comandos para una compilación exitosa
cordova platform rm android
cordova platform add android
Después de perder 2 días, esto parece ser solo una solución para mí.
Sé que la pregunta ya respondió, pero quiero agregar un enlace a las notas oficiales de la versión:
https://cordova.apache.org/news/2017/11/10/plugins-release.html
En nuestro último lanzamiento de complementos, desaprobamos cordova-plugin-compat ya que se integró en [email protected]. Entonces, para este ciclo de lanzamiento, hemos eliminado la dependencia de los complementos que confiaban en él y le dimos a los complementos un salto de versión principal. Los siguientes complementos han eliminado cordova-plugin-compat: cordova-plugin-camera, cordova-plugin-contactos, cordova-plugin-file, cordova-plugin-geolocation, cordova-plugin-media y cordova-plugin-media-capture .
Por lo tanto, asegúrese de actualizar todos los complementos enumerados a la versión publicada en las notas de la versión.
Tenía que hacer:
cordova plugin rm cordova-plugin-compat --force
cordova plugin add [email protected]
cordova platform rm android
cordova platform add [email protected]
teniendo en cuenta que no puede simplemente eliminar cordova-plugin-compat porque los complementos como cordova-plugin-file dependen de él.
Tuve el mismo error y no tenía el complemento de compatibilidad en mis complementos, simplemente ejecuté ese código, luego construí, funcionó bien
$ cordova platform remove android && cordova platform add [email protected]
Una solución: rebajar la
cordova android platform @6.2.3
$
cordova platform remove android && cordova platform add [email protected]
Voy a agregar mis 2 centavos ya que ninguna de las soluciones funciona para mí. Lo único que funcionó para mí:
cordova plugin rm cordova-plugin-compat --force
cordova platform rm android
cordova platform add [email protected]
cordova plugin rm cordova-plugin-compat --force
plataforma cordova rm android
plataforma cordova agregar [email protected]
complemento cordova agregar [email protected]
en este orden, funciona para mi !! muchas gracias