Android Studio 3.0-Ausführung für Aufgabe fehlgeschlagen: Dex kann nicht zusammengeführt werden

85

Android Studio erhielt einen Build-Fehler während der Build-Ausführung mit den folgenden Ergebnissen:

Fehler: Ausführung für Task ': app: transformDexArchiveWithExternalLibsDexMergerForDebug' fehlgeschlagen. java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Dex kann nicht zusammengeführt werden "

Meine App: build.gradle Datei:

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'

irgendwelche Lösungen

Edit: Ich habe mit Probe durch Firebase Github Site gemacht und gelöst

Anguraj
quelle
Sie müssen MultiDex-Unterstützung in Ihre App aufnehmen
Sudheesh R
und versuchen Sie zu reinigen, Ihr Projekt wieder
aufzubauen
Ich schlage vor, dass Sie Ihre Frage bearbeiten und die gesamte Ausgabe Ihrer Gradle-Konsole veröffentlichen, nicht nur diese eine Zeile. Die Details Ihres Problems liegen an anderer Stelle in der Ausgabe.
CommonsWare
@ CommonsWare Ich habe meinen gesamten Fehler gepostet. Es sind nur zwei Zeilen.
Anguraj
2
Versuchen Sie, die sofortige Ausführung Ihres Projekts zu deaktivieren und Android {defaultConfig {multiDexEnabled true}} hinzuzufügen
Tara

Antworten:

65

Führen Sie für ein Cordova-basiertes Projekt cordova clean androidvor dem erneuten Erstellen erneut aus, wie von @mkimmet vorgeschlagen.

Sulaiman Sudirman
quelle
1
Jemand, bitte markieren Sie diese Antwort richtig. Es löst das Problem.
Pamekar
1
Für mich hat die Installation von 'cordova-plugin-androidx' und 'cordova-plugin-androidx-adapter' das Problem gelöst
ssz
57

Dieser Fehler tritt auf, wenn Sie eine externe Bibliothek hinzufügen, die möglicherweise nicht mit Ihrer kompatibel ist compileSdkVersion.

Seien Sie vorsichtig, wenn Sie eine hinzufügen external library.

Ich habe 2 Tage mit diesem Problem verbracht und es wurde schließlich nach diesen Schritten gelöst.

  • Stellen Sie sicher , dass alle Ihre Support - Bibliotheken sind die gleichen wie compileSdkVersionIhr build.gradle(Module:app)in meinem Fall ist es 26.Geben Sie hier die Bildbeschreibung ein

  • Geben Sie in Ihrer Kategorie defaultConfig multiDexEnabled true ein . Dies ist der wichtige Teil.multiDexEnabled Wahres Bild

  • Gehen Sie zu Datei | Einstellungen | Erstellen, Ausführen, Bereitstellen | Instant Run und versuchen Sie, Instant Run für Hot Swap zu aktivieren / deaktivieren ... und klicken Sie auf OK Aktivieren Sie Instant Run to Hot Swap ... Image

  • Sync Dein Projekt.

  • Zuletzt gehen Sie zu Build | Klicken Sie auf Projekt neu erstellen .

  • Hinweis: Beim erneuten Erstellen des Projekts wird das Projekt zuerst bereinigt und anschließend erstellt.

Niamatullah Bakhshi
quelle
es ist mir hilfreich, danke.
Sumit Saxena
freut mich das zu hören. Fröhliches Androiding.
Niamatullah Bakhshi
1
@ YajliMaclo großartig!
Niamatullah Bakhshi
47

Versuchen Sie dies in Gradle hinzuzufügen

    android {
      defaultConfig {
        multiDexEnabled true
        }
   }
Ishan Fernando
quelle
Haben Sie versucht, den Cache in Android Studio ungültig zu machen? @ Anguraj
Ishan Fernando
Nicht der einzige Schritt, um Multidex zu aktivieren. Auch in neueren API-Levels nicht erforderlich
OneCricketeer
25

Auflösung:

Siehe diesen Link : Da es je nach minSdkVersion verschiedene Optionen zum Ausschalten der Warnung gibt, wird sie unter 20 eingestellt :

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

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

Wenn Ihr build.gradle-Set eine minSdkVersion größer als 20 enthält, beenden Sie die Warnung wie folgt:

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

Aktualisieren Sie die Abhängigkeiten wie folgt:

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

Wieder ist der einzige Unterschied die Schlüsselwörter in Abhängigkeiten:

minSdkVersion unter 20: Kompilierung verwenden

minSdkVersion über 20: Implementierung verwenden

  1. Ich hoffe, das war hilfreich. Bitte stimmen Sie zu, wenn es Ihr Problem gelöst hat. Vielen Dank für Ihre Zeit.
  2. Auch für weitere Informationen, auf , warum dies geschieht , benutzen Sie bitte den ersten Absatz in dem Link lesen, wird es erklärt gründlich warum? und was bedeutet diese Warnung?
