Firebase No hay propiedades para serializar encontradas en clase

Estoy bloqued creando una base de datos de Firebase.

Estoy tratando de modelar una clase. Una clase muy simple:

package com.glups.model; import com.google.firebase.database.IgnoreExtraProperties; @IgnoreExtraProperties public class AlumnoFB { private String nombre; private String apellidos; private String telefono; private String email; private Boolean tieneWhatsapp; private Boolean tieneTelegram; private Boolean tieneHangouts; private Long formaPago; private Double ratioHora; private Double precioHora; private Double horasCompensadas; public AlumnoFB() { // Default constructor required for calls to DataSnapshot.getValue(User.class) } public AlumnoFB(String nombre, String apellidos, String telefono, String email, Boolean tieneWhatsapp, Boolean tieneTelegram, Boolean tieneHangouts, Long formaPago, Double ratioHora, Double precioHora, Double horasCompensadas) { this.nombre = nombre; this.apellidos = apellidos; this.telefono = telefono; this.email = email; this.tieneWhatsapp = tieneWhatsapp; this.tieneTelegram = tieneTelegram; this.tieneHangouts = tieneHangouts; this.formaPago = formaPago; this.ratioHora = ratioHora; this.precioHora = precioHora; this.horasCompensadas = horasCompensadas; } } 

eso es casi como una clase de muestra de Firebase.

El usuario de la aplicación obtenido de getUser () ha iniciado sesión en Firebase.

Cuando llamo a SetValue:

 AlumnoFB alumno = new AlumnoFB("", "", "", "", false, false, false, ((Integer)FormaPago.INT_NO_PAGADO).longValue(), 0.0, 0.0, 0.0); mDatabase.child("AlumnoFB").child(ControlClasesFirebase.getUser().getUid()).setValue(alumno) ; 

Una excepción fatal aumenta.

 06-10 10:17:37.179 13841-13841/com.glups.controlclases E/AndroidRuntime: FATAL EXCEPTION: main Process: com.glups.controlclases, PID: 13841 com.google.firebase.database.DatabaseException: No properties to serialize found on class com.glups.model.AlumnoFB at com.google.android.gms.internal.zzaix$zza.(Unknown Source) at com.google.android.gms.internal.zzaix.zzj(Unknown Source) at com.google.android.gms.internal.zzaix.zzaw(Unknown Source) at com.google.android.gms.internal.zzaix.zzav(Unknown Source) at com.google.firebase.database.DatabaseReference.zza(Unknown Source) at com.google.firebase.database.DatabaseReference.setValue(Unknown Source) at com.glups.controlclases.MainActivity$4.onClick(MainActivity.java:305) at android.view.View.performClick(View.java:4780) at android.view.View$PerformClick.run(View.java:19866) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5258) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

He verificado los tipos, y todos son aceptados. ¿Qué pasa?

Firebase requiere que tu Pojo tenga variables públicas o getter / setter.

Cambiar las declaraciones de variables al público

 public String nombre; public String apellidos; public String telefono; public String email; public Boolean tieneWhatsapp; public Boolean tieneTelegram; public Boolean tieneHangouts; public Long formaPago; public Double ratioHora; public Double precioHora; public Double horasCompensadas; 

Si está utilizando proguard, algunos métodos en el modelo podrían eliminarse según su configuración. Como sabemos que no hay mucha optimización para POJO, ya que solo tiene campos con getters y / o (opcionalmente) setters, puede usar la anotación “@Keep” para que proguard no elimine ningún método de esta clase.

Mire esto para obtener más información: https://developer.android.com/studio/build/shrink-code.html

 @Keep public class Store {} 

En mi caso, olvidé agregar una regla proguard para mantener las clases modelo:

 -keep class com.google.firebase.example.fireeats.model.** { *; } 

Esto es lo mismo que la respuesta de @ aselims, solo versión proguard.

Lo encontré en el ejemplo de Firerestre oficial:

https://github.com/firebase/quickstart-android/blob/master/firestre/app/proguard-rules.pro