名称为的FirebaseApp不存在

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

这是我的MainActivity

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

请加倍检查

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

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

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


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

 FirebaseDatabase.getInstance().setPersistenceEnabled(true); 

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

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

我有类似的问题,对我来说,这是一个明显的合并错误/问题。 我发现FirebaseInitProvider还没有被注入到最终的清单文件中,因为我的应用程序清单文件中有tools:node="replace" 。 所以,尝试删除这个XML标签, FirebaseInitProvider将被注入,Firebase可以正确初始化。

build.gradle文件:

 buildscript { repositories { jcenter() mavenLocal() } dependencies { classpath 'com.android.tools.build:gradle:2.1.2' classpath 'com.google.gms:google-services:3.0.0' } } allprojects { repositories { jcenter() mavenLocal() } } 

\ app \ build.gradle文件:

 apply plugin: 'com.android.application' android { .. } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) .. compile 'com.google.firebase:firebase-core:9.0.2' compile 'com.google.firebase:firebase-messaging:9.0.2' } apply plugin: 'com.google.gms.google-services' 

@jmodrako答案解决了我的问题… tools:node="replace" tools:node="merge"

在AndroidManifest.xml中解释…

 <application ... tools:node="replace"> 

 <application ... tools:node="merge"> 

与图书馆主题合并问题? build立使用tools:replace="android:theme"解决的问题tools:replace="android:theme"

致谢https://stackoverflow.com/a/38060272/2765087

在Application类的onCreate中移动你的firebase初始化。 另外,如果启用了脱机持久性,FirebaseDatabase.getInstance()。setPersistenceEnabled(true)应该在任何其他初始化之前。

Android Studio

  1. 应用插件:“com.google.gms.google服务”(build.gradle – 模块层)
  2. 菜单〜>构build〜> CleanProject

为我工作好。

在您的依赖关系中,只需添加依赖{compile fileTree(dir:'libs',include:['* .jar'])。compile'c​​om.google.firebase:firebase-core:9.0.2'compile'c​​om.google。 firebase:firebase-messaging:9.0.2'}

应用插件:“com.google.gms.google-services”

在Firebase中注册您的应用程序,并将google-services.json复制到您的根项目。

将类path“com.google.gms:google-services:3.1.0”应用于您的root build.gradle。

应用插件:com.google.gms.google服务到您的项目gradle。