java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Dex kann in Android Studio 3.0 nicht zusammengeführt werden [geschlossen]

75

Dies ist meine Gradle-Datei auf App-Ebene:

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion '27.0.0'
    useLibrary 'org.apache.http.legacy'
    defaultConfig {
        multiDexEnabled true
        applicationId 'com.example.test'
        minSdkVersion 16
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    productFlavors {
    }
    dexOptions {
        incremental true
    }
}

dependencies {
    compile 'com.google.android.gms:play-services:10.0.1'
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'
    compile 'commons-io:commons-io:1.3.2'
    compile 'com.mcxiaoke.volley:library:1.0.19'
    compile 'com.facebook.stetho:stetho:1.5.0'
    compile 'com.github.PhilJay:MPAndroidChart:v3.0.2'
}

Der vollständige Fehler, den ich beim Kompilieren des Projekts erhalte, ist:

Fehler: Ausführung für Task ': app: transformDexArchiveWithExternalLibsDexMergerForDebug' fehlgeschlagen.

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

Der vollständige Fehler lautet wie folgt:

    Executing tasks: [:app:assembleDebug]

AGPBI: {"kind":"warning","text":"The `android.dexOptions.incremental` property is deprecated and it has no effect on the build process.","sources":[{},{}]}
Configuration 'compile' in project ':app' is deprecated. Use 'implementation' instead.
:app:buildInfoDebugLoader
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:checkDebugManifest UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:prepareLintJar UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:createDebugCompatibleScreenManifests UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:splitsDiscoveryTaskDebug UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources
:app:javaPreCompileDebug UP-TO-DATE
:app:compileDebugJavaWithJavac UP-TO-DATE
:app:mergeDebugShaders UP-TO-DATE
:app:compileDebugShaders UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:packageInstantRunResourcesDebug UP-TO-DATE
:app:checkManifestChangesDebug
:app:extractTryWithResourcesSupportJarDebug UP-TO-DATE
:app:transformClassesWithStackFramesFixerForDebug UP-TO-DATE
:app:transformClassesWithDesugarForDebug UP-TO-DATE
:app:transformClassesWithExtractJarsForDebug UP-TO-DATE
:app:transformClassesWithInstantRunVerifierForDebug UP-TO-DATE
:app:transformClassesWithDependencyCheckerForDebug UP-TO-DATE
:app:compileDebugNdk NO-SOURCE
:app:mergeDebugJniLibFolders UP-TO-DATE
:app:transformNativeLibsWithMergeJniLibsForDebug UP-TO-DATE
:app:processDebugJavaRes NO-SOURCE
:app:transformResourcesWithMergeJavaResForDebug UP-TO-DATE
:app:transformNativeLibsAndResourcesWithJavaResourcesVerifierForDebug UP-TO-DATE
:app:transformClassesWithInstantRunForDebug UP-TO-DATE
:app:transformClassesEnhancedWithInstantReloadDexForDebug UP-TO-DATE
:app:incrementalDebugTasks UP-TO-DATE
:app:preColdswapDebug
:app:fastDeployDebugExtractor UP-TO-DATE
:app:generateDebugInstantRunAppInfo UP-TO-DATE
:app:transformClassesWithInstantRunSlicerForDebug UP-TO-DATE
:app:transformClassesWithDexBuilderForDebug UP-TO-DATE
:app:transformDexArchiveWithExternalLibsDexMergerForDebug FAILED
:app:buildInfoGeneratorDebug

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 2s

