No se puede fusionar dex


307

Tengo Android Studio Beta. Creé un nuevo proyecto con la compilación de mis módulos anteriores, pero cuando intenté iniciar la aplicación, no se lanzó con el mensaje:

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.

com.android.builder.dexing.DexArchiveMergerException: no se puede combinar dex

Pero no sé cómo resolver este error. Busqué en Google esto durante horas pero sin éxito.

Mi proyecto gradle:

    // Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-beta6'
        classpath "io.realm:realm-gradle-plugin:3.7.1"
        classpath 'com.google.gms:google-services:3.1.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        google()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Mi aplicación gradle:

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "parad0x.sk.onlyforyou"
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
        }
    }
    compileOptions {
        targetCompatibility 1.7
        sourceCompatibility 1.7
    }
    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }
    lintOptions {
        checkReleaseBuilds false
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    //noinspection GradleCompatible
    compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
    compile project(path: ':loginregisterview')


}

Y mi módulo gradle:

    apply plugin: 'com.android.library'
apply plugin: 'realm-android'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"

    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 26
        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:appcompat-v7:26.0.2'
    compile 'com.android.support:support-v4:26.1.0'
    compile 'com.github.bumptech.glide:glide:4.0.0'
    testCompile 'junit:junit:4.12'
    compile project(path: ':parser')

}

Mi segundo modulo:

     apply plugin: 'com.android.library'
apply plugin: 'realm-android'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    realm {
        syncEnabled = true
    }
    useLibrary 'org.apache.http.legacy'

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile 'junit:junit:4.12'
    //  compile 'com.android.support:appcompat-v7:23.1.0'

    //   compile 'com.fasterxml.jackson.core:jackson-core:2.9.0'
 //   compile 'com.fasterxml.jackson.core:jackson-annotations:2.9.0'
 //   compile 'com.fasterxml.jackson.core:jackson-databind:2.9.0'
    compile 'com.google.code.gson:gson:2.6.2'
}

____________hallazgo_________

Cuando no importé el segundo módulo (analizador), la aplicación no se bloqueó en dex, pero cuando el módulo no se importó, la aplicación no funcionó. : D: D


66
Si alguien tiene el mismo problema en la versión estable de Android Studio 3.0, le recomiendo que revise la respuesta stackoverflow.com/questions/46949761/… y vea si puede ayudarlo.
Bhavesh Patadiya

1
Tuve el mismo problema y seguí todos los métodos que se mencionan en esta página, pero no me ayudaron, así que voy al gradle y mantengo el cursor en cada biblioteca para verificar que su nueva versión esté disponible o no. aquellos que tienen nueva versión, así que actualicé, sincronicé gradle y ejecuté funcionó.
Shahzad Afridi

Respuestas:


293

Tuve el mismo problema cuando actualizo de com.google.android.gms:play-services:11.2.2a com.google.android.gms:play-services:11.4.0. Esto lo resolvió para mí:

  1. limpiar
  2. reconstruir

Solo retrasas el problema real con esa solución. probablemente la versión 11.4.0 contiene menos métodos. Vea mi respuesta a continuación. se le dio este mensaje en la siguiente dependencia va a añadir supongo
Itzhar

2
Esto resuelve mi problema, donde multiDexEnabled truesolo no lo hizo
Yuri Brigance

28
mismo isse con com.google.android.gms: play-services-location: 11.6.0 ... esta no es una solución válida
issamux

3
Esta solución funcionó para mí cuando tuve un problema de compatibilidad al usar las bibliotecas de Google Analytics. En AS vea el panel del navegador de proyectos de Android como "Proyecto", debería ver "Bibliotecas externas", si expande las bibliotecas externas, verá todos los archivos jar y módulos utilizados para compilar el proyecto. Debería ayudarlo a identificar combinaciones de módulos incompatibles.
angryITguy

3
Si el código anterior no funciona en el caso de "compileSdkVersion 26", intente esto ... vaya a - build.gradle (Módulo: aplicación) - agregue "multiDexEnabled true" en la categoría defaultConfig y el último paso Vaya a Archivo | Configuraciones | Construcción, Ejecución, Implementación | Ejecutar instantánea y tratar de activar / desactivar
Sumit Saxena

325

Intenté todo lo anterior y ninguno de ellos ayuda. Finalmente, encuentro este trabajo para mí:

