Czy używasz Firebase Crash Reporting? Być może trafiasz w ten błąd z powodu tego, że uderza on w proces tła, a nie w główny.
Crash Reporting tworzy drugi proces (background_crash
), aby wysłać awarie. Niestety wszystkie procesy w aplikacji na Androida mają wspólną podklasę Application
, więc twoja metoda onCreate
jest również uruchamiana w procesie w tle. To próbuje zainicjować bazę danych, która się nie powiedzie.
Rozwiązaniem jest upewnienie się, że wywołanie bazy danych jest uruchamiane tylko wtedy, gdy baza Firebase jest poprawnie skonfigurowana (która będzie w procesie głównym). Możesz to sprawdzić:
@Override
public void onCreate() {
super.onCreate();
if (!FirebaseApp.getApps(this).isEmpty()) {
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
}
}
Utworzenie projektu bazy ogniowej z nazwą pakietu i pobranie google-services.json? –
Tak, zrobiłem .. zainfekować moją aplikację bez ustawiania diskpersistence działa poprawnie. Jeśli spróbuję włączyć dyspersję w mojej klasie aplikacji, jak wspomniano w dokumentacji tutaj ... https://firebase.google.com/support/guides/firebase-android#get_a_database_reference_numbered ... mój kod kończy się niepowodzeniem –
Znany problem: https: //firebase.google.com/docs/crash/android#known-issues –