首页 > 解决方案 > 在 FirebaseDatabase.getReference() 中获取 NPE

问题描述

我在应用程序启动时在生产构建中获得 NPE,并且在使用 adb 重新安装后只有一次。

Caused by java.lang.NullPointerException
Attempt to invoke interface method 'void com.google.firebase.database.obfuscated.f.a(java.lang.Runnable)' on a null object reference
com.google.firebase.database.obfuscated.zzab.zza (SourceFile:276)
com.google.firebase.database.obfuscated.zzab. (SourceFile:90)
com.google.firebase.database.obfuscated.zzad.zzb (SourceFile:101)
com.google.firebase.database.obfuscated.zzad.zza (SourceFile:42)
com.google.firebase.database.FirebaseDatabase.zza (SourceFile:357)
com.google.firebase.database.FirebaseDatabase.getReference(SourceFile:201)

我想无论我将什么引用传递给 getReference() 方法,我都不应该得到 NPE——尽管我传递的是正确的。

这似乎发生在以下 Firebase 版本中:

firebase_core_version = "16.0.3"
firebase_auth_version = "16.0.3"
firebase_database_version = "16.0.2"

我无法使用以下方法重现它:

firebase_core_version = "16.0.0"
firebase_auth_version = "16.0.1"
firebase_database_version = "16.0.1"

标签: firebasefirebase-realtime-database

解决方案


将此添加到 ProGuard 配置中,以便从混淆中排除这些类:

-keep,includedescriptorclasses class com.google.firebase.** { *; }

事实上,只有发布版本受到影响,这暗示了这一点 -

不同的库版本可能会提供不同的(库)消费者规则。


推荐阅读