39 actionable tasks: 5 executed, 34 up-to-date
Kumail
quelle
Seit Android API 21 (5.0) muss für die Multidex- Unterstützung die Bibliothek nicht mehr in den Projekten mit minSdkVersion 21und über installiert werden .
xRed
1
OK, das ist seltsam. Ich hatte mehr Details erwartet und mich :app:transformDexArchiveWithExternalLibsDexMergerForDebug FAILEDüber doppelte Klassen oder ähnliche Probleme beschwert. Ich weiß nicht wirklich, was ich Ihnen mit dieser Ausgabe sagen soll. Ich weiß, dass Sie das Projekt mehrmals bereinigt haben, aber ich empfehle, dass Sie es noch einmal bereinigen, den Build ausprobieren und prüfen, ob die Gradle Console-Ausgabe dieses Builds Ihnen mehr Details darüber liefert, was Gradle nicht mag.
CommonsWare
2
@ CommonsWare, super komisch, ich habe zweimal sauber gemacht und neu aufgebaut und es hat endlich funktioniert. Erfolgreich kompiliert!
Kumail
4
Es ist Unsinn: "Diese Frage wurde durch ein Problem verursacht, das nicht mehr reproduziert werden kann, oder durch einen einfachen Tippfehler." - 1. Das Problem kann immer noch reproduziert werden. 2. Es ist kein einfacher Tippfehler.
Frank R.
1
@FrankR. einverstanden. Für die Wiedereröffnung gestimmt. Ich vermute, das liegt daran, dass die meisten Antworten zu bereinigen und neu zu erstellen sind, aber das scheint in diesem Fall eine gültige Antwort zu sein.
CodeMagic

Antworten:

147

Aktivieren build.gradleSie Multidex über Ihr App-Modul

multiDexEnabled true

Gleich wie unten -

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.xx.xxx"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        multiDexEnabled true //Add this
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

Folgen Sie dann den folgenden Schritten -

  1. Aus dem BuildMenü -> Clean ProjectTaste drücken.
  2. Wenn die Aufgabe abgeschlossen ist, drücken Sie die Rebuild ProjectTaste im BuildMenü.
  3. Aus dem Menü File -> Invalidate cashes / Restart

compileist jetzt veraltet, daher ist es besser, implementationoder zu verwendenapi

Abhishek Aryan
quelle
4
Ich habe es schon oft versucht, bekomme immer noch den gleichen Fehler
Kumail
1
Dies wird das Problem lösen, es kommt wegen eines Konflikts configurations.all { resolutionStrategy.dependencySubstitution { substitute module('org.apache.commons:commons-io:1.3.2') with module('commons-io:commons-io:1.3.2') } }
Abdul Rizwan
1
Funktioniert für mich, aber was ist multiDexEnabled?
Álvaro Agüero
2
@ ÁlvaroAgüero, Eine einzelne .dexDatei kann 65.536 Methoden (Referenzen) haben. Wenn die Anzahl der Referenzen 65.536 überschreitet, müssen Sie sich für Multidex entscheiden. Weitere Informationen finden Sie auf der offiziellen Website.
Abhishek Aryan
1
Clean Project und Rebuild haben diesen Fehler für mich behoben.
Tarun
66

Ich verwende Android Studio 3.0 und hatte das gleiche Problem. Ich füge dies meinem Gradle hinzu:

multiDexEnabled true

Und es hat funktioniert!

Beispiel

android {
    compileSdkVersion 27
    buildToolsVersion '27.0.1'
    defaultConfig {
        applicationId "com.xx.xxx"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        multiDexEnabled true //Add this
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

Und säubere das Projekt.

Rakesh Yadav
quelle
3
Ich arbeite nicht für mich, ich denke, es gibt intern doppelte Includes, aber ich finde keinen Ausweg, der sagt, was das Duplikat ist.
Artist404
@ Artist404 Möglicherweise haben Sie auch eine Multidex-Bibliothek in Ihr Projekt oder Submodul aufgenommen. Entfernen Sie die Abhängigkeit von Multidex-Bibliotheken.
Rakesh Yadav
Das Problem besteht weiterhin. Ich habe das gleiche getan. aber nicht behoben ....> java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Fehler beim Zusammenführen von Dex-Archiven
Gyan Swaroop Awasthi
Nach dem Hinzufügen erhalte ich den Fehler "Mehrere Dex-Dateien definieren Landroid / support / v4 / os / ResultReceiver".
Kannst
1
Wenn Sie das hinzugefügt multiDexEnabled true, aber nicht gelöst haben, versuchen Sie es einfachClean Project
Cobain