app / build.gradle:

android {
    defaultConfig {
       multiDexEnabled true
    }
}

11
Gracias. Creo que el problema era que la mayoría de las respuestas no tienen en cuenta la inclusión de archivos JAR de otras fuentes que no puede reconstruir. multiDex parece permitir la combinación del código incompatible.
Brendon Whateley

2
Esta solución funcionó para mí, pero además, tuve que habilitar explícitamente multidex para API <= 21 developer.android.com/studio/build/multidex.html
hamou92

2
DEspite es más relevante que la respuesta aceptada Todavía recibo el mensaje "No se puede fusionar dex"
Juan

13
No funciono para mi. Con este cambio obtuve un error diferente: Error de ejecución para la tarea ': aplicación: transformClassesWithMultidexlistForDebug
Atul

1
Sí, durante 5 horas estuve viviendo con respuestas totalmente diferentes. Pero de alguna manera me di cuenta de que era un problema de Multidex y aterricé aquí. Yo era verdad Gracias hombre
sud007

59

¡Presta atención a las advertencias!

A veces solo necesita eliminar las advertencias y el error desaparecerá automáticamente. Ver abajo caso especial:


Tenía estas dos dependencias en mi build.gradlearchivo de nivel de módulo :

implementation 'com.android.support:appcompat-v7:27.0.2'
implementation 'com.android.support:recyclerview-v7:27.0.2'

y Studio había advertido ( además del problema de fusión de dex ):

Todas las com.android.supportbibliotecas deben usar exactamente la misma especificación de versión (mezclar versiones puede provocar fallas en el tiempo de ejecución). Versiones encontradas 27.0.2, 21.0.3. Los ejemplos incluyen com.android.support:animated-vector-drawable:27.0.2ycom.android.support:support-v4:21.0.3

Así que determiné explícitamente la versión decom.android.support:support-v4 (vea aquí para más detalles) y ambos problemas (la advertencia y el relacionado con la fusión de dex) se resolvieron :

implementation 'com.android.support:support-v4:27.0.2'  // Added this line (according to above warning message)
implementation 'com.android.support:appcompat-v7:27.0.2'
implementation 'com.android.support:recyclerview-v7:27.0.2'

Vea los comentarios a continuación para otras situaciones similares.


1
Gracias, esto solucionó el problema para mí. Originalmente fue causado al agregar eu.inloop: androidviewmodel: 1.3.4
lsrom

1
Exactamente, solo desearía que el error pudiera haber sido más preciso
Amin Keshavarzian

1
Muchas gracias. Tuve el mismo problema. Estaba usando v26, actualizado a SDK 27 y resolvió el problema.
Johnny

2
Esta debería ser la respuesta correcta. Mis compilaciones dejaron de funcionar después de agregar una biblioteca (airbnb / epoxy) que tenía una dependencia support:design:26.1.0, y aún no tenía esa dependencia. La versión de mis otras bibliotecas de soporte fue 27.1.0. Después de agregar support:designdependencia con la 27.1.0versión, mi problema se resolvió.
alashow

2
Gracias. Me salvas el día.
Nithinjith

37

En mi caso, desafortunadamente, ni las soluciones de Michel ni de Suragch funcionaron para mí.

Así que resolví este problema haciendo lo siguiente:

En gradle: 3.0, la configuración de compilación ahora está en desuso y debe reemplazarse por implementación o api . Para obtener más información, puede leer aquí Puede leer los documentos oficiales en Gradle Build Tool

La configuración de compilación todavía existe, pero no debe utilizarse, ya que no ofrecerá las garantías que proporcionan la API y las configuraciones de implementación.

es mejor usar implementación o api en lugar de compilar

simplemente reemplace compilar con implementación , debugCompile con debugImplementation , testCompile con testImplementation y androidtestcompile con androidTestImplementation

Por ejemplo: en lugar de esto

compile 'com.android.support:appcompat-v7:26.0.2'
compile 'com.android.support:support-v4:26.1.0'
compile 'com.github.bumptech.glide:glide:4.0.0'

usar así

implementation 'com.android.support:appcompat-v7:26.0.2'
implementation 'com.android.support:support-v4:26.1.0'
implementation 'com.github.bumptech.glide:glide:4.0.0'

