Android Studio Multiple Dex Dateien Gradle Fehler

Ich bekomme diesen Fehler, wenn ich Run-> App für eine Android-Anwendung in Android Studio

UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define Lcom/google/common/annotations/Beta; ... 

Und hier ist die Ausgabe von gradlew -q: app: Abhängigkeiten

 +--- project :shared +--- com.google.api-client:google-api-client:1.19.0 | +--- com.google.oauth-client:google-oauth-client:1.19.0 | | +--- com.google.http-client:google-http-client:1.19.0 | | | +--- com.google.code.findbugs:jsr305:1.3.9 | | | \--- org.apache.httpcomponents:httpclient:4.0.1 | | | +--- org.apache.httpcomponents:httpcore:4.0.1 | | | +--- commons-logging:commons-logging:1.1.1 | | | \--- commons-codec:commons-codec:1.3 | | \--- com.google.code.findbugs:jsr305:1.3.9 | +--- com.google.http-client:google-http-client-jackson2:1.19.0 | | +--- com.google.http-client:google-http-client:1.19.0 (*) | | \--- com.fasterxml.jackson.core:jackson-core:2.1.3 | \--- com.google.guava:guava-jdk5:13.0 +--- com.google.http-client:google-http-client-gson:1.19.0 | \--- com.google.code.gson:gson:2.1 +--- com.google.api-client:google-api-client-android:1.19.0 | +--- com.google.api-client:google-api-client:1.19.0 (*) | \--- com.google.http-client:google-http-client-android:1.19.0 | \--- com.google.http-client:google-http-client:1.19.0 (*) +--- com.google.http-client:google-http-client-android:1.19.0 (*) +--- com.google.guava:guava:14.0.+ -> 14.0.1 +--- project :backend-appengine | \--- com.google.api-client:google-api-client-android:1.19.0 (*) +--- com.android.support:appcompat-v7:20.0.0 | \--- com.android.support:support-v4:20.0.0 | \--- com.android.support:support-annotations:20.0.0 +--- com.google.android.gms:play-services:5.0.89 \--- com.google.maps.android:android-maps-utils:0.3.+ -> 0.3.1 

