我有这样一个类:
class dataModel {
String id, name;
Integer count;
dataModel() {}
}
然后我从 Firebase 添加数据。
mDatabase.addValueEventListener(mListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
dataSet.add(dataSnapshot.getValue(dataModel.class));
//...
}
});
当我以调试方式运行应用程序时,没有问题。但在发布后,应用程序崩溃并出现错误:
com.google.firebase.database.DatabaseException: No properties to serialize found on class com.my.package.dataModel
我有 minifyEnabled true
最佳答案
要解决这个问题,您的类需要实现 Serializable接口(interface):
class dataModel implements Serializable {}
您还需要添加一个具有三个参数的构造函数。你的类应该是这样的:
class dataModel implements Serializable {
private String id, name;
private Integer count;
@ServerTimestamp
private Date time;
dataModel() {}
dataModel(String id, String name, Integer count) {
this.id = id;
this.name = name;
this.count = count;
}
}
如果日期为 null
,它将具有服务器生成的时间戳。所以你不需要为它设置值。另请参阅用于标记要填充服务器时间戳的日期
字段的注释
。
同样非常重要,不要忘记添加public getters
。
另一个要求是添加 -keepclassmembers class com.yourcompany.models.** { *;
在 proguard-rules.pro 中。
如前所述here .
关于java - Firebase - 在类上找不到要序列化的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46254266/