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

}
}
Natsumiyu
quelle

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

Venkatesan
quelle
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);
Codevalley
quelle
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.

jmodrako
quelle
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'
Elron Smith
quelle
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

Carlos Eduardo Liedtke Borges
quelle
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.

Ramya Ramesh
quelle
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!

Herr Special
quelle
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'
user1188867
quelle
0

Android Studio

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

Funktioniert bei mir ok.

Maxim Firsoff
quelle
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.

PRANAY
quelle
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'

pavel
quelle
0

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

Abdul Basha
quelle
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);
    }
}
Anand Rockzz
quelle