Android Studio: Gradle - la compilación falla - La ejecución falló para la tarea ': dexDebug'


82

Error:

Gradle: Execution failed for task ':vertretungsplan:dexDebug'.
> Failed to run command:
    P:\Android-Studio\sdk\build-tools\18.0.1\dx.bat --dex --output P:\Projekte\VertretungsplanProject\vertretungsplan\build\libs\vertretungsplan-debug.dex P:\Projekte\VertretungsplanProject\vertretungsplan\build\classes\debug P:\Projekte\VertretungsplanProject\vertretungsplan\build\dependency-cache\debug P:\Android-Studio\sdk\extras\android\m2repository\com\android\support\support-v4\18.0.0\support-v4-18.0.0.jar P:\Projekte\VertretungsplanProject\vertretungsplan\libs\commons-io-2.4.jar P:\Projekte\VertretungsplanProject\vertretungsplan\build\exploded-bundles\VertretungsplanProjectLibrariesActionbarsherlockUnspecified.aar\classes.jar
Error Code:
    2
Output:
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/LoginActivity$2.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/LoginActivity$2.class
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/MainActivity$1.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/MainActivity$1.class
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/YQL/YqlVplanParser.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/YQL/YqlVplanParser.class
    3 warnings
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dx.util.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
        at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
        at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
        at com.android.dx.command.dexer.Main.run(Main.java:232)
        at com.android.dx.command.dexer.Main.main(Main.java:174)
        at com.android.dx.command.Main.main(Main.java:91)

Estructura del proyecto:

ingrese la descripción de la imagen aquí

build.gradle (actionbarsherlock)

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android-library'

dependencies {
    compile 'com.android.support:support-v4:18.0.0'
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 11
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            res.srcDirs = ['res']
        }
    }
}

build.gradle (vertretungsplan)

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

dependencies {
    compile files('libs/commons-io-2.4.jar')
    compile project(':libraries:actionbarsherlock')
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 11
    }
}

settings.gradle

include ':vertretungsplan', ':libraries:actionbarsherlock'

¿Cómo puedo solucionar este error?

Respuestas:


90

La respuesta correcta es que algunos de sus archivos jar no se compilan. Debes ir a tu archivo build.gradle en tu proyecto y buscar en tus dependencias.

Si solo está importando algunos archivos jar, puede intentar eliminarlos y agregarlos uno a la vez. Esto le ayudará a determinar cuál de ellos causa el error.

En mi caso, hice precisamente eso, y cuando estaba importando el último, la aplicación se compiló. Así que creo que el problema real era que estaba importando demasiados a la vez. Pero ahora todo funciona.


20
Si compila usando ./gradlew ensamblar --stacktrace --info, le permitirá saber exactamente qué jar es malo
Nir Hartmann

@NirHartmann Pregunta rápida, ¿es el comando algo que colocaría en el gradle de compilación? No estaba seguro de dónde colocarlo.
Fallenreaper

2
@Fallenreaper no estoy seguro de haber entendido su pregunta, quise decir que en el directorio de su proyecto raíz tiene un archivo exec gradlew, si lo dispara desde la terminal o cmd como dije, sabría dónde está el problema y luego puede solucionarlo .
Nir Hartmann

@ Fallenreaper: navegué a gradle / gradle en la terminal e ingresé ./gradlew ensamblar --stacktrace --info pero no obtuve un directorio de este tipo, ¿es esto lo que quisiste decir en tu sugerencia?
dancingbush

Esto es realmente útil para mí
bhavesh kaila

68

De repente tuve el mismo problema, sin cambios notables.

Lo resolví eliminando el app/builddirectorio y dejé que Gradle construyera todo el proyecto nuevo.


2
El mismo problema aquí al agregar una actividad para reemplazar la actividad principal. Hice una limpieza pero no funcionó. Gracias por esta solucion.
Climbatize

1
Además, intente limpiar la carpeta de compilación / aplicación en los proyectos de la biblioteca que puede incluir en su aplicación
Voy

1
Buen intento, pero no solucionó mi problema: /
Maxime T

1
arreglar mi problema Gracias
dian

1
Eliminar la carpeta de compilación es realmente útil.
bhavesh kaila

16

Debe verificar si el mismo JAR se está importando nuevamente. En mi caso, había una clase dentro de un frasco que se estaba importando en otro frasco. ¡Así que solo verifique si cualquier archivo lib / class se incluye dos veces en todo el proyecto!


1
Esto fue técnicamente correcto para mí, pero sucedió porque mis dependencias en el archivo build.gradle tenían la biblioteca de soporte de Android incluida dos veces con dos versiones diferentes después de agregar una nueva actividad al proyecto.
Josh

No había terminado cuando esto se resolvió, pero me guió por mi camino. Gracias.
Andreas Rudolph

