firebase - 在 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"
解决方案
将此添加到 ProGuard 配置中,以便从混淆中排除这些类:
-keep,includedescriptorclasses class com.google.firebase.** { *; }
事实上,只有发布版本受到影响,这暗示了这一点 -
不同的库版本可能会提供不同的(库)消费者规则。
推荐阅读
- flutter - Flutter 国际化支持哪些语言
- sql - SQL Server:当行中存在 2 个值时选择
- excel - 存储和检索单元格详细信息的快速方法 - VBA
- npm - 我在安装 gulp-sass 时遇到问题
- jestjs - Nest e2e 测试:测试运行完成后一秒钟 Jest 没有退出
- aframe - A-Frame 的 Mapbox 组件在桌面和移动设备上显示不同的比例
- recursion - 如何找到以下函数的时间复杂度?
- ionic-framework - Ionic App,静默身份验证或刷新令牌以允许用户保持登录状态
- r - R 上的正则表达式模式:n-dash、m-dash、括号
- php - 如何计算嵌套在第二级 groupBy 中的项目?