wake-up-neo.com

Mehrere Dex-Dateien definieren Lcom/Google/Firebase/FirebaseException

Bei der Firebase-Integration ist ein Problem aufgetreten. Zunächst habe ich Regeln zur build.gradle-Datei auf Stammebene hinzugefügt:

buildscript {
    repositories {
        maven { url "http://dl.bintray.com/populov/maven" }
        jcenter()
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:2.1.2'
        classpath 'com.google.gms:google-services:3.0.0'
    }
}

allprojects {
    repositories {
        maven { url "http://dl.bintray.com/populov/maven" }
        jcenter()
    }
}

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

Und das Modul Gradle-Datei:

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 24
    buildToolsVersion "24"

    defaultConfig {
        applicationId "com.example.app"
        minSdkVersion 14
        targetSdkVersion 24
        versionCode 2
        versionName "0.9"
    }
    buildTypes {
       ///
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.google.firebase:firebase-core:9.0.2'
    compile 'com.google.firebase:firebase-crash:9.0.2'
}

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

Während der Erstellung des Projekts bekomme ich den Fehler:

Fehler: Fehler beim Konvertieren von Bytecode in Dex: Ursache: com.Android.dex.DexException: Mehrere Dex-Dateien definieren Lcom/google/firebase/FirebaseException;

Fehlerursache ist klar, aber ich habe keine Bibliothek doppelt kompiliert. Soll ich die FirebaseException-Klasse manuell aus dem Erstellungsprozess ausschließen? Wenn das so ist, wie? Vielleicht ist dies ein Fehler in den Firebase-Abhängigkeiten?

Vielen Dank.

22
Mark Korzhov

Ich hatte dieses Problem mit react-native-google-signin Modul. Da die Anweisungen zum Ändern von build.gradle häufig nicht aktuell, unvollständig oder nur in mehreren nicht verwandten Projekten definiert sind, wurde das Projekt erst kompiliert, nachdem die Einstellungen aus dem Beispielprojekt react-native-google-signin kopiert wurden. Es stellt sich heraus, dass die Reihenfolge der Anweisungen ebenso wichtig ist wie der Befehl exclude group. Das Endergebnis sah so aus (in app/build.gradle):

dependencies {
    ...
    compile 'com.google.Android.gms:play-services-auth:9.2.1'
    compile(project(":react-native-google-signin")) {
        exclude group: "com.google.Android.gms"
    }   
}

task copyDownloadableDepsToLibs(type: Copy) {
   from configurations.compile
   into 'libs'
}

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

Der obere build.gradle enthielt wie üblich einen zusätzlichen gms-Klassenpfad:

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:2.2.2'
        classpath 'com.google.gms:google-services:3.0.0'
    }
}

Nach diesen Änderungen wurde der Build ohne Multiple dex-Fehler abgeschlossen.

13
mp31415

FireBase ist eine riesige Bibliothek, daher müssen Sie die Unterstützung für Multidex in Ihrer Anwendung aktivieren.

dependencies {
    compile ('com.google.firebase:firebase-core:9.0.2') {
        exclude module: 'play-services-base'
        exclude module: 'support-v4'
        exclude module: 'support-annotations'
    }
    compile 'com.Android.support:multidex:1.0.1'
}

defaultConfig {
        // Enabling multidex support.
        multiDexEnabled true
}
4

