Dex kann nicht zusammengeführt werden


307

Ich habe Android Studio Beta. Ich habe ein neues Projekt mit dem Kompilieren meiner alten Module erstellt, aber als ich versuchte, die App zu starten, wurde sie nicht mit der folgenden Meldung gestartet:

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

com.android.builder.dexing.DexArchiveMergerException: Dex kann nicht zusammengeführt werden

Aber ich weiß nicht, wie ich diesen Fehler lösen soll. Ich habe das stundenlang gegoogelt, aber ohne Erfolg.

Mein Projekt 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
}

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


}

Und mein Modul 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')

}

Mein zweites Modul:

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

____________finden_________

Als ich das zweite Modul (Parser) nicht importierte, stürzte die App nicht auf dex ab, aber als das Modul nicht importiert wurde, funktionierte die App nicht. : D: D.


6
Wenn jemand das gleiche Problem in der stabilen Version von Android Studio 3.0 hat, würde ich Ihnen dringend empfehlen, die Antwort stackoverflow.com/questions/46949761/… zu überprüfen und zu prüfen, ob sie Ihnen helfen kann.
Bhavesh Patadiya

1
Ich hatte das gleiche Problem und befolgte jede auf dieser Seite erwähnte Methode, half mir aber nicht weiter. Ich gehe zum Gradle und halte den Cursor auf jede Bibliothek, um zu überprüfen, ob ihre neue Version verfügbar ist oder nicht. diejenigen, die eine neue Version haben, also habe ich aktualisiert, gradle synchronisiert und ausgeführt. es funktionierte.
Shahzad Afridi

Antworten:


293

Ich hatte das gleiche Problem beim Aktualisieren von com.google.android.gms:play-services:11.2.2auf com.google.android.gms:play-services:11.4.0. Das hat es für mich gelöst:

  1. reinigen
  2. wieder aufbauen

Mit dieser Lösung verzögern Sie nur das eigentliche Problem. wahrscheinlich enthält Version 11.4.0 weniger Methoden. Siehe meine Antwort unten. Sie werden diesen Fehler in der nächsten Abhängigkeit bekommen, die Sie hinzufügen werden, denke ich
itzhar

2
Dies löst mein Problem, wo multiDexEnabled trueallein nicht
Yuri Brigance

28
Gleiches gilt für com.google.android.gms: play-services-location: 11.6.0 ... dies ist keine gültige Lösung
issamux

3
Diese Lösung hat bei mir funktioniert, als ich ein Kompatibilitätsproblem mit Google Analytics-Bibliotheken hatte. In der AS-Ansicht des Android-Projektnavigatorbereichs als "Projekt" sollte "Externe Bibliotheken" angezeigt werden. Wenn Sie die externen Bibliotheken erweitern, werden alle zum Kompilieren des Projekts verwendeten Jars und Module angezeigt. Es soll Ihnen helfen, inkompatible Modulkombinationen zu identifizieren.
wütendITguy

3
Wenn der obige Code bei "compileSdkVersion 26" nicht funktioniert, versuchen Sie dies. Gehen Sie zu - build.gradle (Modul: App) - fügen Sie "multiDexEnabled true" in die Kategorie "defaultConfig" ein und gehen Sie zum letzten Schritt zu "Datei |" Einstellungen | Erstellen, Ausführen, Bereitstellen | Sofort ausführen und versuchen zu aktivieren / deaktivieren
Sumit Saxena

325

Ich habe alles versucht und keiner von ihnen hilft. Endlich finde ich diese Arbeit für mich:

app / build.gradle:

android {
    defaultConfig {
       multiDexEnabled true
    }
}

11
Vielen Dank. Ich denke, das Problem war, dass die meisten Antworten nicht das Einschließen von JAR-Dateien aus anderen Quellen berücksichtigen, die Sie nicht neu erstellen können. multiDex scheint die Kombination des ansonsten inkompatiblen Codes zu ermöglichen.
Brendon Whateley

2
Diese Lösung funktionierte für mich, aber außerdem musste ich Multidex für API <= 21 developer.android.com/studio/build/multidex.html
hamou92

2
Obwohl dies relevanter ist als die akzeptierte Antwort, erhalte ich immer noch die Meldung "Dex kann nicht zusammengeführt werden"
John,

