¿Cómo puedo decirle a ProGuard que mantenga mi función que se utiliza para onClick?
Estoy usando el atributo android:onClick
en algunos de mis archivos de diseño .xml para mi aplicación de Android, pero ProGuard está quitando estos métodos de mi código cuando se ejecuta porque nada en mi código es llamarlos.
En lugar de especificar cada función individualmente, me gustaría nombrar algo como listener_functionName
, y usar comodines, como -keep listener_*
(sé que esto es incorrecto, pero espero que ilustra mi objetivo).
- Android Studio - Creación incremental de Gradle
- ADT R22 - Proguard - No se puede encontrar la clase referenciada
- ¿Cómo construyo un proyecto de Android usando Ant? (IntelliJ IDE)
- Problema con proguardFile, null devuelto: 1
- FileNotFoundException en el archivo proguard-rules.pro
Si esto es posible, sería genial, pero si no, todavía necesito saber cómo especificar estas funciones en el archivo proguard.cfg. Cualquier ayuda es apreciada.
- Mantenga los nombres de los métodos de interfaz internos en proguard
- Android Proguard construir duplicado Zip
- Error al usar proguard con Android Facebook sdk 3.0
- Cómo quitar android.Log.d?
- ¿Cómo usar el nuevo Android 2.0 Shrinker y Resource Shrinker juntos?
- java.lang.NoClassDefFoundError: org.apache.http.params.SyncBasicHttpParams
- Biblioteca de Compatiblity de Android Proguard
- ProGuard causa error de handshake SSL en Android
Según la documentación proguard :
También se pueden especificar campos y métodos mediante expresiones regulares. Los nombres pueden contener los comodines siguientes:? Coincide con cualquier carácter único en un nombre de método. * Coincide con cualquier parte de un nombre de método.
Así, encontrarás especificando
-keep class com.example.MyClass { public void listener_*(android.view.View); }
En sus banderas proguard.
Puedes hacerlo una vez para todas tus clases de esta manera:
-keepclasseswithmembers class * { void listener_*(...); }
Un enfoque un poco más codicioso que debe mantener todos los métodos "onClick":
-keepclassmembers class * { public void * (android.view.View); }
==> Así que básicamente todos los métodos públicos que tienen un Android View como el único Paramater deben sobrevivir a ProGuard entonces.
- ¿El recolector de basura de Android hace una pausa en otras aplicaciones mientras se ejecuta?
- Retrofit post utilizando Firebase