web-dev-qa-db-fra.com

FirebaseApp par défaut n'est pas initialisé

Nous observons quelques exceptions avec le message 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'ajouter Firebase Remote Config.

La trace de la pile 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.SomeDataRetriever.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:

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

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

L'exception se produit sur Android 4-6 sur divers appareils.

Modifier:

Je vois que cette question attire un peu d'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

154
Roy Solberg

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 ajoutez cette ligne de code avant d'essayer d'obtenir une instance de Firebase 

FirebaseApp.initializeApp(this);
96
Gabriel Lidenor

Assurez-vous d'ajouter à votre build.gradle de niveau racine

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

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

apply plugin: 'com.Android.application'

Android {
  // ...
}

dependencies {
  // ...
  compile '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 indiqué dans documentation . J'ai eu une exception comme dans une question ci-dessus quand j'ai oublié d'ajouter ceci dans mes fichiers de classement.

240
Leonid

Il semble que google-services:4.1.0 ait un problème. Soit le déclasser à 

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

ou le mettre à niveau pour

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

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

J'espère que ça aide

68
Ammar Bukhari

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

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

et une fois clean projet et réexécutez. Cela a réglé le problème pour moi.

40
varotariya vajsi

Vous devez d’abord ajouter com.google.gms: google-services: x.x.x au niveau de la racine build.gradle

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
}

}

Ensuite, vous devez appliquer le plug-in: "com.google.gms.google-services" dans app/build.gradle.

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.Android.support', module: 'support-annotations'
})
compile 'com.Android.support:appcompat-v7:25.3.1'
compile 'com.Android.support:design:25.3.1'
compile 'com.Android.support:cardview-v7:25.3.1'

compile 'com.google.Android.gms:play-services-gcm:9.8.0'
compile 'com.google.Android.gms:play-services-maps:9.8.0'
compile 'com.google.Android.gms:play-services-location:9.8.0'
compile 'com.google.firebase:firebase-messaging:9.8.0'
testCompile 'junit:junit:4.12'
}


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

et si le problème persiste, vous devez ajouter

FirebaseApp.initializeApp(this);

juste avant d'appeler 

FirebaseInstanceId.getInstance().getToken();
11
ankurdayalsingh

Après la mise à jour de diverses dépendances, une erreur Crashlytics s'est produite lors de la compilation: 'Crashlytics a trouvé une clé d'API non valide: null. Vérifiez le plug-in Crashlytics pour vous assurer que l'application a été ajoutée avec succès! Contactez [email protected] pour obtenir de l'aide. ' La seule réponse non automatique que j'ai eue après des tentatives répétées de [email protected] à laquelle l'erreur a été renvoyée est que Fabric et Crashlytics sont des équipes distinctes et ne peuvent donc pas m'aider. J'ai évité d'implémenter la couche Fabric supplémentaire dans Crashlytics et je n'ai pas pu obtenir une nouvelle clé du site Fabric, ni même me faire reconnaître par le site. En essayant de contourner ce problème en supprimant simplement Crashlytics de mon code, j'ai obtenu le message 'Default FirebaseApp n'est pas initialisé dans ce processus com.example.app. Assurez-vous d'appeler FirebaseApp.initializeApp (Context) avant le premier blocage de l'exécution. 

Je n'ai jamais eu à ajouter la ligne d'initialisation de 'FirebaseApp.initializeApp (this)', et en fait je l'ai commentée. La documentation mentionne même le fait de ne pas en avoir besoin si vous utilisez uniquement Firebase pour une activité. L’ajouter n’a fait aucune différence, malgré l’erreur de mise à mort. 

Il s’est avéré que la dépendance mise à jour de google-services était la cause des nouvelles erreurs obscures Pour l’instant, je n’ai pas le temps de passer plus de jours à essayer de réparer les erreurs de fusil de chasse causées par la nouvelle dépendance. Par conséquent, jusqu’à ce que quelqu'un propose des solutions, je reste fidèle à l’ancienne version. Outre le crash d'initialisation impair, la nouvelle version peut forcer les utilisateurs de Fabric sur Crashlytics. Les utilisateurs sont forcés de revenir à l'ancienne version de dépendance pour cela également: Crashlytics a trouvé une clé d'API non valide: null. après la mise à jour de com.google.gms: google-services: 4.1.0

