Android Firebase DynamiteModule: Der Moduldeskriptor konnte nicht geladen werden

Seit der Aktualisierung auf die neueste Version von Firebase (9.0.0) kann ich die folgenden zwei Fehler nicht mehr beheben, wenn ich einen Benutzer über signInWithEmailAndPassword() authentifiziere. Hat jemand eine Idee was los ist?

  05-19 18:09:49.245 23550-23589/[PACKAGE] E/DynamiteModule: Failed to load module descriptor class: Didn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor" on path: DexPathList[[zip file "/data/app/[PACKAGE]-3/base.apk"],nativeLibraryDirectories= [/data/app/[PACKAGE]-3/lib/x86, /vendor/lib, /system/lib]] 

Und

  05-19 18:09:49.252 23550-23550/[PACKAGE] E/FirebaseApp: Firebase API initialization failure.java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at com.google.firebase.FirebaseApp.zza(Unknown Source) at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) at com.google.firebase.FirebaseApp.zzbu(Unknown Source) at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source) at android.content.ContentProvider.attachInfo(ContentProvider.java:1748) at android.content.ContentProvider.attachInfo(ContentProvider.java:1723) at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source) (...) Caused by: java.lang.IncompatibleClassChangeError: The method 'java.io.File android.support.v4.content.ContextCompat.getNoBackupFilesDir(android.content.Context)' was expected to be of type virtual but instead was found to be of type direct (declaration of 'com.google.firebase.iid.zzg' appears in /data/data/[PACKAGE]/files/instant-run/dex/slice-com.google.firebase-firebase-iid-9.0.0_95503dc60ed409569d1585da411de93e6c633bf7-classes.dex) at com.google.firebase.iid.zzg.zzeC(Unknown Source) at com.google.firebase.iid.zzg.(Unknown Source) at com.google.firebase.iid.zzg.(Unknown Source) at com.google.firebase.iid.zzd.zzb(Unknown Source) at com.google.firebase.iid.FirebaseInstanceId.getInstance(Unknown Source) at java.lang.reflect.Method.invoke(Native Method) at com.google.firebase.FirebaseApp.zza(Unknown Source) at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) at com.google.firebase.FirebaseApp.zzbu(Unknown Source) at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source) at android.content.ContentProvider.attachInfo(ContentProvider.java:1748) at android.content.ContentProvider.attachInfo(ContentProvider.java:1723) at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source) (...) 

Können Sie Ihre Google Play Services-Version überprüfen?

Von der offiziellen Website von Firebase:

Voraussetzungen

  • Ein Android-Gerät, auf dem Google Play-Dienste 9.0.0 oder höher ausgeführt werden
  • Das Google Play-Dienst-SDK vom Android SDK-Manager
  • Android Studio 1.5 oder höher
  • Ein Android Studio-Projekt und dessen Paketname.

Ich hatte das gleiche Problem und habe einen Fehler in meiner Firebase Konsole gefunden.

Einer der Gründe für dieses Problem könnte sein, dass Ihre Anmeldemethode in Firebase> Auth Dashboard deaktiviert ist.

Ich habe es einfach aktiviert und es hat angefangen zu arbeiten.

Sehr schade, dass Firebase-Initialisierungserrors nicht so einfach sind, also müssen Entwickler raten, was schief gelaufen ist. In meinem Fall habe ich nur importiert:

 compile 'com.google.firebase:firebase-auth:10.2.0' 

und vergessen, auch core zu importieren:

 compile 'com.google.firebase:firebase-core:10.2.0' 

Vielleicht wird es jemandem helfen, viel Glück!

Ich habe das Problem gefunden. Das Problem war die erste Voraussetzung, die Guilherme erwähnt hat, aber nicht der fettgedruckte Teil. Obwohl Ihre Abhängigkeiten auch 9. + des Play Services-Teils angeben müssen, müssen die Geräte selbst auch 9. + installiert sein . Debugging auf meinem Handy funktioniert gut und das Aktualisieren des Images meines Emulators triggers das Problem auch dort.

Das Deaktivieren von Instant Run funktionierte für mich. Klingt lächerlich, ich weiß. Ich habe versucht, das Projekt zu säubern. Ich habe versucht, die App zu deinstallieren / neu zu installieren. Die Sache, die schließlich den Trick vollbrachte, war das Deaktivieren von Instant Run. Seufzer

Ich habe mich ausgeloggt und dann eingeloggt und es hat dieses Problem für mich getriggers.

Wahrscheinlich von einer Art Synchronisation haben die FB-Sachen nicht umgesetzt.

Wenn dieses Problem besteht, werde ich versuchen, es abzufangen. Aber das ist ein Fehler im Firebase-System. Und es ist ein Fehler, der von mehr als einem Anwendungsfall verursacht wird, was ein anderes Problem ist.

Sie können beim Hinzufügen von Google anmelden Option vor der Verwendung überprüfen

 GoogleSignInOptions gso = new GoogleSignInOptions .Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .build(); 

