名称为 [DEFAULT] 的 FirebaseApp 不存在

2022-08-31 11:59:35

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

这是我的主要活动

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

}
}

答案 1

请仔细检查,您添加了

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

,然后清理并重新生成项目


答案 2

不确定,是否与此处相关。但是还有另一种情况,当这种崩溃可能发生时。


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

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

我假设,使用我们的应用程序类启动后台服务时,Firebase不知何故未初始化。为了解决这个问题,我做了

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

推荐