应用程序崩溃在某些设备上,因为"默认FirebaseApp未在此过程中初始化"

时间:2017-01-09 20:12:04

标签: android firebase firebase-crash-reporting firebase-remote-config

我正在使用Firebase崩溃报告和Firebase远程配置。两者的版本是9.8.0。

在大多数设备上,设置工作完美(我跟着Set up crash reporting)。但是在小百分比的设备上(它实际上崩溃的次数最多)它在我尝试在Application onCreate方法中初始化Remote Config时崩溃。

java.lang.RuntimeException: Unable to create application com.company.application.AppApplication: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.company.application. Make sure to call FirebaseApp.initializeApp(Context) first.
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6429)
    at android.app.ActivityThread.access$1800(ActivityThread.java:229)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1887)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:7329)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.company.application. Make sure to call FirebaseApp.initializeApp(Context) first.
    at com.google.firebase.a.d(Unknown Source)
    at com.google.firebase.b.a.a(Unknown Source)
    at com.company.application.d.a.a(SourceFile:21)
    at com.company.application.AppApplication.onCreate(SourceFile:76)
    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1037)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6426)
    ... 8 more

2 个答案:

答案 0 :(得分:4)

在10.0.0版之前,Firebase Crash在您的应用中为background_crash创建了一个额外的流程。系统会为您应用中的每个流程创建并执行AppApplication课程的实例,包括background_crash

如果要在应用程序类中执行Firebase服务的初始化,则需要添加一个防护,以防止在background_crash中执行初始化。在这样做的方法是:

    if (!FirebaseApp.getApps(this).isEmpty()) {
        // Not in crash process.  Do your Remote Config init here.
    }

另一种解决方案是升级到最新版本的Firebase 10.0.1。

假设这个答案有效,我无法解释为什么故障只发生在某些设备上,除非设备上安装的Google Play服务版本是一个因素,而故障设备的版本较旧。

答案 1 :(得分:0)

  1. 在依赖项中设置类路径'com.google.gms:google-services:4.0.1'
  2. 实现androidTestImplementation依赖项:

    androidTestImplementation('com.android.support.test.espresso:espresso-core:.2.2',
    
      

    {               排除组:“ com.android.support”,模块:“ support-annotations”           })