Android Studio Gradle Fehler "Mehrere Dex-Dateien definieren …"

Mein Projekt hat gut geklappt, als ich facebook sdk in mein Projekt aufgenommen habe, habe ich einen Fehler wie dieses, ich habe so viele Möglichkeiten versucht, das zu beheben, aber ich habe es nicht getan. Was soll ich machen?

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

Mein App gradle ist unten

  • Android-Set-XML-Form als programmierbar
  • Schwimmende Aktionstaste beim Scrollen nach dem Aktualisieren von Google Support & Design Library nicht sichtbar
  • Machen Folder in sdcard mit passwortgeschützten: android
  • Import und laufe ein Phonegap 3.0 Projekt mit Intellij IDEA 12/13?
  • Min Höhe fill_parent und height wrap_content in ScrollView? (Oder nur die E-Mail-App komponieren Layout-Code)
  • Sollte ein MediaPlayer in separaten Thread laufen?
  •  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') } 

    Und hier ist das facebook build.gradle

     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 } 

  • Android-Tests erstellen Fehler: Mehrere Dex-Dateien definieren Landroid / support / test / BuildConfig
  • Kann nicht die Klasse android.support.v7.widget.SearchView instanziieren
  • Adb erkennt nicht samsang gear live oder lg g watch
  • Setzen Sie ImageView Breite und Höhe programmgesteuert auf ein Widget
  • Pause einer Android App mit Phonegap
  • Wie bekomme ich den aktuellen Standort in Google Maps Android API v2?
  • 5 Solutions collect form web for “Android Studio Gradle Fehler "Mehrere Dex-Dateien definieren …"”

    Jetzt teilen sie Schrauben-Androide in Bolzen-applinks und Bolzen-Aufgaben. So müssen Sie beide aus dem Gradle bauen auszuschließen

     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';} 

    Das funktioniert perfekt für mich !!!!

    Für mich habe ich Facebook SDK als Projekt hinzugefügt und als Abhängigkeiten gesetzt.

    Allerdings ist die Ausschlussarbeit nach dem Umschalten auf die Maven-Quelle zu verwenden.

    Ich denke, es ist nur für Maven, nicht für Projektabhängigkeiten? (Bitte korrigieren Sie bitte, wenn jemand darüber Bescheid weiß)

    Mit anderen Worten können Sie jetzt das Facebook-SDK-Projekt und die Dateien löschen.

    Denken Sie daran, hinzuzufügen

     repositories { mavenCentral() } 

    Wenn du maven nicht benutzt hättest.

    So sieht das build.gradle so aus, ich habe den Projektweg kommentiert.

     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' } } 

    Ich hatte ein ähnliches Problem. Das war wirklich frustrierend für mich, denn alles hat gut geklappt und plötzlich brach es ohne Grund.

    Das Problem wird in duplicate entry: bolts/AggregateException.class angedeutet duplicate entry: bolts/AggregateException.class . Es ist ein Zusammenstoß der Bolzen-Bibliothek, die von Facebook und Parse verwendet wird.

    Für mich lag das Problem in diesen beiden Zeilen:

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

    Ich hatte die Parse Bibliotheken heruntergeladen und in den /libs/ Ordner gelegt. Das Problem war, dass es in diesem Ordner noch eine andere bolts-android Datei gab.

    Die Lösung ist, diese Bibliothek zu löschen und die compile 'com.parse.bolts:bolts-android:1.1.4' teil zu halten.

    Alternatives Problem

    In meinem Fall habe ich compile 'com.parse.bolts:bolts-android:1.+' anstelle einer bestimmten Version. Das nimmt immer die neueste Version. Also, wenn bolts auf Version 1.2.0 aktualisiert wurde, schien die Sache einfach zufällig zu brechen, weil plötzlich die Version in der /libs/ Ordner und die neueste Version nicht mehr ausgerichtet.

    Best Practice ist es, 1.+ Stil Versionierung zu vermeiden und halten Sie einfach zu überprüfen und Aktualisierung auf die neueste Version hin und wieder.

    Hoffe das hilft jemandem.

    Keine Notwendigkeit, irgendwelche Jar-Dateien zu entfernen. In der Gradle-Datei haben wir diese beiden Zeilen geschrieben

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

    Einfach entfernen

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

    Weil wir alle Jar-Dateien kompilieren und dann wieder einschließlich der Bolzen zu kompilieren, aufgrund derer der Fehler angezeigt wird

    In meinem Fall hatte ich einen .jar im Bibliothekscode hinzugefügt. Die Bibliothek wird wiederum in der Haupt-App verwendet. Der dex war noch in der cache datei, auch wenn ich mein projekt gereinigt und installiert habe. Um sicher zu sein, in der Haupt-App können Sie die Anzahl der Bibliothek zu überprüfen. Die Cache-Datei lautet "Project -> build -> dex-cache -> cache.xml". Wenn du mehrere Zählungen der Bibliothek hast, dann musst du das in Android Studio -> Datei -> Cache / Neustart ungültig machen

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.