¿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).

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.

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.

  • ProGuard causa error de handshake SSL en Android
  • ¿Cómo evitar la ingeniería inversa de un archivo APK?
  • Android: Errores de clase duplicados en proguard
  • Cómo ofuscar un apk con Proguard a través de Eclipse?
  • Servicios de Google Play con Proguard en Android Studio
  • Utilizando Otto, el método sólo se suscribe si lo llamo directamente a otra parte
  • ¿Dónde están los archivos de salida de Android Wear Proguard?
  • Advertencias de Proguard "no se puede escribir recurso (entrada de zip duplicado)"
  • ¿Cómo ofuscar sólo un poco de clase o un solo paquete?
  • Cómo configurar mi archivo proguard-project.txt para eliminar solo Logs
  • ¿Cómo hacer que runProguard funcione para el plugin Gradle de android-library?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.