13
Hat bei mir nicht funktioniert. Mit dieser Änderung bekam ich einen anderen Fehler: Ausführung für Aufgabe 'fehlgeschlagen': app: transformClassesWithMultidexlistForDebug
Atul

1
Ja, ich habe 5 Stunden lang mit völlig anderen Antworten gewohnt. Aber irgendwie wurde mir klar, dass es sich um ein Multidex-Problem handelte, und ich landete hier. Ich war wahr Danke Mann
sud007

59

Beachten Sie die Warnungen!

Manchmal müssen Sie nur Warnungen entfernen, und der Fehler wird automatisch behoben . Siehe unten Sonderfall:


Ich hatte diese beiden Abhängigkeiten in meiner build.gradleDatei auf Modulebene :

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

und Studio hatten gewarnt ( zusätzlich zum Dex-Zusammenführungsproblem ):

Alle com.android.supportBibliotheken müssen genau dieselbe Versionsspezifikation verwenden (das Mischen von Versionen kann zu Laufzeitabstürzen führen). Gefundene Versionen 27.0.2, 21.0.3. Beispiele sind com.android.support:animated-vector-drawable:27.0.2undcom.android.support:support-v4:21.0.3

Also habe ich explizit die Version von bestimmtcom.android.support:support-v4 (siehe hier für Details) und beide Probleme (die Warnung und die im Zusammenhang mit der Dex-Zusammenführung) gelöst :

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'

Siehe ähnliche Kommentare für andere ähnliche Situationen.


1
Vielen Dank, dies hat das Problem für mich behoben. Es wurde ursprünglich durch Hinzufügen von eu.inloop: androidviewmodel: 1.3.4
lsrom

1
Genau, ich wünschte nur, der Fehler hätte präziser sein können
Amin Keshavarzian

1
Vielen Dank. Ich hatte das gleiche Problem. Ich habe v26 verwendet, auf SDK 27 aktualisiert und das Problem gelöst.
Johnny

2
Dies sollte die richtige Antwort sein. Meine Builds funktionierten nicht mehr, nachdem ich eine Bibliothek (Airbnb / Epoxy) hinzugefügt hatte, zu der eine Abhängigkeit bestand support:design:26.1.0, und diese Abhängigkeit hatte ich noch nicht. Die Version meiner anderen Support-Bibliotheken war 27.1.0. Nach dem Hinzufügen der support:designAbhängigkeit von der 27.1.0Version wurde mein Problem behoben.
Alashow

2
Danke dir. Du rettest meinen Tag.
Nithinjith

37

In meinem Fall haben leider weder Michels noch Suragchs Lösungen für mich funktioniert.

Also habe ich dieses Problem folgendermaßen gelöst:

In gradle: 3.0 ist die Kompilierungskonfiguration jetzt veraltet und sollte durch Implementierung oder API ersetzt werden . Weitere Informationen finden Sie hier. Sie können die offiziellen Dokumente im Gradle Build Tool lesen

Die Kompilierungskonfiguration ist noch vorhanden, sollte jedoch nicht verwendet werden, da sie nicht die Garantien bietet, die die API- und Implementierungskonfigurationen bieten.

Es ist besser, die Implementierung oder API zu verwenden , als zu kompilieren

Ersetzen Sie einfach compile durch Implementierung , debugCompile durch debugImplementation , testCompile durch testImplementation und androidtestcompile mit androidTestImplementation

Zum Beispiel: Stattdessen

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'

benutze so

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'

Nachdem

  • Löschen Sie den Ordner .gradle in Ihrem Projekt (Beachten Sie, dass Sie zum Anzeigen von .gradle im Navigator oben links zur Ansicht "Projekt" wechseln müssen.)
  • Löschen Sie alle Build-Ordner und den Gradle-Cache.
  • Drücken Sie im Menü Erstellen auf Projekt bereinigen Schaltfläche reinigen.
  • Klicken Sie nach Abschluss der Aufgabe im Menü Erstellen auf die Schaltfläche Projekt neu erstellen .

Hoffe es wird helfen!


2
Vielen Dank, alles was ich tun musste, war die Kompilierung in die Implementierung zu ändern und es wurde erfolgreich erstellt, ohne die anderen Schritte ausführen zu müssen. Der Build schlug
fehl,

2
Arbeitete für mich - Einblicke in warum?
Alex

