致命异常:com.google.firebase.database.d:Class com.myapp.android.c缺少没有参数的构造函数
所以我在这里走到了死胡同。。我试图查看其他发布的问题/解决方案,但似乎没有一个能帮助我 所以我用Firebase构建了一个Android应用程序。 直到今天,一切都很好,我已经能够登录用户 突然(在iOS和Web应用程序上工作了一段时间后),我回到我的Android应用程序,发现它在启动时崩溃了(我推断它在获取用户数据时发生了什么) 我得到了以下堆栈跟踪,遗憾的是,我不能很好地理解实际问题在哪里致命异常:com.google.firebase.database.d:Class com.myapp.android.c缺少没有参数的构造函数,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,所以我在这里走到了死胡同。。我试图查看其他发布的问题/解决方案,但似乎没有一个能帮助我 所以我用Firebase构建了一个Android应用程序。 直到今天,一切都很好,我已经能够登录用户 突然(在iOS和Web应用程序上工作了一段时间后),我回到我的Android应用程序,发现它在启动时崩溃了(我推断它在获取用户数据时发生了什么) 我得到了以下堆栈跟踪,遗憾的是,我不能很好地理解实际问题在哪里 Fatal Exception: com.google.firebase.database.d: C
Fatal Exception: com.google.firebase.database.d: Class com.myapp.android.c is missing a constructor with no arguments
at com.google.android.gms.internal.zzbqi$zza.zzjs(Unknown Source)
at com.google.android.gms.internal.zzbqi$zza.zzjs(Unknown Source)
at com.google.android.gms.internal.zzbqi.zzaz(Unknown Source)
at com.google.android.gms.internal.zzbqi.zza(Unknown Source)
at com.google.android.gms.internal.zzbqi.zza(Unknown Source)
at com.google.android.gms.internal.zzbqi.zzaw(Unknown Source)
at com.google.android.gms.internal.zzbqi$zza.zzjs(Unknown Source)
at com.google.android.gms.internal.zzbqi$zza.zzjs(Unknown Source)
at com.google.android.gms.internal.zzbqi.zzaz(Unknown Source)
at com.google.android.gms.internal.zzbqi.zza(Unknown Source)
at com.google.android.gms.internal.zzbqi.zza(Unknown Source)
at com.google.android.gms.internal.zzbqi.zzaw(Unknown Source)
at com.google.android.gms.internal.zzbqi.zza(Unknown Source)
at com.google.android.gms.internal.zzbqi.zzaw(Unknown Source)
at com.google.android.gms.internal.zzbqi$zza.zzjs(Unknown Source)
at com.google.android.gms.internal.zzbqi$zza.zzjs(Unknown Source)
at com.google.android.gms.internal.zzbqi.zzaz(Unknown Source)
at com.google.android.gms.internal.zzbqi.zza(Unknown Source)
at com.google.android.gms.internal.zzbqi.zzaw(Unknown Source)
at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
at com.myapp.android.FirebaseHelper$1.onDataChange(Unknown Source)
at com.google.firebase.database.Query$1.onDataChange(Unknown Source)
at com.google.android.gms.internal.zzbmz.zza(Unknown Source)
at com.google.android.gms.internal.zzbnz.zzYj(Unknown Source)
at com.google.android.gms.internal.zzboc$1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5728)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
我能从com.google.firebase.database.DataSnapshot.getValue(未知源代码)的中得到的唯一线索,让我觉得它发生在我的代码中
public void getUserData(final Boolean autoLogin, final Boolean fromGoogleSignIn) {
mDatabase = FirebaseDatabase.getInstance().getReference();
final DatabaseReference userRef = mDatabase.child("users").child(FirebaseAuth.getInstance().getCurrentUser().getUid());
ValueEventListener userListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.getValue() == null) {
// Create User Data
} else {
sharedInstance().currentUser = dataSnapshot.getValue(User.class); // <-- Crashing here??
}
}
};
userRef.addListenerForSingleValueEvent(userListener);
}
有什么想法吗?
谢谢!:) 出现问题的原因似乎是,在Proguard混淆了您的类之后,Firebase无法找到要从数据库中获取值的类(使用dataSnapshot.getValue(YourClass.class);
)。我也有同样的问题,我最终通过添加
-dontobfuscate
proguard-rules.pro的选项。由于某种原因,-保留
选项对我不起作用
可能有一个解决方案可以让其他类保持模糊,我只是不需要它,所以这对我来说很有效。你需要编辑proguard文件,以避免缩小你的代码。感谢超级快速回复@cricket\u 007!我把我的progord文件添加到原来的帖子中。。。有什么我做错了吗?考虑到错误已经com.myapp.android.c
,看来你没有在包中“保留”一些类。
-dontobfuscate