Fügen Sie eine Zeile wie im folgenden Code gezeigt hinzu

 GoogleSignInOptions gso = new GoogleSignInOptions .Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(getString(R.string.default_web_client_id)) .requestEmail() .build(); 

nach dem Hinzufügen, wenn Sie den Fehler erhalten wie

 An internal error has occured. [ Invalid Idp Response: id_token audience mismatch. ] 

Dann klicken Sie hier, um eine Lösung zu bekommen, die für mich funktioniert.

Wenn Sie nur die Firebase-Authentifizierung verwenden möchten und Sie wegen des Fehlers hierher gekommen sind:

Die class “com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor” wurde nicht gefunden.

Gehen Sie zu https://console.firebase.google.com/project/ [Ihr Projekt] / Authentifizierung / Anbieter und aktivieren Sie die von Ihnen unterstützten Authentifizierungsanbieter.

Ich hatte ähnliches Problem mit der Anmeldung des Benutzers, aber schließlich eine funktionierende Lösung gefunden.

Deinstalliere HAXM und installiere es neu, behebe mein Problem und registriere den Benutzer erfolgreich bei firebase auth 🙂

Diese Antwort auf eine andere Frage hat meine App authentifiziert

Alfonso Gomez Jordana Manas

Hallo Pierre,

Sie müssen Ihre vorhandenen Google OAuth 2.0-Client-IDs in der Firebase-Konsole manuell auf die weiße Liste setzen, bevor Sie sie mit den neuen Auth-APIs verwenden.

Um dies zu tun, folgen Sie diesen Schritten:

  • Gehen Sie zum Abschnitt Credentials in der Google API Console.
  • Wählen Sie oben rechts das Projekt aus, für das Sie Google Sign-In konfiguriert haben.
  • Wechseln Sie zum Abschnitt OAuth 2.0-Client-IDs. Wenn Sie Google Sign-In für Android- oder iOS-Anwendungen verwenden: Notieren Sie sich die Client-ID-Zeichenfolge, die allen für Ihre Anwendungen registrierten Einträgen entspricht.
  • Geben Sie diese Client-IDs in die Konfiguration Ihres Firebase-Projekts ein:
  • Rufen Sie die Firebase-Konsole unter https://console.firebase.google.com auf
  • Öffnen Sie den Abschnitt Auth

    Öffnen Sie unter Anmeldemethoden die Google-Konfiguration und fügen Sie alle Ihre Client-IDs der Whitelist der Client-IDs aus externen Projekten hinzu. Wenn Sie Google Sign-In für eine Webanwendung verwenden: Klicken Sie hier, um Ihre Web-Client-ID zu öffnen, und notieren Sie sich die Client-ID und das Geheimnis. Geben Sie diese Client-ID in die Konfiguration Ihres Firebase-Projekts ein: Rufen Sie die Firebase-Konsole unter https://console.firebase.google.com auf. Öffnen Sie den Auth-Abschnitt Unter Anmeldemethoden, öffnen Sie die Google-Konfiguration und fügen Sie die Werte unter dem Web SDK hinzu Konfigurationsabschnitt.

Lassen Sie mich wissen, ob dies Ihr Problem triggers.

Wenn du alles tust, aber nichts hast, versuche dein ARM EABI zu aktualisieren.

Google APIs ARM EABI v7a Systemabbild

Wenn dein Emulator keine neuen Updates hat, bekommst du immer einen Auth-Fehler.

Tun Sie alles, was in diesem Post vorgeschlagen wird, aktualisieren Sie dann das ARM EABI-Image. Das hat mein Problem getriggers.

Dies kann auch passieren, wenn Sie die SHA1-Fingerabdrücke nicht in Firebase und in Google API registriert haben. Dort müssen beide zwei Fingerabdrücke registrieren: aus dem Debug-Keystore und aus dem Produktions-Keystore (generiert, wenn Sie die Projekt-APK zum ersten Mal erstellen, wenn Sie einige Passwort-Schlüssel in Android Studio eingeben).

Hier wird gezeigt, wie man den SHA1 von dort bekommt.

oder führen Sie diesen Befehl im Verzeichnis C:\Users\\.android .

 keytool -list -v -keystore debug.keystore 

Meine Erfahrung teilen: Ich stand vor demselben Problem, ich googelte überall, konnte aber nicht die genaue Antwort finden, selbst wenn ich alles tun würde, was in der Dokumentation von Google Android dokumentiert ist. Plötzlich nach einem Tag funktionierte meine App gut und im selben Moment erhielt ich die E-Mail von Google, die besagt, dass Google APIs Explorer mit Ihrem Google-Konto verbunden ist. Und es scheint mir, dass Google Zeit braucht, um uns Zugang zu gewähren, warten Sie einfach auf diese E-Mail, vielleicht hängt dieses Problem nicht mit schlechtem Code zusammen.