Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo configurar Proguard para mantener los métodos estáticos con diferentes tiempos de retorno

Tengo un conjunto de clases (más de 50) que contienen unos pocos métodos estáticos llamados parse() que devuelve una instancia de esa clase. Este es un ejemplo de una de esas clases:

 class SomeType { // Parse methods public static SomeType parse(String text) { ... } public static SomeType parse(Object obj) { ... } ... // Other methods public void static somethingStatic(...) { ... } public void somethingNotStatic(...) { ... } ... } 

Estoy tratando de configurar ProGuard para ofuscar estas clases y todos sus métodos y campos excepto los métodos de parse(...) . Básicamente, quiero ofuscar el nombre de la clase, todos los métodos estáticos y no estáticos, además de los campos de la clase.

He intentado utilizar:

 -keepclassmembers class SomeType { public static SomeType parse(***); } 

Y que funcionó bien para SomeType , pero no quiero tener que escribir esta regla para cada una de mis 50 clases … así que ¿cómo puedo generalizarlo?

Lo intenté:

 -keepclassmembers class ** { public static * parse(***); } 

Pero ProGuard se queja de la sintaxis del tipo de retorno …

2 Solutions collect form web for “Cómo configurar Proguard para mantener los métodos estáticos con diferentes tiempos de retorno”

Su regla era casi correcta, sólo use *** como tipo de retorno, que coincidirá con cualquier tipo:

 -keepclassmembers class ** { public static *** parse(***); } 

También se prefiere que los -keepclasseswithmembers la clase se mantengan los métodos que especifique y no la clase en sí (lo cual probablemente no sea necesario en su caso como usted describe).

Si tiene más de un argumento para los métodos de análisis, debería utilizar:

 -keepclassmembers class ** { public static *** parse(...); } 

El ... coincidirá con cualquier número de argumentos de cualquier tipo.

 -keepclasseswithmembers class * { public static *** parse(***); } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.