1
Der zu löschende Ordner sollte sein .gradleund nicht./gradle
Gary Bak

1
Die einzige Antwort, die tatsächlich für mich funktioniert hat. Vielen Dank!
Michael Richardson

1
Danke, es ist die coolste Antwort. Es sollte oben auf der Suche sein. Hat für mich gearbeitet.
Gefahr

27
  1. Löschen Sie das .gradleVerzeichnis.

  2. Führen Sie Ihre App erneut aus.

Anmerkungen

  • Das .gradleVerzeichnis befindet sich im Stammordner Ihres Projekts. (Möglicherweise müssen Sie zuerst versteckte Dateien anzeigen.)
  • Ich muss dies jedes Mal tun, wenn ich ein Abhängigkeitsmodul mit Android 3.0 aktualisiere. (Neuere Versionen von Android Studio 3 scheinen das Problem behoben zu haben.)

4
Dies half mir, als ich auch einen ungültigen Cache machte und neu startete
Vasili Fedotov

Ich war ungläubig, als dies mein Problem behebte. Ich hatte versucht, alles zu aktualisieren, alle Kompilierungsschlüsselwörter zu entfernen, einige der verdächtigen ilb-Versionen zu aktualisieren. Als ich dies endlich tat, funktionierte es.
hanzolo

Du hast mein Leben gerettet! Danke
Masterfego

24

Das Löschen, .gradlewie von Suragch vorgeschlagen, war mir nicht genug. Zusätzlich musste ich eine durchführenBuild > Clean Project .

Beachten Sie, dass .gradleSie zum Anzeigen im Navigator oben links zur Ansicht "Projekt" wechseln müssen:

Wechseln Sie zur Projektansicht


23

Ich habe jede andere Lösung ausprobiert, aber niemand hat für mich gearbeitet. Am Ende habe ich es gelöst, indem ich dieselbe Abhängigkeitsversion durch Bearbeiten verwendet habe build.gradle. Ich denke, dieses Problem tritt auf, wenn eine Bibliothek zu Gradle hinzugefügt wird, die eine andere Abhängigkeitsversion der Support- oder Google-Bibliotheken verwendet.

Fügen Sie Ihrer Build-Gradle-Datei folgenden Code hinzu. Dann cleanund rebuildprojizieren.

ps: das war eine alte lösung für mich, daher solltest du eine aktualisierte version der folgenden bibliotheken verwenden.

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
versuchte alle anderen Lösungen, am Ende half nur dies: /
Ante

@Ali Gurelli Vielen Dank, ich habe viele Lösungen ausprobiert, aber nur diese Arbeit.
Bipin Bharti

Vielen Dank, aber für mich verwende ich Versionsdetails.useVersion '15 .0.0 '
Elsunhoty

Danke für die Lösung. Das gleiche Problem ist mir passiert. Google Tap and Pay war 10.0.0 und alle Bibliotheken sind auf der neuesten Version
R World

Funktionierte
reibungslos

14

wenn (1. Versuchen Sie, die Arbeit zu reinigen und wieder aufzubauen), dann gut

sonst wenn (2. versuchen Gradle Arbeit zu entfernen) dann gut

else-> 3. Versuchen Sie, grade.properties hinzuzufügen

android.enableD8 = false

else-> 4. Fügen Sie multiDexEnabledIhrem build.gradle true hinzu

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

und fügen Sie die Abhängigkeit hinzu

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

Es mag das erste sein, das für dich funktioniert und so weiter, aber es hängt zum Beispiel wirklich von der Art deines Problems für mich ab

Ich habe den Fehler erhalten, nachdem ich diese Bibliothek hinzugefügt habe

implementation 'com.jjoe64:graphview:4.2.2'

und später stellte ich fest, dass ich das überprüfen und dieselbe Version der Support-Bibliotheken hinzufügen muss. Also muss ich eine andere Version ausprobieren

compile 'com.jjoe64:graphview:4.2.1'

und es behebt das Problem. Also pass auf.


3
Der nützlichste Weg für dieses Problem. Eine, die ich hier erwähnen möchte, ist, dass Sie 'gradlew app: transformDexArchiveWithExternalLibsDexMergerForDebug --stacktrace' cmd für weitere Details verwenden können. Ich rette mich und habe festgestellt, dass ich Multidex aktivieren muss. Hoffe hilfreich.
Panda

