Android Studio Gradle error "Plusieurs fichiers dex définissent …"

Mon projet fonctionnait bien, lorsque j'ai ajouté facebook sdk dans mon projet, j'ai une erreur comme celle-ci, j'ai essayé tant de façons de résoudre ce problème, mais je ne l'ai pas fait. Que devrais-je faire?

Error:Execution failed for task ':app:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipException: duplicate entry: bolts/AggregateException.class 

Mon App gradle est ci-dessous

  • J'ai besoin de changer la couleur de la course à une couleur définie par l'utilisateur. Rien à voir avec l'état
  • Comment charger des vignettes vidéo à l'aide de la bibliothèque Picasso carrée?
  • Pourquoi ma application utilise-t-elle toute la mémoire et obtenez OutOfMemoryError: Impossible d'attribuer?
  • Trace: requestLayout () mal appelé?
  • Comment puis-je configurer des espaces de noms personnalisés dans le fichier de mise en page dans Android Studio?
  • Le problème de l'orientation de l'image capturée par l'appareil photo avant et arrière de l'Android, tourné de façon incorrecte
  •  apply plugin: 'com.android.application' android { compileSdkVersion 21 buildToolsVersion '21.1.2' defaultConfig { applicationId "com.example.myproject" minSdkVersion 9 targetSdkVersion 21 versionCode 1 versionName "1.0" multiDexEnabled = true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.3' compile project(':facebook') } 

    Et voici le build.gradle de Facebook

     apply plugin: 'com.android.library' repositories { mavenCentral() } project.group = 'com.facebook.android' dependencies { compile 'com.android.support:support-v4:[21,22)' compile 'com.parse.bolts:bolts-android:1.1.4' } android { compileSdkVersion 21 buildToolsVersion '21.1.2' defaultConfig { minSdkVersion 9 targetSdkVersion 21 } lintOptions { abortOnError false } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] res.srcDirs = ['res'] } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } } apply plugin: 'maven' apply plugin: 'signing' def isSnapshot = version.endsWith('-SNAPSHOT') def ossrhUsername = hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : "" def ossrhPassword = hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : "" task setVersion { // The version will be derived from source project.version = null def sdkVersionFile = file('src/com/facebook/FacebookSdkVersion.java') sdkVersionFile.eachLine{ def matcher = (it =~ /(?:.*BUILD = \")(.*)(?:\".*)/) if (matcher.matches()) { project.version = matcher[0][1] return } } if (project.version.is('unspecified')) { throw new GradleScriptException('Version could not be found.', null) } } uploadArchives { repositories.mavenDeployer { beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") { authentication(userName: ossrhUsername, password: ossrhPassword) } snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") { authentication(userName: ossrhUsername, password: ossrhPassword) } pom.project { name 'Facebook-Android-SDK' artifactId = 'facebook-android-sdk' packaging 'aar' description 'Facebook Android SDK' url 'https://github.com/facebook/facebook-android-sdk' scm { connection 'scm:git@github.com:facebook/facebook-android-sdk.git' developerConnection 'scm:git@github.com:facebook/facebook-android-sdk.git' url 'https://github.com/facebook/facebook-android-sdk' } licenses { license { name 'The Apache Software License, Version 2.0' url 'https://github.com/facebook/facebook-android-sdk/blob/master/LICENSE.txt' distribution 'repo' } } developers { developer { id 'facebook' name 'Facebook' } } } } } uploadArchives.dependsOn(setVersion) signing { required { !isSnapshot && gradle.taskGraph.hasTask("uploadArchives") } sign configurations.archives } task androidJavadocs(type: Javadoc) { source = android.sourceSets.main.java.srcDirs classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) } task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) { classifier = 'javadoc' from androidJavadocs.destinationDir } task androidSourcesJar(type: Jar) { classifier = 'sources' from android.sourceSets.main.java.sourceFiles } artifacts { archives androidSourcesJar archives androidJavadocsJar } afterEvaluate { androidJavadocs.classpath += project.android.libraryVariants.toList().first().javaCompile.classpath } 

  • Le chevauchement des lignes GridView: comment faire que la hauteur des lignes corresponde à l'élément le plus élevé?
  • Comment Google vérifie-t-il SHA1 et le nom du package dans les appels API?
  • Android - Comment chargez-vous efficacement une grande quantité de texte dans un TextView?
  • Android crée des configurations pour plusieurs clients
  • Utilisation du mode hôte USB 3.1 avec Arduino
  • Gradle Sync failed n'a pas pu trouver la configuration de contrainte: 1.0.0-alpha2
  • 5 Solutions collect form web for “Android Studio Gradle error "Plusieurs fichiers dex définissent …"”

    Maintenant, ils se séparent des boulons – Android dans des boulons – appliques et boulons – tâches. De plus, vous devez exclure les deux de la construction de gradle

     compile ('com.facebook.android:facebook-android-sdk:4.10.0'){ exclude group: 'com.parse.bolts', module: 'bolts-tasks' exclude group: 'com.parse.bolts', module: 'bolts-applinks';} 

    Cela fonctionne parfaitement pour moi !!!!

    Pour moi, j'ajoute Facebook SDK en tant que projet et le configuré comme dépendance.

    Toutefois, le travail d'exclusion après avoir changé pour utiliser la source maven.

    Je pense que c'est pour maven seulement, pas pour les dépendances de projet? (Veuillez fournir des informations correctes si quelqu'un en sait)

    En d'autres termes, vous pouvez maintenant supprimer le projet et les fichiers SDK de Facebook.

    N'oubliez pas d'ajouter

     repositories { mavenCentral() } 

    Si vous n'utilisiez pas maven.

    Donc, le build.gradle ressemble à ceci, j'ai commenté le projet.

     repositories { mavenCentral() } dependencies { compile fileTree(dir: 'libs', include: '*.jar') compile project(':google-play-services_lib') compile ('com.facebook.android:facebook-android-sdk:3.23.0'){ exclude module: 'bolts-android' exclude module: 'support-v4' } // compile (project(':FacebookSDK')){ // exclude module: 'bolts-android' // exclude module: 'support-v4' // } compile (project(':UserVoiceSDK')){ exclude module: 'support-v4' } } 

    J'ai eu un problème similaire. C'était vraiment frustrant pour moi parce que tout fonctionnait bien et tout à coup il a éclaté sans raison.

    La question est laissée entendre en duplicate entry: bolts/AggregateException.class . C'est un choc de la bibliothèque Bolts, utilisée par Facebook et Parse.

    Pour moi, le problème réside dans ces deux lignes:

     compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.parse.bolts:bolts-android:1.1.4' 

    J'ai téléchargé les bibliothèques de Parse et les ai placées dans le dossier /libs/ . Le problème était qu'il y avait un autre bolts-android fichier bolts-android dans ce dossier.

    La solution consiste à supprimer cette bibliothèque et à conserver la partie compile 'com.parse.bolts:bolts-android:1.1.4' .

    Autre problème

    Dans mon cas, j'ai utilisé compile 'com.parse.bolts:bolts-android:1.+' au lieu d'une version spécifique. Cela prend toujours la dernière version. Donc, lorsque des bolts mis à niveau vers la version 1.2.0 , tout semblait se rompre de manière aléatoire parce que tout à coup la version dans /libs/ folder et la dernière version ne sont plus alignées.

    La meilleure pratique consiste à éviter les versions de style 1.+ et à continuer de vérifier et de mettre à jour la dernière version de temps en temps.

    J'espère que ça aide quelqu'un.

    Il n'est pas nécessaire d'enlever les fichiers jar. Dans le fichier Gradle, nous avons écrit ces deux lignes

     compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.parse.bolts:bolts-android:1.1.4' 

    Il suffit de supprimer

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

    Parce que nous compilons tous les fichiers jar, puis à nouveau, y compris les boulons à compiler en raison de quoi l'erreur est affichée

    Dans mon cas, j'ai ajouté un .jar dans le code de la bibliothèque. La bibliothèque à son tour est utilisée dans l'application principale. Le dex était encore dans le fichier cache même si j'avais nettoyé mon projet et l'ai installé. Pour être sûr que dans l'application principale, vous pouvez vérifier le nombre de la bibliothèque. Le fichier cache est "Project -> build -> dex-cache -> cache.xml". Si vous avez plusieurs comptes de la bibliothèque, vous devez le faire dans Android Studio -> Fichier -> invalider le cache / redémarrer

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.