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

  • Problema de Instabug Proguard
  • Fuente desconocida cuando uso Proguard
  • Cómo generar mapping.txt con Eclipse?
  • ¿Qué tan seguro es proteger contra la ingeniería inversa?
  • Clase FileProvider de Android no encontrada en versiones de lanzamiento
  • Progaurd issue "Advertencia: Ignorar el atributo InnerClasses para una clase interna anónima"
  • Excluir paquetes de proguard
  • ¿Cómo verificar los datos de POST se envía desde la aplicación de Android con la firma SHA1 correcta?
  • Proguard no funciona cuando se exporta con el complemento Eclipse ADT R19
  • AssertionError en Gson EnumTypeAdapter cuando se utiliza Proguard Obfuscation
  • Configuración de Proguard al utilizar la plantilla Google Cloud Endpoints de Android Studio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.