Después de esto

  • Elimine la carpeta .gradle dentro de su proyecto (tenga en cuenta que, para ver .gradle, debe cambiar a la vista "Proyecto" en el navegador en la parte superior izquierda)
  • Elimine todas las carpetas de compilación y el caché de gradle.
  • Desde el menú Generar, presione el botón Limpiar proyecto .
  • Después de completar la tarea, presione el botón Reconstruir proyecto en el menú Generar.

Espero que ayude!


2
Gracias, todo lo que tuve que hacer fue cambiar la compilación a la implementación y se construyó con éxito, no tuve que completar los otros pasos. La compilación comenzó a fallar después de que actualicé el SDK de Facebook
Shayno

2
Funcionó para mí, ¿por qué?
Alex

1
La carpeta para eliminar debe ser .gradley no./gradle
Gary Bak

1
La única respuesta que realmente funcionó para mí. ¡Gracias!
Michael Richardson

1
Gracias, es la mejor respuesta. Debería estar en la parte superior de la búsqueda. Trabajó para mi.
Peligro

27
  1. Eliminar el .gradledirectorio.

  2. Ejecute su aplicación nuevamente.

Notas

  • El .gradledirectorio está en la carpeta raíz de su proyecto. (Es posible que primero tenga que mostrar los archivos ocultos).
  • Tengo que hacer esto cada vez que actualizo un módulo de dependencia con Android 3.0. (Las versiones más recientes de Android Studio 3 parecen haber resuelto el problema).

44
esto me ayudó cuando también hice una caché de invalidación y reinicio
Vasili Fedotov

Yo estaba en incredulidad cuando esto esté arreglado mi problema .. i había intentado actualizar todo, la eliminación de todas las palabras clave de compilación, la actualización de algunas de las versiones de ILB sospechosos .. cuando finalmente lo hice, funcionó ..
hanzolo

¡Me has salvado la vida! Gracias
Masterfego

24

Eliminar .gradlecomo lo sugirió Suragch no fue suficiente para mí. Además, tuve que realizar a Build > Clean Project.

Tenga en cuenta que, para ver .gradle, debe cambiar a la vista "Proyecto" en el navegador en la parte superior izquierda:

Cambiar a vista de proyecto


23

Intenté con cualquier otra solución, pero nadie trabajó para mí. Al final, lo resolví usando la misma versión de dependencia editando build.gradle. Creo que este problema se produce al agregar una biblioteca a gradle que utiliza diferentes versiones de soporte o bibliotecas de google.

Agregue el siguiente código a su archivo de construcción gradle. Luego cleany rebuildproyecto.

ps: esa era una solución antigua para mí, por lo que debe usar la versión actualizada de las siguientes bibliotecas.

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == 'com.android.support') {
        if (!requested.name.startsWith("multidex")) {
            details.useVersion '26.1.0'
        }
    } else if (requested.group == "com.google.android.gms") {
        details.useVersion '11.8.0'
        } else if (requested.group == "com.google.firebase") {
            details.useVersion '11.8.0'
          }
      }
}

55
Probé todas las demás soluciones, al final solo esto ayudó: /
Ante

@Ali Gurelli Muchas gracias, probé muchas soluciones, pero solo esto funciona.
Bipin Bharti

Gracias, pero para mí uso Detalles de la versión. UseVersion '15 .0.0 '
Elsunhoty

Gracias por la solucion. El mismo problema me pasó a mí. Google Tap and Pay fue 10.0.0 y el resto de las bibliotecas están en la última versión
R World

Trabajó sin problemas Gracias
Sankalp

14

si (1. Intenta limpiar y reconstruir el trabajo) entonces bueno

si no (2. Intente eliminar el trabajo de gradle) entonces bueno

else-> 3. Intente agregar en grade.properties

android.enableD8 = false

else-> 4. Agregue multiDexEnabledtrue a su build.gradle

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

y agregue la dependencia

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

Puede que el primero funcione para usted y así sucesivamente, pero realmente depende de la naturaleza de su problema para mí, por ejemplo

Recibí el error una vez que agregué esta biblioteca

implementation 'com.jjoe64:graphview:4.2.2'

y luego descubrí que tengo que verificar eso y tengo que agregar la misma versión de las bibliotecas de soporte. Entonces tengo que probar otra versión

compile 'com.jjoe64:graphview:4.2.1'

Y soluciona el problema. Así que presta atención a eso.


