Impossibile unire dex


307

Ho Android Studio Beta. Ho creato un nuovo progetto con compilare i miei vecchi moduli ma quando ho provato ad avviare l'app non è stato avviato con il messaggio:

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

com.android.builder.dexing.DexArchiveMergerException: impossibile unire dex

Ma non so come risolvere questo errore. Ho cercato su Google per ore ma senza successo.

Grado del mio progetto:

    // 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
}

Grado della mia app:

    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')


}

E il mio modulo 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')

}

Il mio secondo 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'
}

____________finding_________

Quando non ho importato il secondo modulo (parser) l'app non si è arrestata in modo anomalo su Dex ma quando il modulo non è stato importato l'app non ha funzionato. : D: D


6
Se qualcuno riscontra lo stesso problema nella versione stabile di Android Studio 3.0, ti consiglio vivamente di rivedere la risposta stackoverflow.com/questions/46949761/… e vedere se può aiutarti.
Bhavesh Patadiya,

1
Ho avuto lo stesso problema e ho seguito tutti i metodi che sono menzionati in questa pagina ma non mi hanno aiutato, quindi vado al livello e tengo il cursore su ogni libreria per verificare che la loro nuova versione sia disponibile o meno. quelli che hanno una nuova versione così ho aggiornato, sincronizzato gradle ed eseguo. ha funzionato.
Shahzad Afridi,

Risposte:


293

Ho avuto lo stesso problema quando aggiorno da com.google.android.gms:play-services:11.2.2a com.google.android.gms:play-services:11.4.0. Questo mi ha risolto:

  1. pulito
  2. ricostruire

Ritardi solo il vero problema con quella soluzione. probabilmente la versione 11.4.0 contiene meno metodi. Vedi la mia risposta qui sotto. avrai questo errore nella prossima dipendenza che aggiungerai suppongo
itzhar

2
Questo risolve il mio problema, dove multiDexEnabled trueda solo non lo è stato
Yuri Brigance

28
stessa isse con com.google.android.gms: play-services-location: 11.6.0 ... questa non è una soluzione valida
issamux

3
Questa soluzione ha funzionato per me quando ho avuto un problema di compatibilità con le librerie di analisi di Google. In AS visualizzare il riquadro di navigazione del progetto Android come "Progetto", dovresti vedere "Librerie esterne", se espandi le librerie esterne, vedrai tutti i barattoli e i moduli utilizzati per compilare il progetto. Dovrebbe aiutarti a identificare combinazioni di moduli incompatibili.
angryITguy il

3
Se il codice precedente non funziona in caso di "compileSdkVersion 26", prova questo .. vai a - build.gradle (Modulo: app) - aggiungi "multiDexEnabled true" nella categoria defaultConfig e l'ultimo passaggio Vai a File | Impostazioni | Build, Execution, Deployment | Corri istantaneo e prova ad abilitare / disabilitare
Sumit Saxena

325

Ho provato tutto quanto sopra e nessuno di loro aiuta. finalmente trovo questo lavoro per me:

app / build.gradle:

android {
    defaultConfig {
       multiDexEnabled true
    }
}

11
Grazie. Penso che il problema sia che la maggior parte delle risposte non tiene conto dell'inclusione di file JAR da altre fonti che non è possibile ricostruire. multiDex sembra consentire la combinazione del codice altrimenti incompatibile.
Brendon Whateley,

2
Questa soluzione ha funzionato per me, ma in più, ho dovuto abilitare esplicitamente il multidex per API <= 21 developer.android.com/studio/build/multidex.html
hamou92

2
Nonostante sia più pertinente della risposta accettata, ricevo ancora il messaggio "Impossibile unire dex"
John,

13
Non ha funzionato per me. Con questa modifica ho ricevuto un errore diverso: Esecuzione non riuscita per l'attività ': app: transformClassesWithMultidexlistForDebug
Atul

1
Sì, per 5 ore ho vissuto con risposte totalmente diverse. Ma in qualche modo mi sono reso conto che era un problema Multidex e sono arrivato qui. Ero vero Grazie amico
sud007,

59

Presta attenzione agli Avvertimenti!

A volte è sufficiente eliminare gli avvisi e l' errore scompare automaticamente. Vedi sotto caso speciale:


Ho avuto queste due dipendenze nel mio build.gradlefile a livello di modulo :

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

e Studio aveva avvertito ( oltre al problema di fusione di Dex ):

