FirebaseApp.initializeApp(this) 引发空指针异常

3
我的应用程序类如下所示:
override fun onCreate() {
    super.onCreate()
    FirebaseApp.initializeApp(this)
    FirebaseCrashlytics.getInstance()
}

FirebaseApp.initializeApp(this) 在我们以外的许多设备上崩溃(我们在20多个设备上测试过,它可以正常工作)

崩溃报告来自Google Play控制台,并且其堆栈跟踪如下:

java.lang.RuntimeException: 
  at android.app.ActivityThread.handleBindApplication (ActivityThread.java:6737)
  at android.app.ActivityThread.access$2000 (ActivityThread.java:273)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2020)
  at android.os.Handler.dispatchMessage (Handler.java:112)
  at android.os.Looper.loop (Looper.java:216)
  at android.app.ActivityThread.main (ActivityThread.java:7625)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:524)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:987)
Caused by: java.lang.NullPointerException: 
  at androidx.core.os.UserManagerCompat.isUserUnlocked (UserManagerCompat.java:42)
  at com.google.firebase.FirebaseApp.initializeAllApis (FirebaseApp.java:573)
  at com.google.firebase.FirebaseApp.initializeApp (FirebaseApp.java:302)
  at com.google.firebase.FirebaseApp.initializeApp (FirebaseApp.java:266)
  at com.google.firebase.FirebaseApp.initializeApp (FirebaseApp.java:251)
  at com.superapp.MyApplication.onCreate (MyApplication.kt:92)
  at android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1162)
  at android.app.ActivityThread.handleBindApplication (ActivityThread.java:6717)
  at android.app.ActivityThread.access$2000 (ActivityThread.java:273)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2020)
  at android.os.Handler.dispatchMessage (Handler.java:112)
  at android.os.Looper.loop (Looper.java:216)
  at android.app.ActivityThread.main (ActivityThread.java:7625)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:524)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:987)

项目级别build.gradle文件:

repositories {
        google()
        jcenter()
        maven { url 'https://jitpack.io' }
        maven { url 'https://plugins.gradle.org/m2/' }
        maven {
            url 'https://developer.huawei.com/repo/'
        }
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.2.0"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"
        classpath "com.google.gms:google-services:4.3.3"
        classpath "com.google.firebase:firebase-crashlytics-gradle:2.4.1"
        classpath "com.huawei.agconnect:agcp:1.6.0.300"
        classpath "de.timfreiheit.resourceplaceholders:placeholders:0.3"
        classpath "com.google.firebase:firebase-appdistribution-gradle:1.3.1"
        classpath "org.jacoco:org.jacoco.core:0.8.7"
    }

app 模块级别的 build.gradle 文件:

// at the top
apply plugin: "com.android.application"
apply plugin: "com.google.firebase.crashlytics"
apply plugin: "de.timfreiheit.resourceplaceholders"
apply plugin: "com.google.firebase.appdistribution"
apply plugin: "com.huawei.agconnect"

// at the bottom
apply plugin: "com.google.gms.google-services"

这个崩溃发生在API级别为28、29、30、31和32。

这是谷歌的问题还是我们做错了什么?

1个回答

1
这可能是UserManagerCompat中的一个错误,但通常调用init对于大多数应用程序来说并不必要,这可能会缓解您的问题:
对于绝大多数应用程序,FirebaseInitProvider将通过app的google-services.json文件中包含的数据处理默认项目的Firebase初始化。当使用Gradle构建时,默认情况下将此ContentProvider合并到应用程序的清单中,并在应用程序启动时自动运行。在这种情况下不需要额外的代码行。

https://firebase.google.com/docs/reference/android/com/google/firebase/FirebaseApp

如果无法避免调用initializeApp,您可以考虑调整Google服务版本以避免该错误,如下面的答案所示:
请确保首先在Android中调用FirebaseApp.initializeApp(Context)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接