我有一个这样的课程:
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
答案 0 :(得分:16)
您需要向您的班级添加implements Serializable
这样的内容:
class dataModel implements Serializable {
您还需要为您的文件添加一个构造函数。你的课应该是这样的:
class dataModel implements Serializable {
String id, name;
Integer count;
@ServerTimestamp
Date time;
dataModel() {}
dataModel(String id, String name, Integer count) {
this.id = id;
this.name = name;
this.count = count;
}
}
如果日期为null
,则它将具有服务器生成的时间戳。所以你不需要为它设置值。另请参阅用于标记要使用服务器时间戳填充的日期字段的注释。
同样非常重要的是,不要忘记添加public getters
。
另一个要求是在proguard-rules.pro中添加-keepclassmembers class com.yourcompany.models.** { *; }
。
如上所述here。