Tutte le com.android.supportlibrerie devono utilizzare la stessa specifica di versione (il mixaggio delle versioni può causare arresti anomali del runtime). Versioni trovati 27.0.2, 21.0.3. Gli esempi includono com.android.support:animated-vector-drawable:27.0.2ecom.android.support:support-v4:21.0.3

Quindi ho esplicitamente determinato la versione dicom.android.support:support-v4 (vedi qui per i dettagli) ed entrambi i problemi (l'avvertimento e quello relativo alla fusione dex) risolti :

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'

Vedi sotto i commenti per altre situazioni simili.


1
Grazie, questo ha risolto il problema per me. È stato originariamente causato dall'aggiunta di eu.inloop: androidviewmodel: 1.3.4
da

1
Esattamente, vorrei solo che l'errore avrebbe potuto essere più preciso
Amin Keshavarzian,

1
Molte grazie. Ho avuto lo stesso problema. Stavo usando V26, aggiornato a SDK 27 e risolto il problema.
Johnny,

2
Questa dovrebbe essere la risposta corretta. Le mie build hanno smesso di funzionare dopo aver aggiunto una libreria (airbnb / epossidica) che aveva una dipendenza support:design:26.1.0, e non avevo ancora quella dipendenza. Le mie altre librerie di supporto erano la 27.1.0. Dopo aver aggiunto la support:designdipendenza con la 27.1.0versione, il mio problema è stato risolto.
alashow,

2
Grazie. Mi salvi la giornata.
Nithinjith,

37

Nel mio caso, purtroppo, né le soluzioni di Michel né Suragch hanno funzionato per me.

Quindi ho risolto questo problema nel modo seguente:

In gradle: 3.0 la configurazione di compilazione è ora obsoleta e dovrebbe essere sostituita da implementazione o api . Per maggiori informazioni puoi leggere qui Puoi leggere i documenti ufficiali su Gradle Build Tool

La configurazione di compilazione esiste ancora ma non dovrebbe essere utilizzata in quanto non offrirà le garanzie fornite dalle configurazioni di api e implementazione.

è meglio usare l' implementazione o API piuttosto che compilare

basta sostituire compilare con implementazione , debugCompilare con debugImplementation , testCompile con testImplementation e androidtestcompile con androidTestImplementation

Ad esempio: invece di questo

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'

usare così

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'

Dopo di che

  • Elimina la cartella .gradle all'interno del tuo progetto (tieni presente che, per visualizzare .gradle, devi passare alla vista "Progetto" nel navigatore in alto a sinistra)
  • Elimina tutte le cartelle di build e la cache gradle.
  • Dal menu Genera, premere il pulsante Clean Project .
  • Al termine dell'attività, premere il pulsante Ricostruisci progetto dal menu Genera.

Spero che ti aiuti!


2
Grazie, tutto quello che dovevo fare era modificare la compilazione in implementazione e costruita con successo, non dovevo completare gli altri passaggi. La build ha iniziato a fallire dopo aver aggiornato l'SDK di Facebook
Shayno il

2
Ha funzionato per me - approfondimenti sul perché?
Alex,

1
La cartella da eliminare dovrebbe essere .gradlee non./gradle
Gary Bak

1
L'unica risposta che ha funzionato davvero per me. Grazie!
Michael Richardson,

1
Grazie, è la risposta più interessante. Dovrebbe essere in cima alla ricerca. Ha funzionato per me.
Pericolo

27
  1. Elimina la .gradledirectory.

  2. Esegui di nuovo la tua app.

Appunti

  • La .gradledirectory si trova nella cartella principale del progetto. (Potrebbe essere necessario mostrare prima i file nascosti.)
  • Devo farlo ogni volta che aggiorno un modulo di dipendenza utilizzando Android 3.0. (Le versioni più recenti di Android Studio 3 sembrano aver risolto il problema.)

4
questo mi ha aiutato quando ho anche fatto una cache non valida e riavviato
Vasili Fedotov il

Ero incredulo quando questo ha risolto il mio problema .. avevo provato ad aggiornare tutto, rimuovendo tutte le parole chiave di compilazione, aggiornando alcune delle versioni sospette di ilb .. quando finalmente l'ho fatto, ha funzionato ..
hanzolo

Mi hai salvato la vita! Grazie
Masterfego

24

Eliminare .gradlecome suggerito da Suragch non è stato abbastanza per me. Inoltre, ho dovuto eseguire un Build > Clean Project.

Si noti che, per vedere .gradle, è necessario passare alla vista "Progetto" nel navigatore in alto a sinistra:

Passa alla vista progetto


23

Ho provato ogni altra soluzione, ma nessuno ha funzionato per me. Alla fine, l'ho risolto utilizzando la stessa versione di dipendenza modificando build.gradle. Penso che questo problema si verifichi quando si aggiunge una libreria in gradle che utilizza diverse versioni di dipendenza del supporto o librerie google.

Aggiungi il seguente codice al tuo file gradle di build. Quindi cleane rebuildprogetto.

ps: quella era la vecchia soluzione per me, quindi dovresti usare la versione aggiornata delle seguenti librerie.

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'
          }
      }
}

