我在应用程序启动时在生产版本中获得了 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_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"
我将Firebase-ui-database从4.2.0降级到4.1.0,问题消失了
将其添加到ProGuard配置中,以便从混淆中排除这些类:
-keep,includedescriptorclasses class com.google.firebase.** { *; }
事实上,只有发布版本受到影响,这暗示了这一点 -
不同的库版本可能提供不同的(库(使用者规则。
我在此链接中找到了实际适合我的解决方案
FirebaseMessagingService导致我出现问题。因此,要重现,请添加:
清单:
<service android:name=".MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
MyFirebaseMessagingService.class
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onNewToken(String token) {
try{
DatabaseReference fRef = FirebaseDatabase.getInstance().getReference();
// I am getting the reference to write the token in firebase database like:
// fRef.child("token").setValue(token);
} catch (Exception e) {
Log.d("MyFirebaseMsgService", e.getStackTrace().toString());
}
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
}
}
在 firebase 数据库 16.0.2 中,行DatabaseReference fRef = FirebaseDatabase.getInstance().getReference();
触发异常:
无法在未调用的线程内创建处理程序 Looper.prepare((
而在 16.0.1 中则不是。 触发此异常时,下一个firebaseDatabase.getReference()
将崩溃,并显示最初描述的异常。
依赖:
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:support-v4:27.1.1'
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:design:27.1.1'
implementation 'com.google.firebase:firebase-core:16.0.3'
implementation 'com.google.firebase:firebase-messaging:17.3.1'
implementation 'com.google.firebase:firebase-invites:16.0.3'
implementation 'com.firebaseui:firebase-ui-auth:4.2.0'
implementation 'com.firebaseui:firebase-ui-database:4.2.0'
// implementation('com.firebaseui:firebase-ui-database:4.2.0') {
// exclude group: 'com.google.firebase', module: 'firebase-database'
// }
// implementation 'com.google.firebase:firebase-database:16.0.1'
}