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

Abh*_*bhi 3 android android-proguard

笔记:

请不要将此问题标记为重复,因为我已经浏览过类似的问题及其答案。

错误 :

java.lang.RuntimeException:在 com.google.firebase.firestore.gl$a 的类 com.appz.abhi.shudhbatter.bc 上找不到要序列化的属性。
(来源未知)
在 com.google.firebase.firestore.gla(未知来源)
在 com.google.firebase.firestore.glb(未知来源)
在 com.google.firebase.firestore.glb(未知来源)
在 com.google.firebase.firestore.gla(未知来源)
在 com.google。 firebase.firestore.ah.b(未知来源)
位于 com.google.firebase.firestore.ba(未知来源)
位于 com.appz.abhi.shudhbatter.view.onboarding.aaaa(未知来源)
位于 com.appz.abhi。 shudhbatter.view.onboarding.aaalambda$56b6vrtW7GJri_HgEDiOk1aRbrY(来源不明)
在 com.appz.abhi.shudhbatter.view.onboarding.aa-$$Lambda$a$56b6vrtW7GJri_HgEDiOk1aRbrY.onClick(lambda)
在 android.view.View.performClick(View .java:5647)
在 android.view.View$PerformClick.run(View.java:22465)
在 android.os.Handler.handleCallback(Handler.java:754)
在 android.os.Handler.dispatchMessage(Handler.java: 95)
在 android.os.Looper.loop(Looper.java:163)
在 android.app.ActivityThread.main(ActivityThread.java:6238)
在 java.lang.reflect.Method.invoke(Native Method)
在 com.android .internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)

类似问题:

  1. Firebase 在类上找不到要序列化的属性
  2. 在类 com.contentful.vault.Asset 上找不到要序列化的属性
  3. Firebase 在发布模式下找不到要序列化的对象的属性
  4. Firebase - 在类上找不到要序列化的属性

proguard-rules.pro:

-assumenosideeffects class android.util.Log {
    public static *** d(...);
}

# Add this global rule
-keepattributes Signature

-keep class android.support.v7.widget.RecyclerView { *; }

# Keep custom model classes
-keepclassmembers class com.mypackage.model.** { *; }
-keep class com.mypackage.model.** { *; }
-keep class com.mypackage.util.** { *; }
Run Code Online (Sandbox Code Playgroud)

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

用户.java:

package com.mypackage.model;

import java.io.Serializable;

public class User implements Serializable {

    //  Data
    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;
    }
}
Run Code Online (Sandbox Code Playgroud)

用户类型.java:

package com.mypackage.model;

public enum UserType {
    USER, ADMIN, DELIVERY
}
Run Code Online (Sandbox Code Playgroud)

Abh*_*bhi 5

执行以下操作后,上述错误得到解决:

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