com.google.gms:google-services:4.1.0//BAD
com.google.gms:google-services:4.0.1//GOOD

EDIT 17/10/18: après la mise à jour des dépendances suivantes

implementation 'com.google.firebase:firebase-ads:17.0.0'
implementation 'com.google.firebase:firebase-auth:16.0.4'
implementation 'com.google.firebase:firebase-database:16.0.3'
implementation 'com.google.firebase:firebase-core:16.0.4

J'ai eu un crash immédiat lors de la tentative d'installation avec 'xxx a été fermé de manière inattendue', comme lorsque j'ai tenté de mettre à jour la dépendance de google-services. En fouillant dans le journal, j'ai trouvé un lien me demandant de l'ajouter au manifeste

<meta-data
        Android:name="com.google.Android.gms.ads.APPLICATION_ID"
        Android:value="ca-app-pub-xxxxxx~xxxxxx"/>

Ceci est nouveau et n’est pas mentionné dans les instructions de configuration et interstitielles ici https://firebase.google.com/docs/Android/setup et ici https://developers.google.com/admob/ Android/interstitiel

Auparavant, je n'avais affaire qu'à un seul ID associé à la publicité pour mon application, l'INTERSTITIAL_UNIT_ID. Maintenant, il faut en traiter deux. Outre l'ajout ci-dessus, la documentation recommande d'ajouter ADMOB_APP_ID ici (le même numéro que vous associez à ads.APPLICATION_ID dans le nouveau code de manifeste).

MobileAds.initialize(this, ADMOB_APP_ID);

Les identifiants INTERSTITIAL_UNIT_ID et ADMOB_APP_ID peuvent être extraits dans votre console Google AdMob. Mon application de jeu a cessé de diffuser des annonces lors de ma première mise à jour des dépendances de Firebase et ne diffuse toujours pas les annonces. 

