我们遇到过这样的崩溃,在 Play 管理中心中已经发生了大约 110 万次,而且还在不断增加,但没有成功找出原因。
那个报告:
java.lang.AbstractMethodError:
at com.google.firebase.installations.remote.FirebaseInstallationServiceClient.readGenerateAuthTokenResponse (FirebaseInstallationServiceClient.java:569)
at com.google.firebase.installations.remote.FirebaseInstallationServiceClient.generateAuthToken (FirebaseInstallationServiceClient.java:421)
at com.google.firebase.installations.FirebaseInstallations.fetchAuthTokenFromServer (FirebaseInstallations.java:566)
at com.google.firebase.installations.FirebaseInstallations.doNetworkCallIfNecessary (FirebaseInstallations.java:390)
at com.google.firebase.installations.FirebaseInstallations.lambda$doRegistrationOrRefresh$2 (FirebaseInstallations.java:377)
at com.google.firebase.installations.FirebaseInstallations.$r8$lambda$VZq1h0TBcWNH8Y5yY86ujrFFyLo (FirebaseInstallations.java)
at com.google.firebase.installations.FirebaseInstallations$$InternalSyntheticLambda$0$8f6250a76dc84afdee54bd79d6c6b27858a3db00ee2f9ff4dae9d6825fe4cbe4$0.run$bridge (FirebaseInstallations.java:18)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
at java.lang.Thread.run (Thread.java:920)
Run Code Online (Sandbox Code Playgroud)
我们需要处理的事情就很少了……它似乎完全包含在 Firebase SDK 中。
团队中的任何人都无法重现该崩溃,并且所有预启动测试设备都没有出现任何问题或任何大规模设备测试服务。从我们测试的任何方式来看,Firebase Messaging 似乎都运行良好。
我们当时在
com.google.firebase:firebase-messaging:20.x.x
Run Code Online (Sandbox Code Playgroud)
所以我们更新为
com.google.firebase:firebase-messaging:23.0.0
Run Code Online (Sandbox Code Playgroud)
一切都没有改变,崩溃仍然每小时发生。
我们删除了之前的一项更新:android.permission.ACCESS_BACKGROUND_LOCATION 以符合最近的更改。然而,它是一个遗物,并且该应用程序实际上多年来并不需要它。
这似乎是崩溃开始的时候,尽管据我所知,Firebase SDK 不需要此权限,也不需要它,但我们正在抓住救命稻草。
一些构建变量:
minSdkVersion 19
targetSdkVersion 30
compileSdkVersion 30
buildToolsVersion 32.0.0
Gradle 7.1.2
android.enableJetifier=true
android.enableR8=true
android.enableR8.fullMode=true
android.useAndroidX=true
Run Code Online (Sandbox Code Playgroud)
这感觉像是一个构建问题,因为我们的代码库变化很小(在尝试 Firebase SDK 更新之前有一个清单 perm 行)...但我们只是运气不佳,而且并非每个遇到它的人都存在差异奇特。