Firebase – 没有在类上找到的序列化属性
我有一个这样的课:
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为 真
您需要添加到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; } }
如果日期为si null
,则它将具有服务器生成的时间戳。 所以你不需要为它设置值。 另请参阅用于标记要使用服务器时间戳填充的日期字段的注释。
同样非常重要的是,不要忘记添加public getters
。
另一个要求是添加-keepclassmembers class com.yourcompany.models.** { *; }
在proguard-rules.pro中。
如上所述。