3
La forma más útil para este problema. Una que quiero mencionar aquí es que puede usar la aplicación 'gradlew: transformDexArchiveWithExternalLibsDexMergerForDebug --stacktrace' cmd para obtener más detalles. Me salvó, descubrí que tengo que habilitar multidex. Espero que sea útil.
panda

13

En mi caso, el problema se debió a la biblioteca de la sala:

compile 'android.arch.persistence.room:runtime:1.0.0-alpha1'

Cambiándolo a:

compile 'android.arch.persistence.room:runtime:1.0.0'

trabajó.


¡Muchas gracias, esto me ayudó mucho!
Phil

Muy contento de encontrar esta respuesta. ¡Gracias!
callOfCode

12

Solo para agregar a las soluciones anteriores:

Asegúrese de no tener dependencias duplicadas que apunten a diferentes versiones de ellas, en varios lugares (o incluso en el mismo archivo).


Creo que esto debería verificarse primero antes de agregar multiDexEnabled true y probar otras respuestas. ¡Gracias!
Aleksandr A

11

Hola, tengo el mismo problema, probé casi todo. Entonces, finalmente resolví después de una lucha de 6 horas depurando todo línea por línea.

classpath 'com.google.gms:google-services:3.0.0'

Google-services 3.0 no es compatible con firebase con Studio 3.0 con playServiceVersion: 11.6.0 o menos.

implementation "com.google.firebase:firebase-messaging:$rootProject.ext.playServiceVersion"
implementation "com.google.firebase:firebase-core:$rootProject.ext.playServiceVersion"
implementation "com.firebase:firebase-jobdispatcher-with-gcm-dep:$rootProject.ext.jobdispatcherVersion"

Solución:

He cambiado los servicios de google a

classpath 'com.google.gms:google-services:3.1.1'

Y es compatible con los servicios de Firebase.

Esperemos que alguien ahorre su tiempo.


1
Tengo el mismo problema que estaba usando playServiceVersion como implementación 11.4.0 "com.google.firebase: firebase-core: 11.4.0" cámbielo a implementación "com.google.firebase: firebase-core: 11.6.2" solucionó mi problema . Entonces, verifique la dependencia de la versión para diferentes lib
durgeshtrivedi

9
  1. Habilitar

    defaultConfig {multiDexEnabled true}

  2. Si el paso 1 no funciona, entonces

    Vaya a la estructura del proyecto y descubra la biblioteca externa que está utilizando una versión diferente. Haga doble clic en él y elimine su archivo jar. Cierre el proyecto y vuelva a abrir Android Studio reconstruirá el proyecto. El problema debería desaparecer.


+1: tenía el soporte lib, rxjava y una dependencia de terceros (13k líneas). Casi se me salieron los ojos cuando vi que el método contaba.
snodnipper

6

Una de las posibilidades es: la presencia de la misma biblioteca pero con diferentes versiones en las dependencias .

Tuve este problema con las siguientes líneas en el archivo gradle:

  • compile fileTree(include: ['*.jar'], dir: 'libs')
  • compile 'com.google.code.gson:gson:2.8.2'

La biblioteca gson estaba en mi directorio libs pero con una versión anterior. Eliminé el gson-2.3.1.jardel directorio libs y todo volvió a la normalidad.


eliminación compile fileTree(include: ['*.jar'], dir: 'libs')arreglado para mí también .. gracias (y)
Dinuka Salwathura

5

Si apareció este error después de incluir el soporte de kotlin, y ninguna de las otras soluciones funciona, intente cambiar la dependencia de kotlin de los módulos de la aplicación build.gradlea:

implementation ("org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version") {
    exclude group: 'org.jetbrains', module: 'annotations'
}

Esto funciona para mí en Android Studio 3.0 Beta 6. Consulte esta respuesta para obtener más explicaciones.


Sí, parece que la introducción de Kotlin podría romper la compilación si no se excluyen las anotaciones.
Stoycho Andreev

Gracias. Esta fue la solución para mí. Lucho 3 días para identificar mi problema.
Naveen Kumar M

Intente actualizar a Kotlin plugin versión 1.2.30 en su lugar (recién lanzado). ¡Ahora Instant Run también se puede habilitar de nuevo!
KTCO


5