Me resolvió un problema, pero nunca hubiera pensado en el problema de los JAR duplicados, por el mensaje de error. Había estado importando Volley como un módulo a nivel de proyecto, pero como quería poder cambiar entre compilar con AS y compilar con Cordova, configuré mi entorno para incorporar Volley como complemento de Cordova. Después de regenerar la plataforma en algún momento, recibí este mensaje de error. Su comentario sobre la importación de las mismas bibliotecas dos veces me hizo darme cuenta de que debería haber eliminado la configuración de 'Volley como biblioteca importada', así que gracias.
Mark Birbeck

4

Recibí el mismo tipo de error cuando intenté compilar un jar de biblioteca de utils en eclipse usando Java JRE 1.8, y lo usé en mi / libs / en Android Studio 1.1.0.

Tenía mi Android Studio configurado para usar JDK1.8.0.

Cambié mi Eclipse para que funcione con JRE 1.7 y se solucionó el error. Eclipse: Ventana-> Preferencias-> pestaña Java-> Compilador -> Nivel de cumplimiento 1.7. Lo más probable es que le pida que cambie su biblioteca del sistema JRE a jdk1.7.x_x.

Es posible que deba asegurarse de desmarcar 'comprimir jar' al exportar. No he probado si tuvo un efecto o no. Dudo que estuviera relacionado.


¡Gracias! Esto resolvió mi problema con Android Studio 1.4 y Gradle experimental-0.2.1;) Tuve que volver a JDK 1.7.1 aunque para solucionar completamente este problema
Stef

4

Yo también tuve el mismo problema. En mi caso, el problema comenzó después de reiniciar. Cerré mi aplicación, luego cerré Android Studio (en mi caso V1.1.0), y finalmente un apagado normal. Después de eso, modifiqué un archivo java para agregar un objeto RadioGroup y luego apareció el problema.

Resolví mi problema solo cambiando un simple '0' por un '1' en mi archivo de configuración de Gradle, porque la causa raíz del problema se generó en el proceso de ejecución de Gradle. Anteriormente solía tener la versión '1.0.0' y luego la cambié a '1.1.0', como se indica en las imágenes.

La ubicación de la configuración de Gradle ha cambiado La ubicación de la configuración de Gradle ha cambiado

Ubicación de donde tomé la versión correcta (Archivo -> Configuración -> Gradle -> Experimental Ubicación de la que tomé la versión correcta (Archivo -> Configuración -> Gradle -> Experimental


Cambiar a Gradle Toots versión 1.1.0 funcionó para mí. ¡Gracias!
kalan nawarathne

4

El problema NO se trata de Execution failed for task ':dexDebug'

si miras arriba el error mostrado en rojo vas a ver esto

ingrese la descripción de la imagen aquí

Para resolver este problema de forma permanente, simplemente agregue estas líneas en su build.gradlearchivo

android {
    dexOptions {
        jumboMode = true
    }
}

Para obtener más detalles, consulte esta pregunta: aquí


3

Asegúrese de que su archivo AndroidManifest contenga un nombre de paquete en el nodo de manifiesto. Establecer un nombre de paquete solucionó este problema para mí.


En mi caso, el nombre del paquete se duplicó en 2 subproyectos de biblioteca.
sasha_trn

3

Los usuarios de ANDROID STUDIO prueban esto: -

Debe agregar lo siguiente a las dependencias de su archivo gradle:

compile 'com.android.support:multidex:1.0.0'

Y luego agregue la siguiente línea (aplicación de soporte multidex) a la applicationetiqueta de su manifiesto :

android:name="android.support.multidex.MultiDexApplication"

2

Podría arreglar esto agregando

compile 'com.android.support:support-v4:18.0.0'

a las dependencias en vertretungsplan build.gradle, compile y luego elimine esta línea y compile nuevamente.

ahora funciona


¿Por qué 'v4: 18.0.0'? ¿Por qué no 'v4: +'
IgorGanapolsky

4
@IgorGanapolsky porque las versiones dinámicas en general conducen a resultados impredecibles.
AGA

1

Tuve el mismo problema, deberías hacer:

File -> Invalidate Caches / Restart


1

Tuve este problema porque intenté usar tanto la biblioteca de soporte como appcompat:

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile 'com.android.support:support-v4:23.1.0'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.google.android.gms:play-services:8.3.0'
}

Después de eliminar la biblioteca de soporte y cambiar a la versión anterior, compilé:

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    /*compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'*/
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.android.support:design:22.2.0'
    compile 'com.google.android.gms:play-services:8.3.0'
}

1

Tenía dos dependencias incompatibles.

Las siguientes dependencias provocaron el error.

compile 'com.google.android.gms:play-services-fitness:8.3.0'
compile 'com.google.android.gms:play-services-wearable:8.4.0'

Al cambiar la dependencia de fitness a la versión 8.4.0, pude ejecutar la aplicación.

compile 'com.google.android.gms:play-services-fitness:8.4.0'
compile 'com.google.android.gms:play-services-wearable:8.4.0'

0