5
provato tutte le altre soluzioni, alla fine solo questo ha aiutato: /
Ante

@Ali Gurelli Grazie mille ho provato molte soluzioni ma solo questo lavoro.
Bipin Bharti,

Grazie Ma per me uso Version details.useVersion '15 .0.0 '
Elsunhoty

Grazie per la soluzione Lo stesso problema mi è successo. google tap and pay era 10.0.0 e resto tutte le librerie sono sull'ultima versione
R World

Ha funzionato senza
problemi

14

if (1. Cerca di pulire e ricostruire il lavoro), allora va bene

altrimenti if (2. Provare a rimuovere il lavoro gradle) quindi buono

else-> 3. Prova ad aggiungere in grade.properties

android.enableD8 = false

else-> 4. Aggiungi multiDexEnabledtrue al tuo build.gradle

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

e aggiungi la dipendenza

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

Potrebbe funzionare il primo per te e così via, ma dipende davvero dalla natura del tuo problema, per esempio

Ho ricevuto l'errore dopo aver aggiunto questa libreria

implementation 'com.jjoe64:graphview:4.2.2'

e in seguito ho scoperto che devo verificarlo e devo aggiungere la stessa versione delle librerie di supporto. Quindi devo provare un'altra versione

compile 'com.jjoe64:graphview:4.2.1'

e risolve il problema. Quindi presta attenzione per quello.


3
Il modo più utile per questo problema. Uno che voglio menzionare qui è che puoi usare 'gradlew app: transformDexArchiveWithExternalLibsDexMergerForDebug --stacktrace' cmd per maggiori dettagli. Mi salvo, ho scoperto che devo abilitare multidex. Spero utile.
Panda,

13

Nel mio caso il problema era dovuto alla biblioteca della stanza:

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

Modificandolo in:

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

lavorato.


Grazie mille, questo mi ha aiutato molto!
Phil

Sono così felice di trovare questa risposta. Grazie!
callOfCode

12

Solo per aggiungere alle soluzioni di cui sopra:

Assicurati di non avere dipendenze duplicate che puntano a versioni diverse di esse, in più punti (o anche nello stesso file).


Penso che questo dovrebbe essere il primo controllo prima di aggiungere multiDexEnabled true e provare altre risposte. Grazie!
Aleksandr,

11

Ciao ho lo stesso problema provato quasi tutto. Quindi, finalmente, dopo 6 ore di lotta ho risolto il problema eseguendo il debug di ogni riga.

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

Google Services 3.0 non supporta Firebase con Studio 3.0 con playServiceVersion: 11.6.0 o inferiore.

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"

Soluzione:

Ho cambiato i servizi di Google in

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

E supporta i servizi Firebase.

Spero che qualcuno risparmi il suo tempo.


1
Ho lo stesso problema che stavo usando playServiceVersion come implementazione 11.4.0 "com.google.firebase: firebase-core: 11.4.0" cambia in implementazione "com.google.firebase: firebase-core: 11.6.2" risolto il mio problema . Quindi, per favore, verifica la dipendenza della versione per diversi lib
durgeshtrivedi il

9
  1. Abilitare

    defaultConfig {multiDexEnabled true}

  2. Se il passaggio 1 non funziona, allora

    Vai alla struttura del progetto e scopri la libreria esterna che utilizza una versione diversa. Fare doppio clic su di esso ed eliminare il suo file jar. Chiudi il progetto e riapri Android Studio ricostruirà il progetto. Il problema dovrebbe essere sparito.


+1 - Avevo il supporto lib, rxjava e una dipendenza di terze parti (13k linee). I miei occhi quasi saltarono fuori quando vidi il metodo contare.
snodnipper,

6

Una delle possibilità è: la presenza della stessa libreria ma con versioni diverse nelle dipendenze .

