Samsung S7 Edge "FirebaseInstallations.java" 后台崩溃 运行 Android 8

Massive spike in "FirebaseInstallations.java" background crashes on Samsung S7 Edges running Android 8

几个小时前,我们的 Crashlytics 开始报告 a Firebase packageFirebaseInstallations.java 中的数百个实时崩溃。由于受影响的版本已经发布了大约 5 天,除了 Firebase / Google 服务器端问题之外,我不明白为什么这会在周日的午餐时间突然发生。

这是突然发生的,我们从根本没有经历过这次崩溃,到 ~100x/hr!

这是完整的堆栈跟踪:

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
       at com.google.firebase.installations.FirebaseInstallations.registerFidWithServer(FirebaseInstallations.java:452)
       at com.google.firebase.installations.FirebaseInstallations.doNetworkCallIfNecessary(FirebaseInstallations.java:331)
       at com.google.firebase.installations.FirebaseInstallations.lambda$doGetId(FirebaseInstallations.java:296)
       at com.google.firebase.installations.FirebaseInstallations$$Lambda.run(:2)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
       at java.lang.Thread.run(Thread.java:764)

这是 Crashlytics 信息,几乎所有后台崩溃都发生在 Galaxy S7 edges 运行 Android 8:

我们使用各种服务,例如 Firebase Remote Config、Crashlytics、Analytics,但是 all Firebase systems are apparently healthy

有什么想法吗?

看起来这个问题是在 firebase-installations 16.3.2 中引入的,并在 16.3.3 中修复:

Firebase installations version 16.3.3

Fixed a NullPointerException that occurred when Firebase services tried to register a Firebase installation ID (FID) with the Firebase installations server.

对我们来说,这是由于使用 Crashlytics 17.1.1 而发生的。由于依赖项的处理方式发生了变化,因此修复已移至 17.2.1,这也需要明确依赖 firebase-installations:16.3.3

该错误似乎是由于用户清除了共享偏好设置而触发的,这随后擦除了保存的 Firebase ID。我怀疑我们看到的高流量实际上是 Firebase 试图一遍又一遍地注册同一个用户。

有关详细信息,请参阅 this Firebase Android SDK issue or the PR that fixes it