web-dev-qa-db-fra.com

Android Plusieurs fichiers dex définissent Lcom/Google/Android/gms/common/api/zza

Le projet de construction et le déploiement de l'application sur l'émulateur avec le niveau 22 ou 25 de l'API vont bien, mais lorsque j'essaie de créer un APK ou de déployer l'application sur mon périphérique réel avec le niveau 16 de l'API, j'obtiens le message d'erreur suivant:

Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.Android.build.api.transform.TransformException: com.Android.ide.common.process.ProcessException: Java.util.concurrent.ExecutionException: com.Android.dex.DexException: Multiple dex files define Lcom/google/Android/gms/common/api/zza;

Mon projet build.gradle fichier:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:2.2.2'
        classpath 'com.neenbedankt.gradle.plugins:Android-apt:1.8'
        classpath 'me.tatarka:gradle-retrolambda:3.3.0-beta4'
        classpath 'com.google.gms:google-services:3.0.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

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

Mon application build.gradle fichier:

apply plugin: 'com.Android.application'
apply plugin: 'com.neenbedankt.Android-apt'
apply plugin: 'me.tatarka.retrolambda'
apply plugin: 'com.google.gms.google-services'

Android {
    compileSdkVersion 25
    buildToolsVersion "25.0.1"
    defaultConfig {
        applicationId "<aplication id here>"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

}

dependencies {

    final SUPPORT_LIBRARY_VERSION = '25.0.1'
    final DAGGER_VERSION = '2.4'
    final BUTTERKNIFE_VERSION = '8.0.1'
    final TIMBER_VERISON = '4.3.0'
    final LEAKCANARY_VERSION = '1.4'
    final FIREBASE_VERSION = '10.0.0'
    final FIREBASE_UI_VERSION = '1.0.0'

    compile fileTree(dir: 'libs', include: ['*.jar'])

    compile "com.Android.support:appcompat-v7:$SUPPORT_LIBRARY_VERSION"
    compile "com.Android.support:design:$SUPPORT_LIBRARY_VERSION"
    compile "com.Android.support:recyclerview-v7:$SUPPORT_LIBRARY_VERSION"
    compile "com.Android.support:cardview-v7:$SUPPORT_LIBRARY_VERSION"
    compile "com.Android.support:support-v4:$SUPPORT_LIBRARY_VERSION"
    compile "com.Android.support:support-vector-drawable:$SUPPORT_LIBRARY_VERSION"

    compile "com.google.dagger:dagger:$DAGGER_VERSION"
    apt "com.google.dagger:dagger-compiler:$DAGGER_VERSION"

    compile "com.google.firebase:firebase-database:$FIREBASE_VERSION"
    compile "com.firebaseui:firebase-ui-database:$FIREBASE_UI_VERSION"

    compile "com.jakewharton:butterknife:$BUTTERKNIFE_VERSION"
    apt "com.jakewharton:butterknife-compiler:$BUTTERKNIFE_VERSION"

    compile "com.jakewharton.timber:timber:$TIMBER_VERISON"

    debugCompile "com.squareup.leakcanary:leakcanary-Android:$LEAKCANARY_VERSION"

    androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.Android.support', module: 'support-annotations'
    })

    testCompile 'junit:junit:4.12'
}

Remarque: si j'ajoute la ligne "multiDexEnabled true" à mon defaultConfig i, l'erreur suivante sera générée:

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.Android.build.api.transform.TransformException: Java.util.Zip.ZipException: duplicate entry: com/google/Android/gms/common/api/zza.class
10
Sleepwalker

Déplacer ceci:

apply plugin: 'com.google.gms.google-services'

vers le bas de votre fichier app/build.gradle.

18
Bob Snyder

Cela ne s'applique probablement pas à la question initiale, mais au cas où cela aiderait quelqu'un d'autre. J'ai rencontré cette erreur avec mon projet ionic v1. Je n'utilise pas firebase, mais je l'ai résolu avec cette réponse (solution facile pour moi - normaliser toutes les versions de service Google pour qu'elles soient identiques dans Android/project.properties).

0
John Tyner

pour moi, je viens de mettre à jour la bibliothèque firebase à la dernière version et cela a juste fonctionné

0
Fajar Ulin Nuha

Bien que j'aie eu la même erreur mais la solution ci-dessus n'a pas fonctionné pour moi. J'ai réussi à résoudre l'erreur en rétrogradant la version de ma bibliothèque firebase-ui de 2.0.0 à 1.2.0 et en ajoutant ce qui suit au fichier build.gradle au niveau du projet:

allprojects {
    repositories {
        jcenter()

        // Add the following
        maven {
            url 'https://maven.fabric.io/public'
        }
    }
}
0
Darush