La ejecución de Android Studio 3.0 falló para la tarea: no se pudo fusionar dex


85

Android Studio estaba obteniendo un error de compilación mientras se ejecutaba la compilación con lo siguiente:

Error: la ejecución falló para la tarea ': aplicación: transformDexArchiveWithExternalLibsDexMergerForDebug'. java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: No se puede fusionar dex "

Mi aplicación: archivo build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion '26.0.2'
    defaultConfig {
        applicationId "com.pdroid.foodieschoice"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.firebaseui:firebase-ui-auth:2.3.0'

    testCompile 'junit:junit:4.12'
}
configurations.all {
    resolutionStrategy {
        force 'com.android.support:appcompat-v7:26.0.1'
        force 'com.android.support:support-compat:26.0.1'
        force 'com.android.support:support-core-ui:26.0.1'
        force 'com.android.support:support-annotations:26.0.1'
        force 'com.android.support:recyclerview-v7:26.0.1'
    }
}

apply plugin: 'com.google.gms.google-services'

cualquier solución

Editar: terminé con la muestra a través del sitio de github de firebase y lo resolví


debe incluir soporte multiDex en su aplicación
Sudheesh R

e intente limpiar, reconstruir su proyecto
Sudheesh R

Le sugiero que edite su pregunta y publique el resultado completo de su consola Gradle, no solo esa línea. Los detalles de su problema se encuentran en otra parte del resultado.
CommonsWare

@CommonsWare he publicado mi error completo ... son solo dos líneas.
Anguraj

2
Intente deshabilitar la ejecución instantánea, limpie su proyecto y agregue android {defaultConfig {multiDexEnabled true}}
Tara

Respuestas:


65

Para el proyecto basado en Cordova, ejecútelo cordova clean androidantes de compilar nuevamente, como sugirió @mkimmet .


1
Alguien, por favor, marque esta respuesta correctamente. Resuelve el problema.
pamekar

1
Para mí, la instalación de 'cordova-plugin-androidx' y 'cordova-plugin-androidx-adapter' solucionó el problema
ssz

57

Este error ocurre cuando agrega una biblioteca externa que puede no ser compatible con su compileSdkVersion.

Tenga cuidado al agregar un external library.

Pasé 2 días en este problema y finalmente se resolvió siguiendo estos pasos.

  • Asegúrese de que todas sus bibliotecas de soporte sean las mismas que las compileSdkVersionsuyas build.gradle(Module:app)en mi caso 26.ingrese la descripción de la imagen aquí

  • En su categoría defaultConfig, escriba multiDexEnabled true . Esta es la parte importante.imagen verdadera multiDexEnabled

  • Ir a Archivo | Configuraciones | Construcción, ejecución, implementación | Ejecutar instantánea y tratar de Activar / Desactivar instantánea Ejecutar para intercambio en caliente ... y haga clic bien Habilitar ejecución instantánea para intercambio en caliente ... Imagen

  • Sync Tu proyecto.

  • Por último, vaya a Construir | haga clic en Reconstruir proyecto .

  • Nota: Rebuild Project primero limpia y luego construye el proyecto.


me ayuda, gracias.
Sumit Saxena

Me alegro de escuchar eso. Feliz Androiding.
Niamatullah Bakhshi

1
@YajliMaclo ¡genial!
Niamatullah Bakhshi

47

Intenta agregar esto en gradle

    android {
      defaultConfig {
        multiDexEnabled true
        }
   }

¿Intentaste invalidar el caché en Android Studio? @Anguraj
Ishan Fernando

No es el único paso para habilitar multidex. Tampoco es necesario en los niveles de API más nuevos
OneCricketeer

25

Resolución:

Consulte este enlace : Como hay varias opciones para apagar la advertencia según la minSdkVersion, se establece por debajo de 20 :

 android {
     defaultConfig {
         ...
         minSdkVersion 15 
         targetSdkVersion 26
         multiDexEnabled true
     }
     ... }

 dependencies {   compile 'com.android.support:multidex:1.0.3' }

Si tiene una minSdkVersion mayor que 20 en su conjunto build.gradle, use lo siguiente para apagar la advertencia:

  android {
      defaultConfig {
          ...
          minSdkVersion 21 
          targetSdkVersion 26
          multiDexEnabled true
      }
      ... }

