名称为 \[DEFAULT\] 的 FirebaseApp 不存在

新手上路,请多包涵

迁移到 Firebase Cloud Messaging 后。当打开我的应用程序时,它崩溃并抛出一条错误消息 java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist. 我已经放置了新的 google-services.json 并更新了我的 SDK。

这是我的主要活动

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 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

请仔细检查,您添加了

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

在应用程序的 gradle 文件的底部,然后清理并重建项目

原文由 Venkatesan 发布,翻译遵循 CC BY-SA 3.0 许可协议

不确定,如果它在这里相关。但是还有另一种情况会发生这种崩溃。


如果您的应用程序有一个服务(具有不同的进程)并且您正在创建自己的 Application 类,则该服务和前台应用程序将使用相同的应用程序类( 不是相同的实例)进行初始化。现在,当我使用 com.google.firebase:firebase-crash 依赖来处理崩溃时,它会创建一个后台服务 your.app.packagename:background_crash 。出于某种原因,这导致我的应用程序崩溃。具体来说,因为在我的应用程序类中,我正在打电话,

 FirebaseDatabase.getInstance().setPersistenceEnabled(true);

我假设,在使用我们的 Application 类启动时,后台服务以某种方式未初始化 Firebase。为了解决这个问题,我做了

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

原文由 Codevalley 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题