名称为的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"
在Application类的onCreate中移动你的firebase初始化。 另外,如果启用了脱机持久性,FirebaseDatabase.getInstance()。setPersistenceEnabled(true)应该在任何其他初始化之前。
Android Studio
- 应用插件:“com.google.gms.google服务”(build.gradle – 模块层)
- 菜单〜>构build〜> CleanProject
为我工作好。
在您的依赖关系中,只需添加依赖{compile fileTree(dir:'libs',include:['* .jar'])。compile'com.google.firebase:firebase-core:9.0.2'compile'com.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。