2017-09-16 142 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