13

In meinem Fall lag das Problem an der Raumbibliothek:

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

Ändern zu:

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

hat funktioniert.


Vielen Dank, das hat mir sehr geholfen!
Phil

Ich bin so froh, diese Antwort zu finden. Vielen Dank!
CallOfCode

12

Nur um die obigen Lösungen zu ergänzen:

Stellen Sie sicher, dass Sie keine doppelten Abhängigkeiten haben, die an mehreren Stellen (oder sogar in derselben Datei) auf verschiedene Versionen davon verweisen.


Ich denke, dies sollte zuerst überprüft werden, bevor multiDexEnabled true hinzugefügt und andere Antworten ausprobiert werden. Vielen Dank!
Aleksandr A

11

Hallo ich habe das gleiche Problem fast alles ausprobiert. Also habe ich mich nach 6 Stunden Kampf endgültig entschlossen, indem ich alles Zeile für Zeile debuggt habe.

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

Google-Services 3.0 Unterstützt Firebase mit Studio 3.0 mit playServiceVersion: 11.6.0 oder weniger nicht.

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"

Lösung:

Ich habe Google Services auf geändert

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

Und es unterstützt Firebase-Dienste.

Hoffentlich spart jemand seine Zeit.


1
Ich habe das gleiche Problem, bei dem ich playServiceVersion verwendet habe, als die 11.4.0-Implementierung "com.google.firebase: firebase-core: 11.4.0" in die Implementierung geändert hat Problem . Bitte überprüfen Sie die Versionsabhängigkeit für verschiedene lib
durgeshtrivedi

9
  1. Aktivieren

    defaultConfig {multiDexEnabled true}

  2. Wenn Schritt 1 nicht funktioniert, dann

    Gehen Sie zur Projektstruktur und finden Sie die externe Bibliothek heraus, die eine andere Version verwendet. Doppelklicken Sie darauf und löschen Sie die JAR-Datei. Schließen Sie das Projekt und öffnen Sie es erneut. Android Studio erstellt das Projekt neu. Das Problem sollte weg sein.


+1 - Ich hatte die Unterstützung lib, rxjava und eine Abhängigkeit von Drittanbietern (13.000 Zeilen). Meine Augen sprangen fast heraus, als ich sah, wie die Methode zählte.
Snodnipper

6

Eine der Möglichkeiten ist: das Vorhandensein derselben Bibliothek, jedoch mit unterschiedlichen Versionen in den Abhängigkeiten .

Ich hatte dieses Problem mit den folgenden Zeilen in der Gradle-Datei:

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

Die gson-Bibliothek befand sich in meinem libs-Verzeichnis, jedoch mit einer früheren Version. Ich habe das gelöschtgson-2.3.1.jar aus dem libs-Verzeichnis und alles ist wieder normal.


Entfernen compile fileTree(include: ['*.jar'], dir: 'libs')behoben für mich auch .. danke (y)
Dinuka Salwathura

5

Wenn dieser Fehler nach dem Einbeziehen der Kotlin-Unterstützung bei Ihnen aufgetreten ist und keine der anderen Lösungen funktioniert, ändern Sie die Kotlin-Abhängigkeit der App-Module build.gradlein:

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

Dies funktioniert für mich unter Android Studio 3.0 Beta 6. Weitere Erklärungen finden Sie in dieser Antwort.


Ja, es scheint, dass die Einführung von Kotlin den Build beschädigen könnte, wenn die Anmerkungen nicht ausgeschlossen werden.
Stoycho Andreev

Vielen Dank. Dies war die Lösung für mich. Ich kämpfe 3 Tage, um mein Problem zu identifizieren.
Naveen Kumar M

Versuchen Sie stattdessen ein Upgrade auf das Kotlin-Plugin Version 1.2.30 (gerade veröffentlicht). Jetzt kann Instant Run auch wieder aktiviert werden!
KTCO


5

[DEX SOLVED KANN NICHT MERGEN] Nach stundenlangem Überlaufen des Stapels habe ich den Fehler "DEX ERROR NICHT MERGEN MÖGLICH" behoben.

  1. Aktualisieren Sie alle com.android.support-Zeilen in Ihrem Gradle auf Version 27.1.0

