web-dev-qa-db-fra.com

Impossible de fusionner l'erreur Dex: Android Studio 3.0

J'ai essayé à plusieurs reprises de résoudre ce problème, mais aucune des solutions proposées dans les autres questions ne fonctionnait pour moi. Après avoir fusionné mon code avec celui de mes coéquipiers, je n'ai pas pu exécuter mon application en raison de ce bogue. J'ai nettoyé et reconstruit mon projet plusieurs fois, mais l'erreur persiste:

Erreur: L'exécution a échoué pour la tâche ': app: transformDexArchiveWithExternalLibsDexMergerForDebug' . Exception Java.lang.Runtime: Exception Java.lang.Runtime: com.Android.builder.dexing.DexArchiveMergerException: impossible de fusionner dex

J'ai essayé de corriger les avertissements de Gradle, de mettre à jour les instructions de bibliothèque de compilation de Gradle et de placer cet indicateur dans ma configuration par défaut:

multiDexEnabled true

Le seul correctif qui produisit quelque chose de différent fut le drapeau ci-dessus, qui me permettait d'exécuter l'application, mais une erreur d'exécution différente se produisit:

E/AndroidRuntime: EXCEPTION FATALE: main Processus: com.example.aaronliang.flow_v1, PID: 11780 Java.lang.RuntimeException: Impossible d'obtenir le fournisseur> com.google.firebase.provider.FirebaseInitProvider:> Java.lang.ClassNotFoundException: la classe n'a pas été trouvée> "com.google.firebase.provider.FirebaseInitProvider" sur le chemin: DexPathList [Zip> fichier "/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 actuels:

Projet construit:

// 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 est pour bientôt!

3
gameCoder95

Ok, j'ai réussi à résoudre 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 manifeste:

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

J'ai obtenu ceci de cette question:

La classe "com.google.firebase.provider.FirebaseInitProvider" n'a pas été trouvée

2
gameCoder95

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

0
sininen