Encontré un problema muy interesante con Android Studio y la actualización de mircrosoft al navegador web. Actualicé "estúpidamente" a la última versión de ie. por supuesto, Microsoft, en su infinita sabiduría, sabe exactamente qué hacer con la seguridad. Cuando intenté compilar mi aplicación, seguía recibiendo el error Gradle: falla de compilación: falla la ejecución de la tarea. mirando en la pila vi que no reconocía la ruta a java.exe. Me pareció extraño, ya que pude compilar el día anterior. Agregué JAVA_HOME a las variables de entorno del sistema, cerré Android Studio y lo volví a abrir. Baja y mira si la pantalla de la pared contra incendios no apareció preguntando si quería pasar todo jave.exe.

¡Qué racimo!


0

(Este podría ser el hilo incorrecto, ya que su problema parece más específico, pero es el hilo que encontré al buscar las palabras clave del problema)

A pesar de todos los buenos consejos, lo único que me ayudó, y que me gustaría compartir por si acaso, si todo lo demás no funciona:

Elimina tu directorio .gradle en tu directorio de inicio y haz que Android Studio lo reconstruya o lo descargue de nuevo.

Se corrigieron todo tipo de errores extraños para mí que no podían solucionarse reinstalando Android Studio ni el SDK.


0

Una razón puede ser bibliotecas duplicadas después de importar desde Eclipse IDE.

dependencies {
compile 'com.github.japgolly.android:svg-android:2.0.5'
compile 'com.google.android.gms:play-services:+'
compile 'com.android.support:appcompat-v7:21.0.3'
compile files('libs/androidannotations-api-2.7.1.jar')
compile files('libs/androidasync-2.1.2.jar')
//compile files('libs/google-play-services.jar')
compile files('libs/universal-image-loader-1.8.2.jar')}

Tuve el mismo problema, después del comentario:

//compile files('libs/google-play-services.jar')

La aplicación no tiene errores.


Debe eliminar los archivos jar locales de la carpeta libs y depender de los repositorios centrales.
WonderCsabo

0

Enfrenté el mismo problema. Resuelto haciendo esto. Vaya a actionbarsherlock -> configuración del módulo -> dependencias. Elimine la biblioteca de soporte v4. En la parte inferior izquierda hay un botón más, desde allí agregue 1 dependencia de biblioteca (seleccione soporte-v4). Deje que Gradle resincronice y limpie el proyecto una vez hecho.


0

Muchas de las respuestas aquí son de prueba y error para encontrar dependencias duplicadas, pero si se desplaza hacia arriba un poco desde la Execution failed for task ':app:dexDebug'.línea, le dará una pista sobre las duplicaciones.

error con una pista.

En mi caso tuve el siguiente error:

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define L/com/parse/AbstractQueryController$1;
...
...
...
Execution failed for task ':app:dexDebug'.

Entonces sabía que para corregir este error necesitaba encontrar las dependencias duplicadas que definen parse.AbstractQueryController

En mi caso, tenía dos módulos importados que se cargaban en dos bibliotecas Parse diferentes. Hacer que mi proyecto solo cargue uno solucionó mi problema.


0

También encontré este error cuando el paquete en uno de mis archivos de clase estaba mal escrito. Muchas de estas respuestas saltan inmediatamente a los archivos Jar, pero también comprobaría que sus paquetes estén escritos correctamente.


0

solo agrega build.gradle

compilar 'com.parse.bolts: bolts-android: 1. +'

compilar 'com.parse: parse-android: 1.11.0'

y sincronizar el proyecto con los archivos de Gradle, ingrese la descripción de la imagen aquí pero no agregar el tarro de análisis en las bibliotecas :) OKK


0

Si también está usando Daggero Butterknifedebería agregar guava como una dependencia a su build.gradlearchivo principal como classpath:

com.google.guava:guava:20.0

Por otro lado, si tiene problemas con un montón más grande para el demonio Gradle, puede aumentar la adición a su radlearchivo:

 dexOptions {
        javaMaxHeapSize "4g"
    } 


-1

Limpiar el proyecto usando Build in Menu Bar funciona para muchos escenarios de error en Android Studio y así es en este caso.


¿Tiene alguna información sobre por qué esto resolvería este problema?
Greg Bair

1
Porque de ninguna manera no puede excluir las bibliotecas en build.gradle y la solución aceptada también nos dice que eliminemos y agreguemos los archivos jar que no se pudieron compilar ... Entonces, no fueron esos archivos jar los que estaban causando problemas , estaban trabajando antes de que apareciera el problema y todavía lo están después de que lo resolví usando el método que mencioné, por lo que es un problema de compilación y el código no se compiló. Entonces, ¿cuál es la mejor manera cuando falla una compilación de limpiar el proyecto y reconstruirlo? ¡Gracias!
code4salvation

para la mayoría de las personas, este mensaje aparece si van a construir su proyecto. así que esto definitivamente no es una solución
maysi

1
Espero que lea la respuesta: es un error de compilación debido a que las dependencias no se compilan y, por lo tanto, aparecería solo cuando "compila el proyecto". Para mantenerse sincronizado con su Android Studio, asegúrese de actualizar Java a la última versión disponible porque es una historia diferente antes y después.
code4salvation
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.