Causé par: java.lang.ClassNotFoundException: classe introuvable dans Firebase Phone Authentication

Oct 29 2020

J'utilise l'authentification téléphonique dans Android Studio via Firebase, j'ai activé la connexion téléphonique et j'ai ajouté SHA-1 et SHA-256 dans Firebase Project. voici toutes mes dépendances:

dependencies {

implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.2'
testImplementation 'junit:junit:4.13.1'
implementation 'com.hbb20:ccp:2.4.0'
implementation 'com.google.firebase:firebase-auth:20.0.0'
implementation 'com.google.firebase:firebase-analytics'
implementation platform('com.google.firebase:firebase-bom:26.0.0')
implementation 'com.google.android.gms:play-services-safetynet:17.0.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

et voici les journaux d'erreurs:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.securechat, PID: 24159
java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/browser/customtabs/CustomTabsIntent$Builder; at com.google.firebase.auth.internal.RecaptchaActivity.zza(com.google.firebase:firebase-auth@@20.0.0:92) at com.google.firebase.auth.api.internal.zzeq.zza(com.google.firebase:firebase-auth@@20.0.0:79) at com.google.firebase.auth.api.internal.zzeq.onPostExecute(com.google.firebase:firebase-auth@@20.0.0:88) at android.os.AsyncTask.finish(AsyncTask.java:695) at android.os.AsyncTask.access$600(AsyncTask.java:180)
    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:712) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6692) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
 Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.browser.customtabs.CustomTabsIntent$Builder" on path: DexPathList[[zip file "/data/app/com.example.securechat-GUvvd01g4yeRO2eP4pBFfA==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.securechat-GUvvd01g4yeRO2eP4pBFfA==/lib/arm64, /system/lib64, /vendor/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at com.google.firebase.auth.internal.RecaptchaActivity.zza(com.google.firebase:firebase-auth@@20.0.0:92)  at com.google.firebase.auth.api.internal.zzeq.zza(com.google.firebase:firebase-auth@@20.0.0:79)  at com.google.firebase.auth.api.internal.zzeq.onPostExecute(com.google.firebase:firebase-auth@@20.0.0:88)  at android.os.AsyncTask.finish(AsyncTask.java:695)  at android.os.AsyncTask.access$600(AsyncTask.java:180) 
    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:712)  at android.os.Handler.dispatchMessage(Handler.java:106)  at android.os.Looper.loop(Looper.java:193)  at android.app.ActivityThread.main(ActivityThread.java:6692)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 

Réponses

14 TaizulIslam Oct 30 2020 at 01:38

la mise en oeuvre androidx.browser:browser:1.2.0

Utilisez cette dépendance pour résoudre le problème.

2 FrankvanPuffelen Oct 29 2020 at 20:48

Puisque vous utilisez la firebase-bomdépendance , cette bibliothèque détermine la version de tous les SDK Firebase que vous utilisez. Cela signifie que vous ne devez pas spécifier de numéros de version pour les autres SDK Firebase dans votre fichier gradle.

Supprimez donc le numéro de version de firebase-auth:

implementation 'com.google.firebase:firebase-auth'
implementation 'com.google.firebase:firebase-analytics'
implementation platform('com.google.firebase:firebase-bom:26.0.0')
2 PratapSharma Nov 27 2020 at 00:20

Si quelqu'un vient de react-native, après avoir cherché partout, j'ai trouvé cette solution temporaire.

Ajout de ce qui suit

implementation "androidx.browser:browser:1.2.0"

dans les dépendances android / app / build.gradle résolu le problème.

1 SajidZeb Nov 24 2020 at 03:33

Vous avez besoin de CustomTabs à ajouter à votre projet afin que votre application mobile puisse accéder au navigateur à l'aide de CustomTabs

implementation 'com.android.support:customtabs:28.0.0'
1 shivammishra Dec 15 2020 at 18:06

La même chose s'est produite avec moi. Ce que j'ai fait a essentiellement supprimé la ligne suivante-

implementation platform('com.google.firebase:firebase-bom:26.0.0')

SiddheshSalunke Dec 01 2020 at 21:39

Les gars, j'ai trouvé un moyen de suivre les étapes. Dans "Documents d'authentification par téléphone" de Firebase, vous trouverez l'option (2. Activer la vérification de l'application) Suivez ces étapes:

  • Activez l'API de vérification d'AndroidDevice en cliquant dessus.

  • Ajoutez ensuite votre SHA-256. (Gradle sur le côté droit de android studio->Tasks->android->signingReports.)

Vous y trouverez votre SHA-256 pour votre application.

HimanshiThakur Dec 10 2020 at 15:23

Dans la nouvelle version d'authentification de Firebase, ils ont apporté des changements majeurs tels que Recaptcha, SafetyNet pour la vérification humaine. En ajoutant

implémentation "androidx.browser: navigateur: 1.2.0"

cela a résolu mon problème mais l'expérience utilisateur n'était pas bonne car Firebase ouvrait le navigateur pour vérifier Recaptcha et cela semblait étrange dans le flux de l'application.

Firebase Quote " Le flux reCAPTCHA ne sera déclenché que lorsque SafetyNet n'est pas disponible ou que votre appareil ne réussit pas les contrôles de suspicion. Néanmoins, vous devez vous assurer que les deux scénarios fonctionnent correctement. " Donc, pour activer SafetyNet, suivez les étapes ci-dessous ou vous pouvez également visiter Firebase Auth pour plus d'informations.

  1. Accédez à la console Google Cloud, sélectionnez votre projet.
  2. Cliquez sur le menu de navigation et sélectionnez APis & services, puis sélectionnez Dashboard.
  3. Cliquez sur Activer l'API et les services et activez l'API "Vérification de l'appareil Android".

4.Ajoutez SHA 256 dans les paramètres du projet Firebase (déboguez et relâchez les deux)