Modesto Cabrera
quelle
Jeder benutzt diesen !!!
cmcodes
24

Versuchen Sie einfach ein "Build -> Clean Project". Das hat das Problem für mich gelöst.

Anas
quelle
5
Vielen Dank, dass dies für mich in einem Ionic / Cordova-Projekt funktioniert hat, indem Cordova Clean Android ausgeführt wurde, während ich auch das Cordova-Android-Support-Gradle-Release-Plugin installiert hatte.
Mkimmet
Ich liebe es, wenn etwas Einfaches Dinge repariert !! Vielen Dank!
Tonejac
Dies hat es für mich behoben, wenn ich mit React Native arbeite.
Michael Auderer
Vielen Dank, es ist die einfachste Lösung für dieses Problem. Ich habe meine 3 Tage damit verbracht, dieses Problem zu lösen, und Ihre Antwort löst mein gesamtes Problem. Nochmals vielen Dank mein Bruder !!!
Gautamsinh Mori
Vielen Dank. Hat mir auf Android Studio 4.1 geholfen. Hat meinen Tag gerettet.
Atif
7

Für mich hinzufügen

multiDexEnabled true

und

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

Build.gradle- Datei in der App-Ebene löste das Problem

Md Nakibul Hassan
quelle
5

Gehen Sie zu Ihrer build.gradleDatei auf Modulebene und fügen Sie dem Code die folgenden Zeilen hinzu

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

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

Das löste das Problem leicht. Überprüfen Sie diese Dokumentation

Mahi
quelle
4

Verwenden Sie multiDexEnabled true wie folgt.

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

und

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

Diese Lösung hat bei mir funktioniert.

Suresh Kumar
quelle
4

Ich habe viele Lösungen wie oben erwähnt ausprobiert, einschließlich multiDexEnabled true, aber nichts davon hat bei mir funktioniert.

Hier ist die Lösung, die für mich funktioniert hat - kopieren Sie diesen Code in die Datei 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}"
        }
    }
}

Stellen Sie sicher, dass Sie gradlew clean ausführen, bevor Sie den Code ausführen

Raj
quelle
Ich habe minSdkVersion geändert, es ist genug
Mr Special
2

Das gleiche passierte mir, als ich herausfand, dass ich gerade auf AS 3.0.1 aktualisierte und nachdem ich das Update durchgeführt, die App bereinigt und neu erstellt hatte, wurde alles repariert.

Tian Pretorius
quelle
2

Für mich hat dieser Fehler eine Zeile in den Gradle-Abhängigkeiten meiner App geändert.

daraus :

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

Dazu :

compile('com.google.android.gms:play-services-gcm:11.8.0') {
    force = true
}
HedeH
quelle
Nur das hat bei mir funktioniert. Ich musste keine Kraft hinzufügen = wahr
Paulo Linhares - Packapps
1

Stellen Sie außerdem sicher, dass Ihre App MultiDexApplication untergeordnet ist

import android.support.multidex.MultiDexApplication

class App : MultiDexApplication()

Wenn Sie die Anwendungsklasse nicht unterklassifizieren, fügen Sie sie zu AndroidManifest.xml hinzu

<application
  android:name="android.support.multidex.MultiDexApplication"
1192805
quelle
0

Befinden Sie sich zwischen SDK- oder Plattform-Updates? Wenn ja, füllen Sie diese vollständig aus und versuchen Sie dann fortzufahren. Normalerweise aktualisiere ich die einzelnen Pakete, die aktualisiert werden müssen, um das gesamte Update durchzuführen, das manchmal bis zu 2,5 GB betragen kann. Dieses vollständige Update schlägt manchmal fehl. Ich hatte eine Reihe von SDK-Updates, nachdem ich auf Android Studio 3.0 aktualisiert hatte, und bekam den obigen Fehler, da nicht alle Pakete aktualisiert wurden. Nachdem ich alle Pakete aktualisiert hatte, war der obige Fehler behoben.

Vineet Jain
quelle
Hoffen Sie, dass Sie Ihren Cache geleert oder ungültig gemacht und Android Studio neu gestartet haben? Für mich scheint Android Studio 3 im Vergleich zu den Vorgängerversionen fehlerhaft zu sein.
Vineet Jain
Hat jemand das jemals behoben? kann nicht daran vorbei kommen!
68060
0

In meinem Fall wurde das Problem behoben, indem die Version der Firebase-Bibliothek von 2.6.0 auf 2.4.2 geändert wurde

Persiaware
quelle
0

Für mich war das Problem die Verwendung von Java 1.8 in einem Modul, aber nicht im App-Modul. Ich habe dies zum App Build Gradle hinzugefügt und gearbeitet:

android{
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
Pelanes
quelle
0

Gleiches Problem. Ich habe multidex aktiviert: defaultConfig {applicationId "xxx.xxx.xxxx" minSdkVersion 24 targetSdkVersion 26 multiDexEnabled true

Ich habe den Cache geleert, Gradle Clean ausgeführt, neu erstellt, erstellt, versucht, sicherzustellen, dass keine Konflikte in importierten Bibliotheken auftreten (alle transitiven Abhängigkeiten wurden entfernt), und alle Aktualisierungen vorgenommen. Immer noch:

Fehler: Ausführung für Task ': app: transformDexArchiveWithExternalLibsDexMergerForDebug' fehlgeschlagen. java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Dex kann nicht zusammengeführt werden

Es stellte sich heraus, dass der Build nicht gefallen hat: Implementierung 'org.slf4j: slf4j-android: 1.7.21'

trond050666
quelle
0

Wenn die Version von Android Studio 3.0.1, Gradle Version 4.1 und Android PluginVersion 3.0.0 ist, tritt dieses Problem auf. Dann stufe ich Gradle Version 3.3 herunter, Android Android ist Null, es gibt kein solches Problem.

Qian Zhang
quelle
0

Ich hatte dies, als die angeforderte SDK-Version nicht mit den Abhängigkeiten übereinstimmte. Sie können auf die markierte Linie klicken und dieses Problem beheben, indem Sie auf die rote Glühbirne klicken. Sie müssen die aktuelle Version nicht finden, lassen Sie sie einfach von der IDE für Sie herausfinden. Und fügen Sie Google Repo zur Maven-Konfiguration hinzu.

VeeKoo
quelle
0

Ich habe den gleichen Fehler erhalten und in meinem Fall wurde der Fehler behoben, als ich einen Build-Fehler behoben habe, der mit einer anderen Build-Variante als der aktuell erstellten verbunden war.

Ich habe die Build-Variante erstellt, die ich mir ohne Fehler angesehen habe, aber der Versuch, sie zu debuggen, hat einen app:transformDexArchiveWithExternalLibsDexMergerForDebugFehler verursacht . Nachdem ich zum Erstellen der anderen Build-Variante gewechselt war, habe ich meinen Fehler im Build-Prozess abgefangen und behoben. Dies schien mein app:transformDexArchiveWithExternalLibsDexMergerForDebugProblem für alle Build-Varianten zu lösen .

Beachten Sie, dass dieser Fehler nicht innerhalb des referenzierten externen Moduls, sondern innerhalb eines bestimmten Quellensatzes einer Build-Variante lag, die auf ein externes Modul verwies. Hoffe, das ist hilfreich für jemanden, der vielleicht den gleichen Fall wie ich sieht!

ThePartyTurtle
quelle
0

Ich habe dieses Problem behoben, indem ich nur diese Jobs in meinem Code ausgeführt habe

Öffnen -> build.gradle Wert von ändern

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

zu

compile 'com.google.code.gson:gson:2.8.2'
Mahboob Ahmed Toor
quelle
0

Um dieses Dex-Problem zu beseitigen, implementieren Sie einfach eine Abhängigkeit. Dieses Problem tritt auf, wenn wir mehrere verschiedene Dienste vom selben Server verwenden. Angenommen, wir verwenden Anzeigen und Firestore in einem Projekt und beide haben einen Repository-Maven. Daher müssen wir verschiedene Daten mit einem Repository aufrufen, für dessen Implementierung eine Dex-Abhängigkeit erforderlich ist. Das neue Update Abhängigkeit: -

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

Ich bin sicher, es wird Ihr Problem dauerhaft lösen

Pradeep Sheoran
quelle
Es ist eine Abhängigkeit, die es in Gradle versetzt
Pradeep Sheoran
0
1) Bitte fügen Sie multiDexEnabled true hinzu
2) Wenn Sie einen Kompilierungsfehler erhalten, überprüfen Sie, ob auf App-Ebene build.gradle-Wetter dieselben Abhängigkeiten mit unterschiedlichen Versionen implementiert sind.
3) Entfernen Sie eine, wenn Sie dieselben Abhängigkeiten finden.

android {compileSdkVersion 28 defaultConfig {

    minSdkVersion 17
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}
hoffe es funktioniert gut :) Happy Coding
user8363370
quelle
0

Der einfachste Weg, um Fehler zu vermeiden, ist:

- Ändern Sie die Bibliothek combilesdkversion genauso wie Ihre App compilesdkversion

- Ändern Sie die supportLibrary-Version der Bibliothek wie Ihre build.gradle (App).

Sarojini2064130
quelle
0

Das funktioniert bei mir. sauber vorbereiten und laufen lassen.

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

ich hoffe es hilft.

Sankha Karunasekara
quelle
0

Ich habe auch den ähnlichen Fehler bekommen.

Problem :

Geben Sie hier die Bildbeschreibung ein

Lösung :

Hauptursache für dieses Problem ist, dass multiDex nicht aktiviert ist. Also in dem Projekt / android / app / build.gradle , ermöglichen die multiDex

Weitere Informationen finden Sie in der Dokumentation: https://developer.android.com/studio/build/multidex#mdex-gradle

Geben Sie hier die Bildbeschreibung ein

Shriram Navaratnalingam
quelle