Actualice las dependencias de la siguiente manera:

     dependencies {
        implementation 'com.android.support:multidex:1.0.3'
     }

Nuevamente, la única diferencia son las palabras clave en las dependencias:

minSdkVersion por debajo de 20: use compilar

minSdkVersion por encima de 20: implementación de uso

  1. Espero que esto haya sido útil. Vota si resolvió tu problema. Gracias por tu tiempo
  2. Además, para obtener más información sobre por qué ocurre esto , lea el primer párrafo del enlace, que explicará detalladamente por qué. y qué significa esta advertencia.

24

Simplemente intente hacer un "Proyecto -> Limpiar". Eso me resolvió el problema.


5
Gracias, esto funcionó para mí en un proyecto Ionic / Cordova al ejecutar cordova clean android mientras que también tenía instalado el complemento cordova-android-support-gradle-release.
mkimmet

¡Me encanta cuando algo simple arregla las cosas! ¡Gracias!
tonejac

Esto me solucionó cuando trabajaba con React Native.
Michael Auderer

Gracias, es la solución más fácil para este problema, pasé mis 3 días para resolver este problema y tu respuesta resuelve todos mis problemas. Una vez más gracias hermano!
gautamsinh mori

Gracias. Me ayudó en Android Studio 4.1. Salvó mi día.
Atif

7

Para mi, agregando

multiDexEnabled true

y

packagingOptions {
        exclude 'META-INF/NOTICE' 
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/notice'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license'
        exclude 'META-INF/license.txt'
    }

en el archivo Build.gradle de nivel de aplicación resolvió el problema


5

Vaya a su build.gradlearchivo de nivel de módulo y agregue las siguientes líneas al código

    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 28
        multiDexEnabled true
    }
    ...
}

dependencies {
  implementation 'com.android.support:multidex:1.0.3'
}

Eso resolvió el problema fácilmente. Consulta esta documentación


4

Utilice multiDexEnabled true como se muestra a continuación.

{
 minSdkVersion 17
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}

y

implementation 'com.android.support:multidex:1.0.3'

esta solución funcionó para mí.


4

Probé muchas soluciones como se mencionó anteriormente, incluido el multiDexEnabled true, pero nada de eso funcionó para mí.

Aquí está la solución que funcionó para mí: copie este código en el archivo app \ build.gradle

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support' && requested.name != 'multidex') {
            details.useVersion "${rootProject.ext.supportLibVersion}"
        }
    }
}

Asegúrese de ejecutar gradlew clean antes de ejecutar el código


Cambié minSdkVersion, es suficiente
Mr Special

2

A mí me pasó lo mismo, me di cuenta de que estaba en medio de la actualización a AS 3.0.1 y después de actualizar, limpiar y reconstruir la aplicación, todo quedó arreglado.


2

Para mí, lo que solucionó este error fue cambiar una línea en las dependencias de gradle de mi aplicación.

de esto :

compile('com.google.android.gms:play-services-gcm:+') {
    force = true
}

A esto :

compile('com.google.android.gms:play-services-gcm:11.8.0') {
    force = true
}

Solo eso funcionó para mí. No necesité agregar force = true
Paulo Linhares - Packapps

1

También asegúrese de que su aplicación esté subclasificando MultiDexApplication

import android.support.multidex.MultiDexApplication

class App : MultiDexApplication()

o si no está subclasificando la clase Application, agréguela a AndroidManifest.xml

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

0

¿Está entre actualizaciones de la plataforma o del SDK? Si es así, complételos por completo y luego intente continuar. Normalmente actualizo los paquetes individuales que deben actualizarse para tomar la actualización completa, que a veces puede llegar a 2.5 GB. Hacer esta actualización completa a veces falla. Tuve varias actualizaciones de SDK una vez que actualicé a Android Studio 3.0 y recibí el error anterior porque no se habían actualizado todos los paquetes. Una vez que actualicé todos los paquetes, el error anterior desapareció.


¿Espero que haya borrado o invalidado su caché y haya reiniciado Android Studio? Para mí, Android Studio 3 parece estar lleno de errores en comparación con las versiones anteriores.
Vineet Jain

