【问题标题】:Firebase - No properties to serialize found on classFirebase - 在类上找不到要序列化的属性
【发布时间】:2018-02-25 12:19:24
【问题描述】:

我有这样的课:

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

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

    要解决这个问题,你的类需要实现Serializable 接口:

    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,它将具有服务器生成的时间戳。所以你不需要为它设置值。另请参阅 annotation 用于标记要使用服务器时间戳填充的 Date 字段。

    也很重要,别忘了加public getters。

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

    正如here所说。

    【讨论】:

    • @Dika 刚刚用另一种方法编辑了我的答案。希望您重新考虑支持答案。
    • 完成。抱歉回复晚了。我编辑了你的答案
    • @AlexMamo com.google.firebase.database.DatabaseException: No properties to serialize found on class com.packagename.models.d 但是models文件夹中没有这样的类
    • 倒数第二行的Tks
    猜你喜欢
    • 2016-10-11
    • 2020-05-07
    • 1970-01-01
    • 2019-05-17
    • 2017-04-03
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多