3 votes

Erreur "Unable to merge Dex" : Android Studio 3.0

J'ai essayé encore et encore de résoudre ce problème, mais aucune des solutions proposées dans les autres questions n'a fonctionné pour moi. Après avoir fusionné mon code avec celui de mes coéquipiers, je n'ai pas été en mesure d'exécuter mon application à cause de ce bug. J'ai nettoyé et reconstruit mon projet plusieurs fois, mais l'erreur continue de se produire :

Erreur : échec de l'exécution de la tâche ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'. java.lang.RuntimeException : java.lang.RuntimeException : com.Android.builder.dexing.DexArchiveMergerException : Impossible de fusionner dex

J'ai essayé de corriger les avertissements de Gradle, de mettre à jour les déclarations de la bibliothèque de compilation de Gradle et de mettre ce drapeau dans ma configuration par défaut :

multiDexEnabled true

Le seul correctif qui a produit quelque chose de différent était le drapeau ci-dessus, qui m'a permis de lancer l'application, mais une erreur d'exécution différente s'est produite :

E/AndroidRuntime : FATAL EXCEPTION : main Processus : com.example.aaronliang.flow_v1, PID : 11780 java.lang.RuntimeException : Unable to get provider >com.google.firebase.provider.FirebaseInitProvider : >java.lang.ClassNotFoundException : Didn't find class >"com.google.firebase.provider.FirebaseInitProvider" on path : DexPathList[[zip >file "/data/app/com.example.aaronliang.flow_v1->177.apk"],nativeLibraryDirectories=[/data/app->lib/com.example.aaronliang.flow_v1-177, /vendor/lib, /system/lib]]]

Voici mes fichiers de construction gradle actuels :

Construction du projet :

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {

        classpath 'com.android.tools.build:gradle:3.0.0'
        classpath 'com.google.gms:google-services:3.1.0'

        //classpath 'com.android.tools.build:gradle:2.3.3'
        //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()
        maven { url "https://jitpack.io" }
        maven { url "https://maven.google.com" }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

App build :

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion '26.0.2'
    defaultConfig {
        multiDexEnabled true
        applicationId "com.example.aaronliang.flow_v1"
        minSdkVersion 15
        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(include: ['*.jar'], dir: 'libs')
    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.1.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.android.volley:volley:1.0.0'
    compile 'com.github.bumptech.glide:glide:3.7.0'
    compile 'com.google.firebase:firebase-firestore:11.6.0'
    compile 'com.google.firebase:firebase-auth:11.6.0'
    compile 'com.google.firebase:firebase-core:11.6.0'
    compile 'com.google.android.gms:play-services:11.6.0'
    compile 'com.github.woxthebox:draglistview:1.5.0'
    //compile 'com.github.PhilJay:MPAndroidChart:v3.0.2'
    compile 'com.jjoe64:graphview:4.2.1'
    testCompile 'junit:junit:4.12'
}
apply plugin: 'com.google.gms.google-services'

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '25.3.1'
            }
        }

    }
}

Toute aide serait appréciée, car ce projet doit être rendu bientôt !

2voto

gameCoder95 Points 89

Ok, j'ai réussi à régler mon problème ! J'ai dû ajouter ces deux lignes :

Dans app/gradle.build :

compile 'com.android.support:multidex:1.0.1'

Dans le fichier Manifest :

android:name="android.support.multidex.MultiDexApplication"

J'ai obtenu cela à partir de cette question :

Impossible de trouver la classe "com.google.firebase.provider.FirebaseInitProvider".

0voto

sininen Points 192

Votre minSdk est inférieur à 20, vous devez donc ajouter compile 'com.android.support:multidex:1.0.1' à votre build.gradle dependencies . Source :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X