¿Alguien ha arreglado esto? ¡No puedo superarlo!
68060

0

En mi caso, cambiar la versión de la biblioteca de firebase de 2.6.0 a 2.4.2 solucionó el problema


0

Para mí, el problema fue el uso de Java 1.8 en un módulo, pero no en el módulo de la aplicación. Agregué esto a la compilación de la aplicación gradle y trabajé:

android{
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

0

El mismo problema. He habilitado multidex: defaultConfig {applicationId "xxx.xxx.xxxx" minSdkVersion 24 targetSdkVersion 26 multiDexEnabled true

He borrado el caché, ejecuté gradle clean, reconstruí, hice, intenté asegurarme de que no haya conflictos en las bibliotecas importadas (eliminé todas las dependencias transitivas) y realicé todas las actualizaciones. Todavía:

Error: la ejecución falló para la tarea ': aplicación: transformDexArchiveWithExternalLibsDexMergerForDebug'. java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: no se puede fusionar dex

Resulta que a la compilación no le gustó: implementación 'org.slf4j: slf4j-android: 1.7.21'


0

Cuando la versión de Android Studio es 3.0.1, la versión de Gradle es 4.1 y Android PluginVersion es 3.0.0, encontrará este problema. Luego bajé la versión de Gradle a 3.3, Android Android es cero, no hay tal problema.


0

Tuve esto cuando la versión del SDK solicitada no coincidía con las dependencias. Puede hacer clic en la línea resaltada y arreglar esto haciendo clic en la bombilla roja. No es necesario encontrar la versión real, simplemente deje que el IDE lo descubra por usted. Y agregue el repositorio de Google a la configuración de Maven.


0

Recibí el mismo error y, en mi caso, el error se resolvió cuando solucioné un error de compilación que estaba asociado con una variante de compilación diferente a la que estaba construyendo actualmente.

Estaba construyendo la variante de compilación que estaba viendo bien sin errores, pero intentar depurar causó un app:transformDexArchiveWithExternalLibsDexMergerForDebugerror. Una vez que cambié para compilar la otra variante de compilación, detecté mi error en el proceso de compilación y lo solucioné. Esto pareció resolver mi app:transformDexArchiveWithExternalLibsDexMergerForDebugproblema para todas las variantes de compilación.

Tenga en cuenta que este error no estaba dentro del módulo externo al que se hace referencia, sino dentro de un conjunto de fuentes distinto de una variante de compilación que hace referencia a un módulo externo. ¡Espero que sea útil para alguien que pueda estar viendo el mismo caso que yo!


0

He hecho y solucioné este problema simplemente haciendo estos trabajos en mi código

Abrir -> build.gradle Cambiar valor de

compile 'com.google.code.gson:gson:2.6.1'

a

compile 'com.google.code.gson:gson:2.8.2'

0

Para eliminar este problema de Dex, simplemente implemente una dependencia. Este problema ocurre cuando usamos varios servicios diferentes del mismo servidor. Supongamos que estamos usando anuncios y Firestore en un proyecto y ambos tienen un experto en repositorios. por lo que necesitamos llamar a diferentes datos con un repositorio, necesitamos la dependencia dex para implementar. La nueva dependencia de actualización: -

 implementation 'com.android.support:multidex:1.0.3'

Estoy seguro de que resolverá tu problema de forma permanente


es una dependencia ponerlo en gradle
Pradeep Sheoran

0
1) Agregue multiDexEnabled verdadero
2) si obtiene un error de compilación, verifique el nivel de aplicación build.gradle si las mismas dependencias están implementadas con diferentes versiones.
3) Elimine uno si encuentra las mismas dependencias.

android {compileSdkVersion 28 defaultConfig {

    minSdkVersion 17
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}
espero que funcione bien :) Codificación feliz

0

La forma más sencilla de evitar errores de succión es:

-Cambiar la biblioteca combilesdkversion de la misma forma que su aplicación compilesdkversion

-Cambiar la versión supportLibrary de la biblioteca de la misma manera que su build.gradle (aplicación)


0

Esto es lo que me funciona. limpiar, preparar y ejecutar.

cordova clean android;
ionic cordova prepare andriod;
ionic cordova run andriod;

Espero eso ayude.



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.