[NO SE PUEDE MEZCLAR DEX SOLUCIONADO] Después de horas de desbordamiento de la pila, resolví el "ERROR DE NO SE PUEDE MEZCLAR"

  1. Actualice todas las líneas com.android.support en su gradle a v27.1.0

Causa: Android ha actualizado sus bibliotecas de soporte a v27.1.0, por lo que debe cambiar todas las líneas de soporte de Android en su archivo gradle a 27.1.0 de 26.1.0

  1. Asegúrese de que la sección de repositorios incluya una sección de Maven con el punto final " https://maven.google.com ". Por ejemplo:

    todos los proyectos {repositorios {jcenter () maven {url " https://maven.google.com "}}}

Causa: - Android no puede actualizar las bibliotecas de soporte en el administrador de SDK y ahora usa maven.google.com para actualizar, por lo que debe incluir esto para usar las bibliotecas de soporte 27.1.0

Después de cambiar la versión: 1. Proyecto limpio 2. Proyecto de reconstrucción


4

agregue comandos a continuación:

android {
...

    dexOptions {

        jumboMode true
        javaMaxHeapSize "4g"

    }
}

4

Instalación de los servicios de Google Play (última versión) + incluyendo

android {
    defaultConfig {
        multiDexEnabled true
        }
}

en build.gradle me resolvió el problema, ¡asegúrese de limpiar y reconstruir el proyecto!


3

En mi caso fue gson-2.8.1.jar que he agregado a la carpeta libs del proyecto. Pero la referencia ya estaba allí por SDK. Por lo tanto, no era necesario agregar gson-2.8.1.jar a la carpeta libs.

Cuando lo saqué, el proyecto gson-2.8.1.jar se compila sin este error errado.

Intente revisar la carpeta y las dependencias de libs .


3

Estoy de acuerdo con Chris-Jr. Si está utilizando Firebase para incrustar sus anuncios de AdMob (o incluso si no lo está), play-services-analytics incluye play-services-ads aunque no lo agregue como una dependencia. Obviamente, Google ha cometido un error en su implementación 11.4.0, ya que el análisis incluye la versión 10.0.1 de los anuncios, no la 11.4.0 (el mouse sobre la pista en el gradle lo muestra).

Agregué manualmente la compilación 'com.google.android.gms: play-services-ads: 11.4.0' en la parte superior que funcionó, pero solo después de deshabilitar Instant Run: http://stackoverflow.com/a/35169716/530047

Por lo tanto, puede retroceder a 10.0.1 o agregar los anuncios y desactivar la ejecución instantánea. Eso es lo que encontré si ayuda.


¿OP mencionó Play Services?
IgorGanapolsky

La respuesta aprobada lo hizo. Si este problema está surgiendo sin ese escenario, ¡no lo sé!
Jonathan

2

Encontré el mismo problema y encontré la verdadera razón de mi caso. Anteriormente, también probé todas las respuestas anteriores nuevamente, pero no resolvió el problema. Tengo dos módulos en mi proyecto de aplicación de desgaste, y el build.gradle de la siguiente manera:

desgaste del módulo build.gradle:

implementation project(':common')
implementation files('libs/farmer-motion-1.0.jar')

módulo común build.gradle:

implementation files('libs/farmer-motion-1.0.jar')

Antes de actualizar a gradle 3.x, 'implementación' son todas 'compiladas'.

Ejecuto gradlew con la opción --stacktrace para obtener el seguimiento de la pila, puede hacer clic en esto en la ventana de la consola de gradle cuando surja este problema. Y descubrí que la dependencia del paquete jar repite:

Caused by: com.android.dex.DexException: Multiple dex files define Lcom/farmer/motion/common/data/pojo/SportSummary$2;

Class SportSummary en el paquete farmer-motion-1.0.jar, después de leer la guía oficial de migración , cambié mi build.gradle a lo siguiente:

desgaste del módulo build.gradle:

implementation project(':common')
// delete dependency implementation files('libs/farmer-motion-1.0.jar')

módulo común 的 build.gradle:

api files('libs/farmer-motion-1.0.jar') // change implementation to api

Ahora el módulo de desgaste tendrá la dependencia de la exportación de granjero-motion-1.0.jar por módulo común. Si no hay dependencia del paquete jar durante el tiempo de ejecución , la dependencia ' implementación ' del paquete jar también se puede cambiar a 'compileOnly' .


2

También tuve el problema.