Sieht aus, als hätten Sie Begrenzung der Anzahl der Methoden erreicht. Versuchen Sie, firebase Abhängigkeiten zu entfernen und die Anzahl der Methoden für Ihre App zu überprüfen (beispielsweise mit dieses gradle plugin (wenn Sie diese Abhängigkeiten nicht entfernen, können Sie Ihr Projekt überhaupt nicht erstellen um die Methoden count plugin zu verwenden).

Firebase ist eine riesige Bibliothek - 17k + -Methoden. Es hängt von Tonnen von Sachen ab. Sie können die Liste der Abhängigkeiten überprüfen, indem Sie auf diese Schaltfläche auf "Methodscount.com" klicken: enter image description here

Wenn Sie bereits einige davon in Ihrem Projekt haben, können Sie versuchen, sie auszuschließen:

compile ('com.google.firebase:firebase-core:9.0.2') {
    exclude module: 'play-services-base'
    exclude module: 'support-v4'
    exclude module: 'support-annotations'
}

Wenn dies nicht hilft, sollten Sie Multidex konfigurieren für Ihr Projekt konfigurieren.

3
Denis Kniazhev

Ich verwende reag-native-maps und reag-native-google-signin.

Und ich habe Mehrere Dex-Dateien definieren Lcom/google/firebase/FirebaseException

Brüll meine Lösung.

Build.gradle öffnen (reaktative Karten)

dependencies {
     provided "com.facebook.react:react-native:+"
     compile "com.google.Android.gms:play-services-base:10.2.4"
     compile "com.google.Android.gms:play-services-maps:10.2.4"
}

Die Version ist 10.2.4

Öffne weiter build.gradle (reag-native-google-signin)

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile "com.Android.support:appcompat-v7:23.0.1"
    compile 'com.google.Android.gms:play-services-auth:9.2.1' <- change here
    compile "com.facebook.react:react-native:+"
}

Es verwendet Version 9.2.1, und das ist ein Grund. 

Ändern Sie es auf Version 10.2.4 

compile 'com.google.Android.gms:play-services-auth:10.2.4'

Öffnen Sie anschließend build.gradle (app) und fügen Sie eine neue hinzu 

compile 'com.google.Android.gms:play-services-auth:10.2.4'

Jetzt hast du.

compile 'com.google.Android.gms:play-services-auth:10.2.4'
compile(project(":react-native-google-signin")){
    exclude group: "com.google.Android.gms" 
}

Führen Sie den Befehl cd Android & gradlew clean & cd .. util kein Fehler aus, und führen Sie dann react-native run-Android..__ aus. Die Hoffnung kann helfen.

1
Tuan Nguyen

Falls es irgendjemandem hilft, hatte ich ein ähnliches Problem. Es wurde durch das Gradle-Plugin für Google-Dienste verursacht, das eine Abhängigkeit mit Firebase verursachte.

In meinem obersten Build.gradle-Level hatte ich in buildscript:

classpath 'com.google.gms:google-services:3.0.0'

Was brachte (automatisch) Abhängigkeiten mit sich, mit denen in build.gradle meiner App ein Konflikt bestand:

compile 'com.firebaseui:firebase-ui-auth:2.2.0'

Etwas verwirrend, da ich nur eine Compile-Abhängigkeit hatte und meinen Kopf kratzte, was zu einem Konflikt führen konnte.

Ich habe das Google-Services-Plugin entfernt und das Problem wurde behoben. Ich vermute, ich könnte auch nur die richtige Version finden :)

1
zedix

Dies ist darauf zurückzuführen, dass einige Ihrer Bibliotheken andere Versionen anderer Bibliotheken verwenden.

Sehen Sie sich Ihre zuletzt hinzugefügte Bibliothek an und schließen Sie sie aus. Für mein Projekt war das "React-native-firestack".

compile(project(':react-native-firestack')){
     exclude group: "com.google.Android.gms" // very important
}
0
MultiGameguard

Dieser Fehler ist bei der Verwendung von Firebase-ui: 2.0.0 aufgetreten. Es ist mir gelungen, das Problem durch ein Downgrade auf 'com.firebaseui:firebase-ui:1.2.0' zu lösen und die folgende Zeile in Projektebene build.gradle hinzugefügt:

allprojects {
    repositories {
        jcenter()

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

Dank diesem Beitrag können Sie Ihre Google-Abhängigkeitsversionen auf die letzte Version überprüfen und aktualisieren.

Ich könnte mein Problem beheben. Das Problem war, dass BaseGameUtils immer noch .__ war. Verwenden/Referenzieren einer älteren Version von Play-Services. Das korrekte .__ hinzugefügt. Version, und es funktioniert jetzt. Ich denke, ich werde BaseGameUtils für mein nächstes .__ weglassen. Projekt.

0
Pablo Cegarra