web-dev-qa-db-fra.com

Android Firebase DynamiteModule: impossible de charger le descripteur de module

Depuis la mise à niveau vers la dernière version de Firebase (9.0.0), je ne parviens pas à supprimer les deux erreurs suivantes lors de l’authentification d’un utilisateur via signInWithEmailAndPassword(). Est-ce que quelqu'un a une idée de ce qui se passe?

    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]]

Et

    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.<init>(Unknown Source)
      at com.google.firebase.iid.zzg.<init>(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) 

(...)
69

Pouvez-vous vérifier la version de vos services Google Play?

De Firebase oficial site web :

Prérequis

  • Un appareil Android sous services Google Play 9.0.0 ou ultérieur.
  • Le SDK des services Google Play à partir du Android SDK Manager
  • Android Studio 1.5 ou supérieur
  • Un projet Android Studio et son nom de package.

J'ai eu le même problème et j'ai trouvé une erreur faite par moi dans ma console Firebase.

Une des raisons de ce problème pourrait être que votre méthode de connexion dans Firebase> Tableau de bord automatique est peut-être désactivé.

Je viens de l'activer et ça a commencé à fonctionner.

28
Chandra Sekhar

Très triste que les erreurs d’initialisation de Firebase ne soient pas si simples, les développeurs doivent donc deviner ce qui ne va pas. Dans mon cas, je n'ai importé que:

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

et j'ai oublié d'importer aussi core:

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

Peut-être que ça va aider quelqu'un, bonne chance!

3
Artyom Okun

Je me suis déconnecté puis connecté et cela a résolu ce problème pour moi.

Probablement à partir d'une sorte de synchronisation, les éléments du FB n'ont pas été implémentés.

Si ce problème consiste, je vais essayer de l'intercepter. Mais en réalité, il s’agit d’un bogue dans le système Firebase. Et c'est un bogue causé par plus d'un cas d'utilisation, ce qui constitue un autre problème en soi.

1
sivi

J'ai trouvé le problème. La question était la première condition préalable mentionnée par Guilherme, mais pas la partie en caractères gras. Bien que vos dépendances doivent également indiquer explicitement 9. + de la partie des services de jeu, les périphériques eux-mêmes doivent également posséder la version 9. + installée =. Le débogage sur mon téléphone fonctionne bien et la mise à jour de l'image de mon émulateur résout également le problème.

1

Désactiver Instant Run a fonctionné pour moi. Cela semble ridicule, je sais. J'ai essayé de nettoyer le projet. J'ai essayé de désinstaller/réinstaller l'application. La chose qui a finalement fait le tour était de désactiver Instant Run. soupir

1
Bill Mote

Cette réponse à une autre question a permis à mon application de s'authentifier

Alfonso Gomez Jordana Manas

Bonjour pierre

Vous devez manuellement ajouter à la liste blanche vos identifiants client Google OAuth 2.0 existants dans la console Firebase avant de les utiliser avec les nouvelles API Auth.

Pour ce faire, procédez comme suit:

  • Accédez à la section Informations d'identification de la console Google API.
  • Dans le coin supérieur droit, sélectionnez le projet dans lequel vous avez précédemment configuré Google Sign-In.
  • Accédez à la section OAuth 2.0 identifiants client Si vous utilisez Google Sign-In sur Android ou applications iOS: notez la chaîne d'identifiant client correspondant à toutes les entrées enregistrées pour vos applications. .
  • Saisissez ces ID client dans la configuration de votre projet Firebase:
  • Accédez à la console Firebase à l'adresse https://console.firebase.google.com .
  • Ouvrir la section Auth

    Sous Méthodes de connexion, ouvrez la configuration Google et ajoutez tous vos identifiants de client à la liste blanche des identifiants de clients provenant de projets externes. Si vous utilisez Google Sign-In sur une application Web: Cliquez pour ouvrir votre identifiant de client Web et notez l'ID client et le secret. Entrez cet ID client dans la configuration de votre projet Firebase: Accédez à la console Firebase à l'adresse https://console.firebase.google.com . Ouvrez la section Auth. Méthodes de connexion, ouvrez la configuration de Google et ajoutez les valeurs dans la section Configuration du SDK Web.

Faites-moi savoir si cela résout votre problème.

0
Gustav Larsson

Partage de mon expérience: je faisais face au même problème, je cherchais partout dans Google mais je ne trouvais pas la réponse exacte, même si je faisais tout ce que décrit la documentation de Google Android. Soudainement après un jour, mon application fonctionnait bien et au même moment, j'ai reçu l'email de Google indiquant "Google APIs Explorer connecté à votre compte Google". Et il me semble que Google met du temps à nous accorder l'accès, attendez simplement cet email, peut-être que ce problème n'est pas lié à un code incorrect.

0
Django

J'avais un problème similaire avec l'inscription de l'utilisateur, mais j'ai finalement trouvé une solution efficace.

désinstaller le HAXM et le réinstaller résout mon problème et il réussit l'inscription de l'utilisateur à l'authentification de la base de feu :)

0
Farrukh Faizy

Si vous voulez juste utiliser l'authentification Firebase et que vous êtes arrivé à cause de l'erreur:

Impossible de trouver la classe "com.google.Android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor"

Accédez à https://console.firebase.google.com/project/ [votre projet] /authentication/providers et activer les fournisseurs d'authentification que vous supportez.

0
TouchBoarder

si vous faites tout mais que rien ne vous est donné, essayez de mettre à jour votre ARM EABI.

API Google ARM Image système EABI v7a

Si votre émulateur n'a pas de nouvelles mises à jour de lunettes, vous obtiendrez toujours une erreur d'authentification.

Faites tout ce qui est suggéré dans ce message, puis mettez à jour l'image ARM EABI. Cela a résolu mon problème.

0
Kaloglu

Cela peut également se produire lorsque les empreintes digitales SHA1 ne sont pas enregistrées dans Firebase et dans l'API Google. Dans ces deux cas, ils doivent enregistrer deux empreintes digitales: à partir du fichier de clés de débogage et du fichier de clés de production (générés lorsque vous créez l'apk du projet pour la première fois lorsque vous entrez des clés de mot de passe sur Android Studio).

Ici montre comment obtenir le SHA1 à partir de là.

ou exécutez cette commande dans le répertoire C:\Users\<user name>\.Android.

keytool -list -v -keystore debug.keystore
0
Rinaldi Segecin

Vous pouvez vérifier lors de l'ajout de l'option de connexion à Google avant d'utiliser

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

ajouter une ligne comme indiqué dans le code suivant

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

après avoir ajouté ceci si vous obtenez l'erreur comme

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

puis Cliquez ici pour trouver une solution, cela fonctionne pour moi.

0
K K