Ursache - Android hat die Unterstützungsbibliotheken auf Version 27.1.0 aktualisiert, sodass Sie alle Android-Unterstützungszeilen in Ihrer Gradle-Datei von 26.1.0 auf 27.1.0 ändern müssen

  1. Stellen Sie sicher, dass der Abschnitt "Repositorys" einen Maven-Abschnitt mit dem Endpunkt " https://maven.google.com " enthält. Zum Beispiel:

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

Ursache: - Android kann die Support-Bibliotheken im SDK-Manager nicht aktualisieren und verwendet jetzt maven.google.com zum Aktualisieren. Sie müssen dies also einschließen, um 27.1.0-Support-Bibliotheken zu verwenden

Nach Änderung der Version: 1. Projekt bereinigen 2. Projekt neu erstellen


4

Fügen Sie die folgenden Befehle hinzu:

android {
...

    dexOptions {

        jumboMode true
        javaMaxHeapSize "4g"

    }
}

4

Installieren von Google Play Services (neueste Version) + einschließlich

android {
    defaultConfig {
        multiDexEnabled true
        }
}

in build.gradle hat das Problem für mich gelöst, stellen Sie sicher, dass Sie das Projekt bereinigen und neu erstellen!


3

In meinem Fall war es gson-2.8.1.jar, das ich dem libs- Ordner des Projekts hinzugefügt habe . Aber die Referenz war schon da von SDK. Es war also nicht notwendig, gson-2.8.1.jar zum libs-Ordner hinzuzufügen .

Als ich es herausnahm, wurde das gson-2.8.1.jar- Projekt ohne diesen Fehler kompiliert.

Versuchen Sie also, den libs- Ordner und die Abhängigkeiten zu überarbeiten .


3

Ich stimme Chris-Jr. Wenn Sie Firebase zum Einbetten Ihrer AdMob-Anzeigen verwenden (oder auch nicht), enthält die Play-Services-Analyse die Play-Services-Anzeigen, obwohl Sie dies nicht als Abhängigkeit hinzufügen. Google hat bei der Einführung von 11.4.0 offensichtlich einen Fehler gemacht, da die Analyse Version 10.0.1 von Anzeigen enthält, nicht 11.4.0 (der Mauszeiger über den Hinweis im Gradle zeigt dies).

Ich habe oben die Kompilierung 'com.google.android.gms: play-services-ads: 11.4.0' manuell hinzugefügt , die funktioniert hat, aber erst, nachdem ich Instant Run deaktiviert habe: http://stackoverflow.com/a/35169716/530047

Es wird also entweder auf 10.0.1 zurückgeführt oder die Anzeigen hinzugefügt und Instant Run deaktiviert. Das habe ich gefunden, wenn es jemandem hilft.


Hat OP Play Services erwähnt?
IgorGanapolsky

Die genehmigte Antwort tat es. Wenn dieses Problem ohne dieses Szenario auftritt, weiß ich es nicht!
Jonathan

2

Ich bin auf dasselbe Problem gestoßen und habe den wahren Grund für meinen Fall gefunden. Zuvor habe ich auch alle vorherigen Antworten erneut versucht, aber das Problem wurde dadurch nicht gelöst. Ich habe zwei Module in meinem Wear-App-Projekt und das build.gradle wie folgt:

build.gradle des Verschleißmoduls:

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

build.gradle des gemeinsamen Moduls:

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

Vor dem Upgrade auf Gradle 3.x werden alle "Implementierungen" "kompiliert".

Ich führe gradlew mit der Option --stacktrace aus, um den Stack-Trace abzurufen. Wenn dieses Problem auftritt, können Sie dies einfach im Gradle-Konsolenfenster anklicken. Und stellte fest, dass sich die Abhängigkeit vom jar-Paket wiederholte:

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

Klasse SportZusammenfassung im Farmer-Motion-1.0.jar-Paket, nachdem ich den offiziellen Migrationsleitfaden gelesen hatte , änderte ich mein build.gradle wie folgt:

build.gradle des Verschleißmoduls:

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

gemeinsames Modul 的 build.gradle:

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

Jetzt hat das Verschleißmodul die Abhängigkeit vom Export von Farmer-Motion-1.0.jar durch ein gemeinsames Modul. Wenn zur Laufzeit keine Abhängigkeit vom JAR-Paket besteht, kann die Abhängigkeit der Implementierung des JAR-Pakets auch in "compileOnly" geändert werden .