public void onAdFailedToLoad(int errorCode){...

Même après tout ce fouillis ajouté, je ne peux toujours pas mettre à jour la dépendance de google-services sans le crash d’exécution d’initialisation. Je m'attends à rester bloqué chez google-services: 4.0.1 pendant un certain temps.

EDIT 10/24/18: à partir de [email protected] après des semaines de correspondance sur le fait de ne pas recevoir les annonces après les mises à jour: 

'Merci de partager les journaux de l'appareil. D'après les journaux, cela semble être un problème existant. Il figure sur notre liste de priorités et notre équipe travaille sur le correctif, ce qui ne se produit que sur les appareils O and P d'Android. ' 

Seuls les appareils O et P? Ce sont les deux dernières versions, O est sorti le 25 septembre 2017. Ouais. 

10
Androidcoder
    classpath 'com.google.gms:google-services:4.1.0'

a un problème. utilisez plutôt:

    classpath 'com.google.gms:google-services:4.2.0'
9
Alp Altunel

Si vous utilisez FirebaseUI , pas besoin de FirebaseApp.initializeApp(this); dans votre code selon l'exemple .

Assurez-vous d’ajouter à votre root-level build.gradle:

buildscript {

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

Ensuite, dans votre fichier module 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.

7
Phil

Comme mentionné par @PSIXO dans un commentaire, cela pourrait être le problème de la version de dépendance de google-services Pour moi changer,

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

à 

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

il y a peut-être un problème avec la version 4.1.0. Parce que j'ai passé de nombreuses heures sur ce sujet, j'ai pensé écrire ceci comme réponse.

6
Aayush Singla

Une autre solution possible - essayez différents Android Studio si vous utilisez des bêtas. Aidé pour moi. Le nouveau Android Studio n’a tout simplement pas ajouté Firebase correctement. Dans mon cas, 3.3preview

Après quelques recherches supplémentaires, j'ai découvert que le problème était que le nouveau studio Android commençait le projet avec la nouvelle version de Google Services et qu'il semblait que c'était le problème initial. Comme @Ammar Bukhari a suggéré que ce changement ait aidé:

classpath 'com.google.gms: google-services: 4.1.0' -> classpath 'com.google.gms: google-services: 4.0.0'

Dans mon cas, le plugin Gradle de Google Services ne générait pas le fichier values.xml requis à partir du fichier google-services.json. La bibliothèque Firebase utilise ce fichier de valeurs généré pour s'initialiser et il ne semble pas qu'une erreur soit générée si le fichier de valeurs est introuvable. Vérifiez que le fichier de valeurs existe à l'emplacement suivant et qu'il contient 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é provoqué par l'utilisation d'une version d'outils Gradle trop avancée pour la version d'Android Studio que j'utilisais (c'est-à-dire que vous exécutez les outils d'évaluation v3.2.X-YYY avec Android Studio v3.2).

3
TheIT

Vous devez ajouter une dépendance de buildscript Firebase Gradle dans build.gradle (au niveau du projet)

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

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

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

build.gradle will include these new dependencies:
    compile 'com.google.firebase:firebase-database:11.0.4'

Source: Assistant Android Studio

3
Artificioo

Je devine qu'il y a des problèmes de compatibilité avec la version de google-services et la version de firebase.

J'ai changé dans le fichier build.gradle du projet, la dépendance 

classpath 'com.google.gms: google-services: 4.1.0' à 4.2.0 

puis mis à jour les dépendances build.gradle du module pour:

implémentation 'com.google.firebase: firebase-database: 16.0.6'

implémentation 'com.google.firebase: firebase-core: 16.0.7'

Tout fonctionne comme un charme, pas besoin de taper FirebaseApp.initializeApp (this);

pour moi, c'était mettre à jour les dépendances de com.google.gms: google-services dans build.gradle à

buildscript {
repositories {
    jcenter()
    mavenCentral()
    maven {
        url 'https://maven.google.com/'
        name 'Google'
    }
    google()
}
dependencies {
    classpath 'com.Android.tools.build:gradle:3.3.2'
    classpath 'com.google.gms:google-services:4.2.0'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}
2
Jmz

Si vous avez récemment mis à jour votre Android Studio vers la version 3.3.1 et rencontrez un problème avec les dépendances de com.google.gms: google-services (inférieur à 4.2.0), veuillez mettre à jour com.google.gms: google-services vers 4.2.0.

dependencies {
    classpath 'com.Android.tools.build:gradle:3.3.1'
    classpath 'com.google.gms:google-services:4.2.0'
    }
1
Himanshu

Nous n'avons pas besoin d'appeler FirebaseApp.initializeApp(this); n'importe où manuellement. et nous ne devrions pas trop.

Je viens de faire face au même problème et j'ai eu une solution inattendue et étrange.

De cette réponse:

J'ai enlevé tools:node="replace" et ça marche comme un charme.

1
Rumit Patel

Une des raisons de cette situation pourrait être d’oublier d’ajouter des autorisations Android.permission.INTERNET dans AndroidManifest.xml

<uses-permission Android:name="Android.permission.INTERNET" />

0
bianca

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

FirebaseApp.initializeApp(this); 

J'ai donc essayé autre chose et maintenant ma base de feu a été initialisée avec succès. Essayez d'ajouter ce qui suit dans app 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"
..}
0
Fahad

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

  <application
    Android:name="com.rocks.music.videoplayer.MyApplication"
    Android:allowBackup="true"
    Android:icon="@drawable/app_icon"
    Android:label="@string/app_name"
    Android:supportsRtl="true"
    Android:theme="@style/AppTheme">
0
Ashish Saini

utilisez com.google.gms: google-services: 4.0.1 'au lieu de 4.1.0

0
tony Macias

La raison de cela est com.google.gms: version de google-services. Lorsque j’utilisais 4.1.0, j’ai rencontré la même erreur. Puis je rétrograde la version . Avant 

classpath 'com.Android.tools.build:gradle:3.3.0'
classpath 'com.google.gms:google-services:4.1.0'

Après 

classpath 'com.Android.tools.build:gradle:3.3.0'
classpath 'com.google.gms:google-services:3.2.0'

J'espère que ça va résoudre l'erreur.

0
Md Nakibul Hassan

Cliquez sur Outils> Base de feu pour ouvrir la fenêtre de l’assistant.

Cliquez pour développer l'une des fonctionnalités répertoriées (par exemple, Analytics), puis cliquez sur le lien de didacticiel fourni (par exemple, Enregistrer un événement Analytics).

Cliquez sur le bouton Connect to Firebase pour vous connecter à Firebase et ajouter le code nécessaire à votre application.

https://firebase.google.com/docs/Android/setup

0
kreker

Firebase installé via Android Studio Tools ... Firebase ...

J'ai effectué l'installation à l'aide des outils intégrés d'Android Studio (en suivant les derniers documents de Firebase) . Cela installait les dépendances de base, mais lorsque je tentais de me connecter à la base de données, cela me renvoyait toujours l'erreur à appeler. initialiser en premier, même si j'étais:

FirebaseApp par défaut n'est pas initialisé dans ce processus. Assurez-vous de Appelez d'abord FirebaseApp.initializeApp (Context).

J'avais cette erreur peu importe ce que j'ai fait. 

Enfin, après avoir lu un commentaire dans l’une des réponses, j’ai modifié ce qui suit dans ma note depuis la version 4.1.0 en:

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

Quand j'ai fait cela, j'ai finalement vu une erreur qui m'a aidé:

Le fichier google-services.json est manquant. Le plug-in de services Google ne peut pas fonctionner sans elle. Lieu de recherche: C:\Utilisateurs \% nom d'utilisateur%\AndroidStudioProjects\TxtFwd\app\src\nullnull\debug\google-services.json
C:\Utilisateurs \% nom d'utilisateur%\AndroidStudioProjects\TxtFwd\app\src\debug\nullnull\google-services.json
C:\Utilisateurs \% nom d'utilisateur%\AndroidStudioProjects\TxtFwd\app\src\nullnull\google-services.json
C:\Utilisateurs \% nom d'utilisateur%\AndroidStudioProjects\TxtFwd\app\src\debug\google-services.json
C:\Utilisateurs \% nom d'utilisateur%\AndroidStudioProjects\TxtFwd\app\src\nullnullDebug\google-services.json
C:\Utilisateurs \% nom d'utilisateur%\AndroidStudioProjects\TxtFwd\app\google-services.json

C'est le problème. Il semble que la version 4.1.0 ne donne pas cette erreur de construction pour une raison quelconque - ne mentionne pas que vous avez un fichier google-services.json manquant. Je n'ai pas le fichier google-services.json dans mon application, alors je suis sorti et je l'ai ajouté.

Mais comme il s’agissait d’une mise à jour qui utilisait une base de données firsbase en temps réel existante, je n’avais jamais eu à générer ce fichier par le passé .. Je suis allé sur firebase pour le générer et l’ajouter puis il a résolu le problème.

Retourné à 4.1.0

Une fois que j’ai découvert tout cela, j’ai reconverti la variable classpath (en 4.1.0) et l’a reconstruite. Elle s’est écrasée de nouveau avec l’erreur qu’elle n’ait pas été initialisée.

Problèmes liés aux racines

  • Compiler avec 4.1.0 ne vous fournit pas une erreur valide lors de la précompilation, vous risquez donc de ne pas savoir ce qui se passe.
  • L'exécution par rapport à 4.1.0 provoque l'erreur d'initialisation.
0
raddevus

Bien que l’initialisation manuelle de Firebase avec FirebaseApp.initializeApp(this); supprime l’erreur, elle ne résout pas la cause du problème, mais certains problèmes étranges ne semblent pas avoir été résolus, tels que 

  • FCM requiert l'autorisation com.google.Android.c2dm.permission.RECEIVE quiis est réservée à GCM
  • le jeton n'est plus enregistré après l'envoi de la première notification
  • message non reçu/onMessageReceived () n'est jamais appelé,

Utiliser le nouveau plugin Gradle (par exemple, le plugin Android 2.2.3 et Gradle 2.14.1) a tout corrigé. (Bien sûr, la configuration doit être conforme à Documentation Firebase )

0
Beeing Jk

en changeant

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

à

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

Travaille pour moi

0
Fawad Khan