私はこの問題を受け取っています..新しいfirebase sdkのアップグレードガイドに従いました...アプリディレクトリにGoogleサービスjsonファイルを保存しました..データベースと同じですが、あなたと同じエラーが...
Caused by: Java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist.
Firebase Crash Reportingを使用していますか?メインではなくバックグラウンドプロセスにヒットした場合、このエラーが発生している可能性があります。
クラッシュレポートは、2番目のプロセス(background_crash
)クラッシュを送信します。残念ながら、Androidアプリ内のすべてのプロセスは共通のApplication
サブクラスを共有するため、onCreate
メソッドもバックグラウンドプロセスで実行されます。失敗するデータベース。
修正は、Firebaseが適切に構成されている場合にのみデータベース呼び出しが実行されるようにすることです(これはメインプロセスにあります)。次のように確認できます。
@Override
public void onCreate() {
super.onCreate();
if (!FirebaseApp.getApps(this).isEmpty()) {
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
}
}
Firebaseの何もApplicationに入れないことで、このエラーを解決しました。 MainActivityに入れました。例:MainActivity.Java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
...
}
-更新
他の解決策は、1つのFirebaseDatabaseインスタンスを含むDatabaseHelperクラスを作成することです。
public class DatabaseHelper {
private static boolean persistenceEnable = false;
private static FirebaseDatabase mDatabase;
public static boolean isPersistenceEnable(){
return persistenceEnable;
}
public static FirebaseDatabase getInstance() {
if (mDatabase == null) {
mDatabase = FirebaseDatabase.getInstance();
if(persistenceEnable==true) {
mDatabase.setPersistenceEnabled(true);
}
}
return mDatabase;
}
}
使用方法:FirebaseDatabase database = DatabaseHelper.getInstance();
@Ian Barberのソリューションを拡張すると、この汎用チェックを試して、すべての非メインプロセスのカスタムApplication.onCreateの処理をスキップできます。追加のプロセスが自分のものではない場合、カスタムを実行する必要はありません。
@Override
public void onCreate() {
super.onCreate();
if (FirebaseApp.getApps(this).isEmpty()) {
// No firebase apps; we are in a non-main process
// skip custom Application.onCreate
return;
}
// Firebase init only in the main process
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
// other code
}