Ho avuto questo problema con le seguenti righe nel file gradle:

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

La libreria gson era nella mia directory libs ma con una versione precedente. Ho eliminato il file gson-2.3.1.jardalla directory libs e tutto è tornato alla normalità.


rimozione compile fileTree(include: ['*.jar'], dir: 'libs')risolto anche per me .. grazie (y)
Dinuka Salwathura,

5

Se questo errore è comparso dopo aver incluso il supporto di kotlin e nessuna delle altre soluzioni funziona, prova a cambiare la dipendenza kotlin del modulo dell'app build.gradlein:

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

Questo funziona per me su Android Studio 3.0 Beta 6. Vedi questa risposta per ulteriori spiegazioni.


Sì, sembra che l'introduzione di Kotlin potrebbe spezzare la build se le annotazioni non fossero escluse.
Stoycho Andreev,

Grazie. Questa è stata la soluzione per me. Faccio 3 giorni per identificare il mio problema.
Naveen Kumar M

Prova invece ad aggiornare alla versione 1.2.30 del plugin Kotlin (appena rilasciata). Ora anche Instant Run può essere nuovamente abilitato!
KTCO


5

[IMPOSSIBILE MERIRE DEX RISOLTO] Dopo ore di overflow dello stack ho risolto "IMPOSSIBILE UNIRE ERRORE DEX"

  1. Aggiorna tutte le righe com.android.support nel tuo gradle alla v27.1.0

Causa: Android ha aggiornato le librerie di supporto alla v27.1.0, quindi devi cambiare tutte le linee di supporto Android nel tuo file gradle in 27.1.0 dal 26.1.0

  1. Assicurati che la sezione dei repository includa una sezione maven con l' endpoint " https://maven.google.com ". Per esempio:

    allprojects {repositories {jcenter () maven {url " https://maven.google.com "}}}

Causa: - Android non può aggiornare le librerie di supporto nel gestore SDK e ora utilizza maven.google.com per l'aggiornamento, quindi è necessario includerlo per utilizzare le librerie di supporto 27.1.0

Dopo la versione di modifica: 1. Ripulisci progetto 2. Ricostruisci progetto


4

aggiungi i comandi seguenti:

android {
...

    dexOptions {

        jumboMode true
        javaMaxHeapSize "4g"

    }
}

4

Installazione di Google Play Services (ultima versione) + incluso

android {
    defaultConfig {
        multiDexEnabled true
        }
}

in build.gradle ho risolto il problema per me, assicurati di pulire e ricostruire il progetto!


3

Nel mio caso è stato gson-2.8.1.jar che ho aggiunto alla cartella libs del progetto. Ma il riferimento era già lì da SDK. Quindi non è stato necessario aggiungere gson-2.8.1.jar alla cartella libs.

Quando l'ho eliminato, il progetto gson-2.8.1.jar viene compilato senza questo errore alterato.

Quindi prova a rivedere la cartella e le dipendenze di libs .


3

Sono d'accordo con Chris-Jr. Se stai usando Firebase per incorporare i tuoi annunci AdMob (o anche se non lo sei), play-services-analytics include play-services-ads anche se non lo aggiungi come dipendenza. Google ha ovviamente fatto un errore nel suo lancio dell'11.4.0 poiché l'analisi include la versione 10.0.1 degli annunci, non l'11.4.0 (il passaggio del mouse sopra il suggerimento mostra questo).

Ho aggiunto manualmente la compilazione "com.google.android.gms: play-services-ads: 11.4.0" nella parte superiore che ha funzionato, ma solo dopo aver disabilitato Instant Run: http://stackoverflow.com/a/35169716/530047

Quindi regredire alla 10.0.1 o aggiungere gli annunci e disabilitare Instant Run. Questo è quello che ho trovato se aiuta qualcuno.


OP ha menzionato i servizi di riproduzione?
IgorGanapolsky,

La risposta approvata ha fatto. Se questo problema sta emergendo senza quello scenario, allora non lo so!
Jonathan,

2

Ho riscontrato lo stesso problema e ho trovato il vero motivo del mio caso. In precedenza, ho anche provato di nuovo tutte le risposte precedenti, ma il problema non è stato risolto. Ho due moduli nel mio progetto di app per l'usura e build.gradle come segue :

indossare il modulo build.gradle:

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

build.gradle del modulo comune:

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

Prima di passare al livello 3.x, "implementazione" è tutta "compilata".

