FirebaseApp par défaut n’est pas initialisé

Nous constatons quelques exceptions avec le message Default FirebaseApp is not initialized in this process com.example.app. Make sure to call FirebaseApp.initializeApp(Context) first. Default FirebaseApp is not initialized in this process com.example.app. Make sure to call FirebaseApp.initializeApp(Context) first. dans notre application Android dans laquelle nous venons d’append Firebase Remote Config.

La trace de la stack est la suivante:

 Fatal Exception: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.example.app. Make sure to call FirebaseApp.initializeApp(Context) first. at com.google.firebase.FirebaseApp.getInstance(Unknown Source) at com.google.firebase.remoteconfig.FirebaseRemoteConfig.getInstance(Unknown Source) at com.example.app.fragments.SomeFragment.updateFooter(SourceFile:295) at com.example.app.fragments.SomeFragment.onCreateView(SourceFile:205) at android.support.v4.app.Fragment.performCreateView(SourceFile:2080) at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1108) at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1290) at android.support.v4.app.BackStackRecord.run(SourceFile:801) at android.support.v4.app.FragmentManagerImpl.execSingleAction(SourceFile:1638) at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(SourceFile:679) at android.support.v4.app.FragmentPagerAdapter.finishUpdate(SourceFile:143) at android.support.v4.view.ViewPager.populate(SourceFile:1240) at android.support.v4.view.ViewPager.populate(SourceFile:1088) at android.support.v4.view.ViewPager.setAdapter(SourceFile:542) at com.example.app.SomeActivity.onSomeAsyncCallback(SourceFile:908) at com.example.app.SomeDataResortingever.onAsyncHttpCompleted(SourceFile:72) at com.example.app.io.AsyncHttp.onPostExecute(SourceFile:141) at com.example.app.io.AsyncHttp.onPostExecute(SourceFile:19) at android.os.AsyncTask.finish(AsyncTask.java:679) at android.os.AsyncTask.access$500(AsyncTask.java:180) at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:696) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:150) at android.app.ActivityThread.main(ActivityThread.java:5665) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:799) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:689) 

Ceci est la version 9.6.1 et nous utilisons également d’autres composants Firebase:

 comstack 'com.google.firebase:firebase-ads:9.6.1' comstack 'com.google.firebase:firebase-config:9.6.1' comstack 'com.google.firebase:firebase-invites:9.6.1' comstack "com.google.firebase:firebase-messaging:9.6.1" 

Comme je peux le voir dans la documentation et dans Javadoc, nous ne devrions pas avoir à effectuer d’initialisation manuelle dans notre cas.

L’exception se produit sur Android 4-6 sur une variété de périphériques.

Modifier:

Je vois que cette question attire un peu l’attention. Je pense que cette explication peut être intéressante pour certains d’entre vous: https://firebase.googleblog.com/2016/12/how-does-firebase-initialize-on-android.html

J’ai eu le même problème il y a quelque temps.

Vous essayez d’obtenir une instance de Firebase sans l’initialiser. S’il vous plaît append cette ligne de code avant d’essayer d’obtenir une instance de Firebase:

 FirebaseApp.initializeApp(this); 

Assurez-vous d’append à votre version de base.

 buildscript { // ... dependencies { // ... classpath 'com.google.gms:google-services:3.0.0' } } 

Ensuite, dans votre fichier Gradle de niveau module (généralement app / build.gradle), ajoutez la ligne ‘apply plugin’ en bas du fichier pour activer le plugin Gradle:

 apply plugin: 'com.android.application' android { // ... } dependencies { // ... comstack 'com.google.firebase:firebase-core:9.6.1' // Getting a "Could not find" error? Make sure you have // the latest Google Repository in the Android SDK manager } // ADD THIS AT THE BOTTOM apply plugin: 'com.google.gms.google-services' 

Comme dit dans la documentation . J’ai eu une exception comme dans une question ci-dessus quand j’ai oublié d’append ceci dans mes fichiers de gradle.

Il me manquait la ligne ci-dessous dans mon fichier app / build.gradle

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

et une fois nettoyer le projet et courir à nouveau. Cela a réglé pour moi.

Première chose à append: com.google.gms: google-services: xxx au niveau de la racine

 buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.3.1' classpath 'com.google.gms:google-services:3.0.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } 

}

