FirebaseApp mit dem Namen [DEFAULT] existiert nicht


81

Nach der Migration auf Firebase Cloud Messaging stürzt beim Öffnen meiner App ab und es wird eine Fehlermeldung angezeigt, dass java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist.ich bereits meine neue Datei google-services.json abgelegt und mein SDK aktualisiert habe.

Hier ist meine Hauptaktivität

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());

}
}

Antworten:


108

Bitte überprüfen Sie es noch einmal, fügten Sie hinzu

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

am Ende der Gradle-Datei der App und bereinigen und erstellen Sie das Projekt neu


Ich entfernte die apply plugin: 'com.google.gms.google-services' von meiner app gradle aber stoßen einen neuen Fehler beim Aufruf FirebaseInstanceId.getInstance().getToken()in meiner MainActivitymeine App stürzt ab.
Natsumiyu

1
mein schlechtes ... ich musste das hinzufügen apply plugin: 'com.google.gms.google-services' ? Beim Versuch, es hinzuzufügen, stoße ich immer noch auf einen Fehler. es heißtDidn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor"
natsumiyu

Hallo Mori, du kannst diesen Fehler ab sofort ignorieren und sie werden dieses Problem in der nächsten Version beheben. Das sagt das Firebase-Team :).
Venkatesan

Wenn ich dies hinzufüge, wird Folgendes angezeigt: "Fehler: Ausführung für Task ': app: mergeModernDebugResources' fehlgeschlagen.> [String / google_api_key] / <Pfad>/app/src/main/res/values/defaults.xml [string / google_api_key] / <Pfad> /app/build/generated/res/google-services/modern/debug/values/values.xml: Fehler: Ressourcen duplizieren "Ich habe diesen Schritt auch nicht in den Setup- oder Migrationshandbüchern für FCM gesehen. Haben Sie einen Link, den ich möglicherweise verpasst habe?
C Nick

1
Das Flattern kann auch erforderlich sein, flutter clean & flutter runwie in der Antwort vorgeschlagen.
Nae

21

Nicht sicher, ob es hier relevant ist. Es gibt jedoch ein anderes Szenario, in dem dieser Absturz auftreten kann.


Wenn Ihre App über einen Dienst (mit unterschiedlichem Prozess) verfügt und Sie eine eigene ApplicationKlasse erstellen , verwenden der Dienst und die Vordergrund-App dieselbe Anwendungsklasse ( nicht dieselbe Instanz ) zum Initialisieren. Wenn ich jetzt die com.google.firebase:firebase-crashAbhängigkeit zur Behandlung von Abstürzen verwende, wird ein Hintergrunddienst erstellt your.app.packagename:background_crash. Aus irgendeinem Grund führte dies zu Abstürzen in meiner App. Insbesondere, weil ich in meiner Anwendungsklasse einen Anruf getätigt habe wie:

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

Ich gehe davon aus, dass der Hintergrunddienst beim Initiieren mit unserer Anwendungsklasse irgendwie nicht initialisiert ist. Um dies zu beheben, habe ich es getan

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

Dies passiert auch bei Anzeigen. Wenn ein Nutzer auf eine Anzeige klickt, kehrt er zur App Firebase zurück und ist nicht mehr verfügbar.
TheJosh

@Codevalley, In meinem Fall gab es einen anderen Prozess (Adobe Creative SDK Image Editor) namens app: editor. Es wurde dieselbe Anwendungsklasse verwendet und daher versucht, ein Token von einer nicht vorhandenen Firebase-App abzurufen. Das Überprüfen, bevor ich ein Token bekomme, hat mein Problem gelöst. Ich danke dir sehr! :)
Rzaaeeff

12

Ich hatte ein ähnliches Problem und für mich war es ein Fehler / Problem mit der offensichtlichen Fusion. Ich habe herausgefunden, dass dies FirebaseInitProvideraufgrund der tools:node="replace"Manifestdatei meiner App nicht in die endgültige Manifestdatei eingefügt wurde. Versuchen Sie also, dieses XML-Tag zu entfernen. Es FirebaseInitProviderwird injiziert und Firebase kann ordnungsgemäß initialisiert werden.


Können Sie bitte Ihre Antwort für diejenigen aktualisieren, die mit dem Fusionstool @jmodrako
Killer am

Derzeit habe ich auf tools: replace = "android: name" anstelle von tools: node = "replace" aktualisiert. hoffe, dass helfen
Killer

11

build.gradle Datei:

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

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'

Fehler: (90, 0) Plugin mit ID 'com.google.gms.google-services' nicht gefunden.
Gilberto Ibarra

10

@jmodrako Antwort löste mein Problem ... tools:node="replace"zutools:node="merge"

Erklärt ... auf AndroidManifest.xml

Von

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

Zu

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

Probleme mit Bibliotheksthemen zusammenführen? Erstellen Sie Probleme, die mit gelöst wurdentools:replace="android:theme"

Credits an https://stackoverflow.com/a/38060272/2765087


2

Verschieben Sie Ihre Firebase-Initialisierung in die Klasse onCreate of Application. Auch wenn Sie die Offline-Persistenz aktiviert haben, sollte FirebaseDatabase.getInstance (). SetPersistenceEnabled (true) vor allen anderen Initialisierungen stehen.


Ich habe jetzt versehentlich auf die Abstimmung geklickt, sodass ich nicht mehr abstimmen kann :(
Developine

2

Überprüfen Sie alle Konfigurationen wie folgt:

1-firebase Projekteinstellung: google-services.json ist korrekt? Geben Sie hier die Bildbeschreibung ein

2- Fügen Sie das Firebase SDK hinzu Geben Sie hier die Bildbeschreibung ein

3- sauber - baue dein Projekt neu auf

hoffentlich hilft das!


2

Fügen Sie app / build.gradle die folgende Zeile hinzu

apply plugin: 'com.google.gms.google-services'  // Google Services plugin

Und die folgende Zeile zum Projekt build.gradle

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

0

Android Studio

  1. Plugin anwenden: 'com.google.gms.google-services' (build.gradle - Modulebene)
  2. Menü ~> Erstellen ~> CleanProject

Funktioniert bei mir ok.


0

Registrieren Sie Ihre Anwendung in Firebase und kopieren Sie die Datei google-services.json in Ihr Stammprojekt.

Wenden classpath 'com.google.gms:google-services:3.1.0Sie root build.gradle.

Bewerben Sie sich apply plugin: 'com.google.gms.google-servicesbei Ihrem Projekt gradle.


0

Fügen Sie in Ihrer Abhängigkeit einfach Folgendes hinzu:

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'
}

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


0

Ändern Sie die Build-Aktion (GoogleServicesJson) in den Dateinamen Google-Services.Json.


0

In meinem Fall, in dem ich Firebase beim Start der App nicht initialisiert habe, musste ich Folgendes tun, um das Problem zu beheben

@Service
public class FirebaseSetup implements CommandLineRunner {
    public void run(String... args) throws Exception {
        initializeFirebase();
    }
    private void initializeFirebase() throws FileNotFoundException, IOException {
        FileInputStream serviceAccount = new FileInputStream(ResourceUtils.getFile("classpath:ssf1-v1-firebase-adminsdk-zr72u-afcb5bc13b.json"));
        FirebaseOptions options = new FirebaseOptions.Builder().setCredentials(GoogleCredentials.fromStream(serviceAccount)).build();
        FirebaseApp.initializeApp(options);
    }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.