Hier ist der Abhängigkeitsblock von build.gradle

 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile project(':shared') // Add the Google API client library. compile(group: 'com.google.api-client', name: 'google-api-client', version: '1.19.0') { // Exclude artifacts that the Android SDK/Runtime provides. exclude(group: 'com.google.guava') //-- !!! this does not seem to work !!! exclude(group: 'xpp3', module: 'xpp3') exclude(group: 'org.apache.httpcomponents', module: 'httpclient') exclude(group: 'junit', module: 'junit') exclude(group: 'com.google.android', module: 'android') exclude(group: 'com.google.http-client', module: 'google-http-client') } compile('com.google.http-client:google-http-client-gson:1.19.0') { exclude module: 'httpclient' exclude(group: 'com.google.http-client', module: 'google-http-client') } compile(group: 'com.google.api-client', name: 'google-api-client-android', version: '1.19.0') { exclude(group: 'com.google.android.gms', module: 'play-services') exclude group: 'com.google.guava', module: 'guava-jdk5' } compile(group: 'com.google.http-client', name: 'google-http-client-android', version: '1.19.0') { exclude(group: 'com.google.android', module: 'android') } // This is used by the Google HTTP client library. compile(group: 'com.google.guava', name: 'guava', version: '14.0.+') //-- endpoints dependencies { compile project(path: ':backend-appengine', configuration: 'android-endpoints') } compile 'com.android.support:appcompat-v7:20.0.0' compile ('com.google.android.gms:play-services:5.0.89') { exclude(group: 'com.android.support', module: 'support-v4') } compile ('com.google.maps.android:android-maps-utils:0.3.+') { exclude(group: 'com.google.android.gms', module: 'play-services') } } 

  • Uses-sdk-Element kann kein Attribut "tools: node" haben
  • Fehler: Ausführung fehlgeschlagen für Task ': app: transformClassesWithDexForDebug'. > Com.android.build.api.transform.TransformException: .. Nicht-Null-Exit-Wert 3
  • Geplante Abhängigkeiten können nur Gläser sein
  • Android Studio - Ausgabe in build.gradle uncaught Übersetzungsfehler ExecutionException OutOfMemory
  • Überprüfen Sie, ob Bibliothek in Android App verwendet wird
  • DELETE_FAILED_INTERNAL_ERROR Fehler beim Installieren von APK
  • CircleCI Android Nicht unterstützt major.minor Version 52.0
  • Java.lang.NoClassDefFoundError: android.support.v4.view.LayoutInflaterCompatHC in Android Studio
  • 4 Solutions collect form web for “Android Studio Multiple Dex Dateien Gradle Fehler”

    Das Paket com.google.common.annotations scheint Teil von Guava zu sein. Ich sehe es in den Abhängigkeiten zweimal in leicht unterschiedlichen Variationen: einmal als Teil des Google API Clients, einmal als eigene Abhängigkeit:

     +--- com.google.api-client:google-api-client:1.19.0 | \--- com.google.guava:guava-jdk5:13.0 

    und

     +--- com.google.guava:guava:14.0.+ -> 14.0.1 

    Also die Ursache für diesen Fehler ist, dass Sie die gleichen Klassen in mehreren Dex-Dateien (in verschiedenen Variationen der Guava-Bibliothek), die von Ihren anderen Abhängigkeiten enthalten sind definiert. Sie müssen einen Weg finden, diese doppelten Abhängigkeiten auszuschließen, oder möglicherweise nur sicherzustellen, dass Sie die gleiche Version über alle Abhängigkeiten verwenden.

    Eine Sache, die Sie versuchen könnten, ist, das Guave-Modul von einer der Abhängigkeiten auszuschließen. Also, wo Sie das API-Client-Modul definiert haben, fügen Sie eine Ausschlussregel für das Guave-Modul hinzu:

     compile ('com.google.api-client:google-api-client:1.19.0') { exclude group: 'com.google.guava', module: 'guava-jdk5' } 

    Ich kann nicht garantieren, dass dies keine Probleme für die Google API Client-Bibliothek verursacht (da sie zwei verschiedene Versionen von Guava sind), aber es ist einen Versuch wert.

    BEARBEITEN: Von deinen depdencies versuchen sie zu ändern:

     compile(group: 'com.google.api-client', name: 'google-api-client', version: '1.19.0') { // Exclude artifacts that the Android SDK/Runtime provides. exclude(group: 'com.google.guava') //-- !!! this does not seem to work !!! 

    nach:

     compile(group: 'com.google.api-client', name: 'google-api-client', version: '1.19.0') { exclude(group: 'com.google.guava', module: 'guava-jdk5') 

    Die Google-Api-Client-Android-Bibliothek enthält eigentlich keine Guave – ich wusste nicht, dass Sie dort zwei gleichnamige Abhängigkeiten hatten.

    Für diejenigen, die Google Cloud Endpunkte in Android App verwenden:

     compile(project(path: ':backend', configuration: 'android-endpoints')) { exclude(module: 'guava-jdk5') } 

    Wo backend ist Name Ihres Moduls mit AppEngine App.

    In jedem anderen Fall nur für guava-jdk5 transitive Abhängigkeit suchen und ausschließen.

    Es scheint, dass du nicht beide guave und guava-jdk5 im selben Projekt verwenden kannst. Guava-jdk5 wird immer noch beibehalten, also erwäge die Änderung deines Projekts Guave Verweis auf guava-jdk5:

     compile 'com.google.guava:guava-jdk5:17.0' 

    Hier ist die richtige Lösungslösung, für mich gearbeitet. Ohne das guava-jdk5-Abhängigkeitsmodul von jedem einzelnen Import ist kontraproduktiv (für mich hat es nicht funktioniert, weil ich einige interne Abhängigkeiten aus meinem Backend hatte, von denen meine App abhängt, und das macht die eigentliche Frage mit diesem Ansatz aus).

    Das folgende löste das Problem und ist der empfohlene Ansatz:

     configurations { all*.exclude group: 'com.google.guava', module: 'guava-jdk5' } 

    Quelle : https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.Configuration.html

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