我一直收到这个问题..遵循应用程序目录中的google services sdk...saved文件的升级指南。仍然与您相同的错误,但对于数据库...
Caused by: java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist.
发布于 2016-05-21 04:37:18
你在使用Firebase崩溃报告吗?如果命中的是后台进程,而不是主进程,那么您可能会遇到这个错误。
崩溃报告创建第二个进程(background_crash
)来发送崩溃。不幸的是,安卓应用程序中的所有进程都共享一个公共的Application
子类,因此您的onCreate
方法也在后台进程中运行。尝试初始化数据库,但失败了。
修复方法是确保只有在正确配置Firebase (将在主进程中)时才会运行数据库调用。您可以像这样检查:
@Override
public void onCreate() {
super.onCreate();
if (!FirebaseApp.getApps(this).isEmpty()) {
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
}
}
发布于 2016-05-21 09:37:42
我通过不在应用程序中放置Firebase的任何东西来解决这个错误。我把它放到MainActivity里了。示例: MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
...
}
-UPDATE
其他解决方案是创建包含一个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数据库= DatabaseHelper.getInstance();
发布于 2016-11-14 21:02:38
扩展@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
}
https://stackoverflow.com/questions/37346363
复制相似问题