2

Ich hatte auch das Problem.

Ich konnte durch Ändern compileSdkVersionund targetSdkVersionauf die neueste Version lösen .


2

Für unser Projekt haben wir versehentlich zweimal dasselbe Glas mit unterschiedlichem Namen hinzugefügt. Das Entfernen eines davon löste das Problem.


Dies löste mein Problem. Ich habe ein internes Android-Bibliotheksprojekt erstellt und unter seinem libsOrdner zwei JAR-Dateien, von denen eine nur eine Sicherungskopie der anderen ist, aber einen anderen Dateinamen hat.
Hopia

2

Dies ist möglicherweise nicht Ihr Problem, aber ich habe diesen Fehler erhalten, als ich versehentlich zwei identische (aber unterschiedlich benannte) Bibliotheken in den Abschnitt "Abhängigkeiten {}" des Projekts aufgenommen habe.


1

Für mich war es die Aktualisierung der Firebase-Nachrichten in app \ build.gradle:

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

zu

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

1

Eine der möglichen Hauptursachen: doppelte vorübergehende Abhängigkeiten, die beim Android Studio-Import von Projekten mit mehreren Modulen nicht ordnungsgemäß behandelt wurden. Überprüfen Sie Ihre Liste und entfernen Sie sie. Für mich war das Update buchstäblich das Folgende:

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

Ich finde den Grund für dieses Problem für mein Projekt heraus. In build.gradle wurde mir zweimal eine Abhängigkeit hinzugefügt . Einmal durch Hinzufügen einer Abhängigkeit und einmal durch Hinzufügen einer JAR-Abhängigkeit:

kompiliere 'org.achartengine: achartengine: 1.2.0'
...
Implementierungsdateien ('../ achartengine-1.2.0.jar')

Nach dem Entfernen der ersten Zeile Problem gelöst.


1

Falls die Top-Antworten für Sie nicht funktioniert haben, besteht Ihr Problem möglicherweise darin, dass Sie mehrere Abhängigkeiten haben, die von derselben Bibliothek abhängen.

Hier sind einige Debugging-Tipps. In diesem Beispielcode com.google.code.findbugs:jsr305:3.0.0befindet sich die fehlerhafte Bibliothek.

Reinigen und erstellen Sie jedes Mal neu, wenn Sie Änderungen vornehmen, um Ihre Lösung zu überprüfen!

  1. Bauen Sie mit der --stacktraceFlagge für mehr Details. Es wird sich über eine Klasse beschweren, Google diese Klasse, um die Bibliothek zu finden. So können Sie Android Studio so einrichten, dass Gradle immer mit der --stacktraceFlagge ausgeführt wird .

  2. Werfen Sie View > Tool Windows > Gradle Consolenach einem Build einen Blick auf die Gradle-Konsole in Android Studio

  3. Überprüfen Sie die Ausführung auf wiederholte Abhängigkeiten ./gradlew -q app:dependencies. Sie können dies jedes Mal erneut ausführen, wenn Sie Ihr build.gradle ändern.

  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. Wenn sich einige Ihrer Abhängigkeiten in JAR-Dateien befinden, öffnen Sie die JAR-Dateien und prüfen Sie, ob widersprüchliche Klassennamen vorhanden sind. Wenn dies der Fall ist, müssen Sie wahrscheinlich die Gläser mit neuen Klassennamen neu erstellen oder die Schattierung untersuchen .

Noch etwas Hintergrundlesung:


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

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

2
Könnten Sie näher darauf eingehen?
SG7

Ich hatte auch das gleiche Problem, aber mir wurde klar, dass ich mein Problem in diesem Moment lösen konnte, aber in zukünftigen Updates könnten sich die Dinge tatsächlich ändern.
Eben Watts

1

In meinem Fall macht eine Bibliothek dieses Problem. Die Bibliothek wurde erfolgreich zum Projekt hinzugefügt, aber wenn ich meine App ausführe, wird mir dieser Fehler angezeigt. Wenn Ihnen dies auch passiert, können Sie zu Github gehen und Probleme überprüfen oder neue Probleme ansprechen. Wenn Sie keine Lösung für die Bibliothek finden, empfehle ich Ihnen, diese zu ersetzen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.