Après cela, vous devez appliquer le plugin: “com.google.gms.google-services” à app / build.gradle

 dependencies { comstack fileTree(dir: 'libs', include: ['*.jar']) androidTestComstack('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) comstack 'com.android.support:appcompat-v7:25.3.1' comstack 'com.android.support:design:25.3.1' comstack 'com.android.support:cardview-v7:25.3.1' comstack 'com.google.android.gms:play-services-gcm:9.8.0' comstack 'com.google.android.gms:play-services-maps:9.8.0' comstack 'com.google.android.gms:play-services-location:9.8.0' comstack 'com.google.firebase:firebase-messaging:9.8.0' testComstack 'junit:junit:4.12' } apply plugin: 'com.google.gms.google-services' 

et si vous rencontrez toujours un problème, vous devez append

 FirebaseApp.initializeApp(this); 

juste avant que vous appeliez

 FirebaseInstanceId.getInstance().getToken(); 

Si vous utilisez FirebaseUI , FirebaseApp.initializeApp(this); n’est pas nécessaire FirebaseApp.initializeApp(this); dans votre code selon l’échantillon .

Assurez-vous d’append à votre version de base :

 buildscript { repositories { google() jcenter() } dependencies { ... classpath 'com.google.gms:google-services:3.1.1' ... } } 

Ensuite, dans votre fichier de module au niveau du fichier Gradle:

 dependencies { ... // 1 - Required to init Firebase automatically (THE MAGIC LINE) implementation "com.google.firebase:firebase-core:11.6.2" // 2 - FirebaseUI for Firebase Auth (Or whatever you need...) implementation 'com.firebaseui:firebase-ui-auth:3.1.2' ... } apply plugin: 'com.google.gms.google-services' 

C’est tout. Pas besoin de plus.

Vous devez append une dépendance de script de compilation Firebase Gradle dans build.gradle (au niveau du projet)

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

et append le plugin Firebase pour Gradle dans app / build.gradle

 apply plugin: 'com.google.gms.google-services' build.gradle will include these new dependencies: comstack 'com.google.firebase:firebase-database:11.0.4' 

Source: Assistant Studio Android

Bien initialiser manuellement Firebase avec FirebaseApp.initializeApp(this); fait disparaître l’erreur, elle ne résout pas la cause première, certains problèmes étranges ne semblent pas être résolus, comme

  • FCM requirejs l’autorisation com.google.android.c2dm.permission.RECEIVE uniquement pour GCM
  • le jeton n’est plus enregistré après la première notification envoyée
  • message not received / onMessageReceived () ne sont jamais appelés,

Utilisez le plugin Gradle plus récent (par exemple, le plugin Android 2.2.3 et Gradle 2.14.1) et corrigez tout. (Bien sûr, la configuration doit être correcte selon la documentation Firebase )

Nous devrons initialiser Firebase dans la fonction onCreate de la classe d’application.

  package com.rocks.music.videoplayer; import android.app.Application; import android.content.Context; import com.google.firebase.FirebaseApp; /** * Created by ashish123 on 22/8/15. */ public class MyApplication extends Application { private static MyApplication mInstance; @Override public void onCreate() { super.onCreate(); mInstance = this; try { FirebaseApp.initializeApp(this); } catch (Exception e) { } } public static Context getInstance() { return mInstance; } 

}

Code dans le fichier manifeste: –

   

Mon problème n’a pas été résolu avec cette procédure

 FirebaseApp.initializeApp(this); 

J’ai donc essayé autre chose et ma firebase database a été initialisée avec succès. Essayez d’append les options suivantes dans l’application module.gradle

 BuildScript{ dependencies {.. classpath : "com.google.firebase:firebase-plugins:1.1.5" ..} } dependencies {... implementation : "com.google.firebase:firebase-perf:16.1.0" implementation : "com.google.firebase:firebase-core:16.0.3" ..} 

Pour moi, aucune des solutions proposées n’a été donnée. Seulement cela a fonctionné. Je devais juste abaisser mes services google de 4.1.0 à 4.0.0

 dependencies { classpath 'com.android.tools.build:gradle:3.3.0-alpha08' classpath 'com.google.gms:google-services:4.0.0' /*classpath 'com.google.gms:google-services:4.1.0' <-- this was the problem */ } 

J'espère que cela aide

Dans mon cas, le plug-in Gradle de Google Services ne générait pas le fichier values.xml requirejs à values.xml fichier google-services.json . La bibliothèque Firebase utilise ce fichier de valeurs généré pour s’initialiser et il semble que cela ne génère pas d’erreur si le fichier de valeurs est introuvable. Vérifiez que le fichier de valeurs existe à l’emplacement suivant et qu’il google-sevices.json les chaînes appropriées de votre fichier google-sevices.json :

 app/build/generated/res/google-services/{build_type}/values/values.xml 

et / ou

 app/build/generated/res/google-services/{flavor}/{build_type}/xml/global_tracker.xml 

Pour plus de détails, voir: https://developers.google.com/android/guides/google-services-plugin

Mon cas particulier a été causé par l’utilisation d’une version des outils de graduation trop avancée pour la version d’Android Studio que j’utilisais (c.-à-d. Vous assurer que vous utilisiez les outils v3.2.X-YYY avec Android Studio v3.2).

Une des raisons de cet événement pourrait être d’oublier d’append des permissions android.permission.INTERNET dans AndroidManifest.xml