应用程序在某些设备上崩溃,因为 "Default FirebaseApp is not initialized in this process"

Application crashing on some devices because "Default FirebaseApp is not initialized in this process"

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

在大多数设备上设置工作完美(我遵循 Set up crash reporting)。但是在一小部分设备上(它实际上是发生率最高的崩溃)当我尝试在应用程序 onCreate 方法中初始化远程配置时崩溃。

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.access00(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

在版本 10.0.0 之前,Firebase 崩溃会在您的应用中创建一个名为 background_crash 的额外进程。您的 AppApplication class 实例会为您应用中的每个进程创建并执行,包括 background_crash.

如果你想在你的应用class中执行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. 在依赖项中设置类路径'com.google.gms:google-services:4.0.1'
  2. 实施 androidTestImplementation 依赖项:

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

    { exclude group: 'com.android.support', module: 'support-annotations' })