85 votes

FirebaseApp avec le nom [DEFAULT] n'existe pas

Après avoir migré vers Firebase Cloud Messaging.Lorsque mon application est ouverte, une erreur s'est produite, indiquant que java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist. déjà à mon nouveau google-services.json et à la mise à jour de mon SDK.

Voici mon activité principale

 public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

//Check Google play service
    GoogleApiAvailability googleAPI = GoogleApiAvailability.getInstance();
    int resultCode = googleAPI.isGooglePlayServicesAvailable(this);

    if (resultCode != ConnectionResult.SUCCESS) {
        if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
            GooglePlayServicesUtil.getErrorDialog(resultCode, this,
                    PLAY_SERVICES_RESOLUTION_REQUEST).show();
        } else {
            Log.e(LOG_TAG, "This device is not supported.");
            finish();
        }
    }

    Log.i(TAG, "InstanceID token: " + FirebaseInstanceId.getInstance().getToken());

}
}
 

115voto

Venkatesan Points 564

S'il vous plaît faire une double vérification, vous avez ajouté

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

au bas du fichier de classement de l'application, puis nettoyez et reconstruisez le projet

21voto

Codevalley Points 1230

Pas sûr, si elle est pertinente ici. Mais il existe un autre scénario lorsque ce blocage peut se produire.


Si votre application dispose d'un service (avec un autre processus) et vous êtes en train de créer votre propre Application classe, les services et les applications en arrière-plan va utiliser la même classe d'Application (pas même instance) pour l'initialiser. Maintenant, quand je suis à l'aide de com.google.firebase:firebase-crash de dépendance afin de gérer les blocages, il crée un service d'arrière-plan your.app.packagename:background_crash. Pour quelque raison, c'était induisant des plantages sur mon application. Plus précisément, parce que dans ma classe d'Application, j'ai été faire un appel comme,

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

Je suis en supposant, le service d'arrière-plan lorsque initing avec notre Application de classe, en quelque sorte Firebase n'est pas initialisé. Pour résoudre ce problème, je n'ai

if (!FirebaseApp.getApps(this).isEmpty())
        FirebaseDatabase.getInstance().setPersistenceEnabled(true);

12voto

jmodrako Points 229

J'ai eu un problème similaire, et pour moi c'était un bug / problème avec la fusion manifeste. J'ai découvert que FirebaseInitProvider n'a pas été injecté dans le fichier manifeste final à cause de tools:node="replace" dans le fichier manifeste de mon application. Donc, essayez de supprimer cette balise XML et FirebaseInitProvider sera injecté et Firebase peut être initialisé correctement.

11voto

elron smith Points 471

Fichier build.gradle:

 buildscript {
    repositories {
        jcenter()
        mavenLocal()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.2'
        classpath 'com.google.gms:google-services:3.0.0'
    }
}

allprojects {
    repositories {
        jcenter()
        mavenLocal()
    }
}
 

\ app \ build.gradle fichier:

 apply plugin: 'com.android.application'

android {
    ..
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    ..
    compile 'com.google.firebase:firebase-core:9.0.2'
    compile 'com.google.firebase:firebase-messaging:9.0.2'
}

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

10voto

@jmodrako answer a résolu mon problème ... tools:node="replace" à tools:node="merge"

Explained ... sur AndroidManifest.xml

De

 <application
...
tools:node="replace">
 

À

 <application
...
tools:node="merge">
 

Fusionner des problèmes avec des thèmes de bibliothèque? Construire des problèmes résolus en utilisant tools:replace="android:theme"

Crédits à https://stackoverflow.com/a/38060272/2765087

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X