Pude resolver cambiando compileSdkVersiony targetSdkVersiona la última versión.


2

Para nuestro proyecto, agregamos accidentalmente el mismo jar dos veces con un nombre diferente. Eliminar uno de ellos resolvió el problema.


Esto resolvió mi problema. Estaba construyendo un proyecto interno de biblioteca de Android y debajo de su libscarpeta, tenía dos archivos jar, uno de los cuales es solo una copia de seguridad del otro pero con un nombre de archivo diferente.
hopia

2

Puede que este no sea su problema, pero recibí este error cuando accidentalmente incluí dos bibliotecas idénticas (pero con nombres diferentes) en la sección de dependencias {} del proyecto.


1

Para mí, estaba actualizando la mensajería firebase en app \ build.gradle:

compile 'com.google.firebase:firebase-messaging:10.0.1'

a

compile 'com.google.firebase:firebase-messaging:11.4.2'

1

Una de las posibles causas raíz: dependencias transitorias duplicadas que no fueron manejadas adecuadamente por la importación de proyectos de múltiples módulos de Android Studio. Revise su lista y elimínelos. Para mí, la solución fue literalmente esto:

--- a/project/module/build.gradle
+++ b/project/module/build.gradle
@@ -21,5 +21,4 @@ android {
 dependencies {
     implementation project(':upstream-dependency-project')
     implementation 'com.android.support:support-v4:18.0.0'
-    implementation files('libs/slf4j-android-1.6.1-RC1.jar')
 }

1

Descubro la razón de este problema para mi proyecto. Me agregaron una dependencia dos veces en build.gradle . Una vez agregando dependencia y otra vez agregando dependencia jar:

compile 'org.achartengine: achartengine: 1.2.0'
...
archivos de implementación ('../ achartengine-1.2.0.jar')

Después de eliminar el problema de la primera línea resuelto.


1

En caso de que las principales respuestas no le hayan funcionado, su problema puede ser que tenga varias dependencias que dependan de la misma biblioteca.

Aquí hay algunos consejos de depuración. En este código de muestra, com.google.code.findbugs:jsr305:3.0.0es la biblioteca infractora.

¡Siempre limpie y reconstruya cada vez que modifique para verificar su solución!

  1. Construya con la --stacktracebandera encendida para obtener más detalles. Se quejará de una clase, Google esa clase para encontrar la biblioteca. Así es como puedes configurar Android Studio para que siempre se ejecute gradle con la --stacktracebandera .

  2. Eche un vistazo a Gradle Console en Android Studio View > Tool Windows > Gradle Consoledespués de una compilación

  3. Verifique las dependencias repetidas ejecutando ./gradlew -q app:dependencies. Puede volver a ejecutar esto cada vez que modifique su build.gradle.

  4. En build.gradle,

    android {
            ...
            configurations.all {
                resolutionStrategy {
                    // Force a particular version of the library 
                    // across all dependencies that have that dependency
                    force 'com.google.code.findbugs:jsr305:3.0.0'
                }
            }
    }
  5. En build.gradle,

    dependencies {
        ...
        implementation('com.google.auth:google-auth-library-oauth2-http:0.6.0') {
            // Exclude the library for this particular import
            exclude group: 'com.google.code.findbugs'
        }
    }
  6. En build.gradle,

    android {
        ...
        configurations.all {
            resolutionStrategy {
                // Completely exclude the library. Works for transitive
                // dependencies.
                exclude group: 'com.google.code.findbugs'
            }
        }
    }
  7. Si algunas de sus dependencias están en archivos jar, abra los archivos jar y vea si hay algún nombre de clase en conflicto. Si lo son, probablemente tendrá que reconstruir los frascos con nuevos nombres de clase o buscar sombreado .

Un poco más de lectura de fondo:


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

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

2
¿Podrías dar más detalles?
sg7

También tuve el mismo problema, pero me di cuenta de que resolvería mi problema en ese momento, pero en las actualizaciones futuras, las cosas podrían cambiar.
Eben Watts

1

En mi caso, una biblioteca causa este problema, la biblioteca se agregó correctamente al proyecto pero cuando ejecuto mi aplicación me muestra este error. Entonces, si esto le sucede a usted también, puede ir a github y verificar problemas o plantear un nuevo problema. Si no encuentra ninguna solución con respecto a la biblioteca, le sugiero que la reemplace.

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.