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


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.


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.


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

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?

Jeder benutzt diesen !!!
cmcodes

24

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


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


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


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.


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


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.


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
}

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"

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.


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


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
    }

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'


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.


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.


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!


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'

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


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

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


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.


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.