Corro gradlew con l'opzione --stacktrace per ottenere la traccia dello stack, puoi semplicemente fare clic su questo nella finestra della console Gradle quando si verifica questo problema. E ho scoperto che la dipendenza dal pacchetto jar ha ripetuto:

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

Class SportSummary nel pacchetto farmer-motion-1.0.jar, dopo aver letto la guida ufficiale alla migrazione , ho modificato il mio build.gradle come segue:

indossare il modulo build.gradle:

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

modulo comune 的 build.gradle:

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

Ora il modulo wear avrà la dipendenza dell'esportazione di farmer-motion-1.0.jar dal modulo comune. Se non è presente alcuna dipendenza dal pacchetto jar durante il runtime , la dipendenza ' implementazione ' del pacchetto jar può anche essere modificata in 'compileOnly' .


2

Ho anche avuto il problema.

Sono stato in grado di risolvere cambiando compileSdkVersione targetSdkVersionall'ultima versione.


2

Per il nostro progetto, abbiamo accidentalmente aggiunto lo stesso barattolo due volte con un nome diverso. La rimozione di uno di essi ha risolto il problema.


Questo ha risolto il mio problema. Stavo costruendo un progetto di libreria Android interna e sotto la sua libscartella, avevo due file jar, uno dei quali è solo un backup dell'altro ma con un nome file diverso.
hopia,

2

Questo potrebbe non essere il tuo problema, ma ho riscontrato questo errore quando ho accidentalmente incluso due librerie identiche (ma con un nome diverso) nella sezione delle dipendenze {} del progetto.


1

Per me stava aggiornando la messaggistica firebase in app \ build.gradle:

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

per

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

1

Una delle possibili cause alla radice: duplicate dipendenze transitorie che non sono state gestite correttamente dall'importazione di progetti multi-modulo da parte di Android Studio. Controlla l'elenco e rimuovili. Per me, la correzione era letteralmente questa:

--- 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

Scopro la ragione di questo problema per il mio progetto. Mi è stata aggiunta una dipendenza due volte in build.gradle . Una volta aggiungendo dipendenza e ancora una volta aggiungendo la dipendenza jar:

compilare 'org.achartengine: achartengine: 1.2.0'
...
file di implementazione ('../ achartengine-1.2.0.jar')

dopo aver rimosso il problema con la prima riga risolto.


1

Nel caso in cui le risposte migliori non abbiano funzionato per te, il tuo problema potrebbe essere che hai più dipendenze che dipendono dalla stessa libreria.

Ecco alcuni suggerimenti per il debug. In questo codice di esempio, com.google.code.findbugs:jsr305:3.0.0è la libreria offensiva.

Pulisci e ricostruisci sempre ogni volta che modifichi per verificare la tua soluzione!

  1. Costruisci con la --stacktracebandiera attiva per maggiori dettagli. Si lamenterà di una lezione, Google quella classe per trovare la biblioteca. Ecco come è possibile configurare Android Studio per eseguire sempre il gradle con la --stacktracebandiera .

  2. Dai un'occhiata alla Gradle Console in Android Studio View > Tool Windows > Gradle Consoledopo una build

  3. Verificare la presenza di ripetute dipendenze eseguendo ./gradlew -q app:dependencies. Puoi rieseguirlo ogni volta che modifichi build.gradle.

  4. In 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. In 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. In build.gradle,

    android {
        ...
        configurations.all {
            resolutionStrategy {
                // Completely exclude the library. Works for transitive
                // dependencies.
                exclude group: 'com.google.code.findbugs'
            }
        }
    }
  7. Se alcune delle tue dipendenze sono nei file jar, apri i file jar e vedi se ci sono nomi di classe in conflitto. Se lo sono, probabilmente dovrai ricostruire i barattoli con nuovi nomi di classe o esaminare l' ombreggiatura .

Qualche altra lettura di base:


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

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

2
Potresti elaborare?
sg7,

Ho anche avuto lo stesso problema, ma mi sono reso conto che risolvere il mio problema in quel momento, ma in futuro gli aggiornamenti, le cose potrebbero effettivamente cambiare.
Eben Watts,

1

Nel mio caso una libreria presenta questo problema, la libreria è stata aggiunta correttamente al progetto ma quando eseguo la mia app mi mostra questo errore. Quindi, se questo accade anche a te, puoi andare su github e controllare i problemi o sollevare nuovi problemi. Se non trovi alcuna soluzione per quanto riguarda la libreria ti consiglio di sostituirla.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.