serialize found java android firebase firebase-database firebase-realtime-database

java - found - Firebase No se encontraron propiedades para serializar en la clase



no properties to serialize found on class (4)

En mi caso, olvidé agregar una regla de protección 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 oficial de la tienda de incendios:

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

Estoy bloqueado creando una base de datos 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) ;

Se levanta una excepción fatal.

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.<init>(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 tipos, y todos son aceptados. Que pasa


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

Cambiar las declaraciones de variables a public

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 dependiendo de su configuración. Como sabemos que POJO no tiene mucha optimización, ya que solo tiene campos con captadores y / o configuradores (opcionalmente), puede usar la anotación "@Keep" para que Proguard no elimine ningún método de esta clase.

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

@Keep public class Store {}


Tengo este problema hoy y solo resuelvo esto proporcionando getter / setter para variables privadas.

ex:

private String pid; public String getPid() { return pid; } public void setPid(String pid) { this.pid = pid; }

Ahora funciona perfectamente sin ningún error. Espero que ayude a los desarrolladores novatos.