android - descargar - firebase ui implementation
ConfiguraciĆ³n de Proguard para la biblioteca Firebase-UI (2)
Al crear una APK con proguard habilitado, se lanza la siguiente excepción cuando se usa FirebaseRecyclerAdapter de la biblioteca Firebase-UI ( com.firebaseui:firebase-ui:0.3.0
):
java.lang.RuntimeException: java.lang.NoSuchMethodException: <init> [class android.view.View]
at com.firebase.ui.FirebaseRecyclerAdapter.onCreateViewHolder(FirebaseRecyclerAdapter.java:168)
La versión de depuración (sin proguard) funciona bien. ¿Quién tiene una configuración proguard funcional para Firebase-UI?
Mi configuración de proguard actual se ve así (solo las partes relacionadas con Firebase):
-optimizationpasses 5
-keepattributes SourceFile,LineNumberTable,Exceptions, Signature, InnerClasses,*Annotation*
-keepnames class ** { *; }
-keep class com.firebase.** { *; }
-keepnames class com.fasterxml.jackson.** { *; }
-keepnames class javax.servlet.** { *; }
-keepnames class org.ietf.jgss.** { *; }
Resolvió esto moviendo las clases de ViewHolder
que usa FirebaseRecyclerAdapter
a un paquete dedicado (por ejemplo, com.mypackage.myapp.viewholders) y agregando una regla dentro de la configuración de proguard para evitar que las clases dentro de este paquete sean ofuscadas por proguard:
-keep class com.mypackage.myapp.viewholders.** { *; }
Bueno, tenía mi ViewHolder
dentro de FirebaseRecyclerAdapter
relativo como una clase interna y me dio este error. Hacer que la clase interna haya resuelto el problema.
También https://github.com/firebase/FirebaseUI-Android/issues/46#issuecomment-167373575 dice lo mismo con una adición.
La clase interna ViewHolder
debe ser public
y static
para que pueda iniciarse a través de la reflexión.