Firestore:在类中找不到要序列化的属性。

9 浏览
0 Comments

Firestore:在类中找不到要序列化的属性。

注意:\n请不要将此问题标记为重复,因为我已经阅读了类似问题及其答案。\n错误:\n

\njava.lang.RuntimeException: 类 com.appz.abhi.shudhbatter.b.c 上找不到要序列化的属性
\n at com.google.firebase.firestore.g.l$a.(Unknown Source)
\n at com.google.firebase.firestore.g.l.a(Unknown Source)
\n at com.google.firebase.firestore.g.l.b(Unknown Source)
\n at com.google.firebase.firestore.g.l.b(Unknown Source)
\n at com.google.firebase.firestore.g.l.a(Unknown Source)
\n at com.google.firebase.firestore.ah.b(Unknown Source)
\n at com.google.firebase.firestore.b.a(Unknown Source)
\n at com.appz.abhi.shudhbatter.view.onboarding.a.a.a.a(Unknown Source)
\n at com.appz.abhi.shudhbatter.view.onboarding.a.a.a.lambda$56b6vrtW7GJri_HgEDiOk1aRbrY(Unknown\n Source)
\n at com.appz.abhi.shudhbatter.view.onboarding.a.a.-$$Lambda$a$56b6vrtW7GJri_HgEDiOk1aRbrY.onClick(lambda)
\n at android.view.View.performClick(View.java:5647)
\n at android.view.View$PerformClick.run(View.java:22465)
\n at android.os.Handler.handleCallback(Handler.java:754)
\n at android.os.Handler.dispatchMessage(Handler.java:95)
\n at android.os.Looper.loop(Looper.java:163)
\n at android.app.ActivityThread.main(ActivityThread.java:6238)
\n at java.lang.reflect.Method.invoke(Native Method)
\n at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
\n at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) \n

\n类似问题:\n

    \n

  1. Firebase类上找不到要序列化的属性
  2. \n

  3. 类com.contentful.vault.Asset上找不到要序列化的属性
  4. \n

  5. 在发布模式下找不到要序列化的属性
  6. \n

  7. Firebase - 类上找不到要序列化的属性
  8. \n

\nproguard-rules.pro: \n

-assumenosideeffects class android.util.Log {
    public static *** d(...);
}
# 添加此全局规则
-keepattributes Signature
-keep class android.support.v7.widget.RecyclerView { *; }
# 保留自定义模型类
-keepclassmembers class com.mypackage.model.** { *; }
-keep class com.mypackage.model.** { *; }
-keep class com.mypackage.util.** { *; }

\n使用映射文件,我发现错误是由以下模型类引起的:\nUser.java: \n

package com.mypackage.model;
import java.io.Serializable;
public class User implements Serializable {
    //  数据
    private Long phone;
    private String uid, name, mail, apartmentName, doorNo;
    private UserType userType;
    public User() {
        userType = UserType.USER;
    }
    public Long getPhone() {
        return phone;
    }
    public void setPhone(Long phone) {
        this.phone = phone;
    }
    public String getUid() {
        return uid;
    }
    public void setUid(String uid) {
        this.uid = uid;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getMail() {
        return mail;
    }
    public void setMail(String mail) {
        this.mail = mail;
    }
    public String getApartmentName() {
        return apartmentName;
    }
    public void setApartmentName(String apartmentName) {
        this.apartmentName = apartmentName;
    }
    public String getDoorNo() {
        return doorNo;
    }
    public void setDoorNo(String doorNo) {
        this.doorNo = doorNo;
    }
    public UserType getUserType() {
        return userType;
    }
    public void setUserType(UserType userType) {
        this.userType = userType;
    }
}

\nUserType.java: \n

package com.mypackage.model;
public enum UserType {
    USER, ADMIN, DELIVERY
}

0
0 Comments

Firestore : No properties to serialize found on class 这个问题出现的原因是在类中找不到可序列化的属性。这个问题的解决方法如下:

  1. 清理和重新构建项目。
  2. 删除所有的proguard规则。
  3. 在每个模型类的开头添加@Keep
0