2017-09-16 280 views
0

发现我有这样一个类:火力地堡 - 无属性序列上

class dataModel { 
    String id, name; 
    Integer count; 

    dataModel() {} 
} 

我从火力添加数据。

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真正

回答

2

您需要添加到您的类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

另一个需求是在proguard-rules.pro中添加-keepclassmembers class com.yourcompany.models.** { *; }

如上所述here

+0

真实的解决方案:https://stackoverflow.com/a/44474181/1537413 – Dika

+0

@Dika刚刚用另一种方法编辑我的答案。希望你重新考虑提出答案。 –

+0

完成。抱歉回复晚了。我编辑了你的答案 – Dika