¿Cómo mantener los nombres de métodos de clase que anulan \ implementa otro método de ser ofuscado?

Si tengo una Class B que implementa la Interface A y Proguard no es consciente de la existencia de esa interfaz, ¿cómo puedo mantener los nombres de los métodos que implementa los métodos abstractos de la interfaz A?

Observe por favor que deseo guardar los nombres del método, pero deseo que su contenido sea ofuscado.

Actualización: Esto es lo que tengo (Por favor note los comentarios):

 public class MyService extends Service { // an anonymous class that implements ServiceConnection private ServiceConnection myConnection = new ServiceConnection() { // don't change the following method's name @Override public void onServiceConnected(ComponentName className, IBinder service) { // I want this section to be obfuscated } } 

Quiero una solución general para este tipo de casos – No quiero declarar nombres de interfaces en la configuración de ProGuard.

  • Mantener todos los nombres de las clases públicas y mantener (evitar la ofuscación) de sus métodos públicos y protegidos.
  • En las clases no públicas y mantener (evitar la ofuscación) todos los métodos públicos y protegidos. Esto mantendrá los métodos que podrían implementar o extender otros métodos, de ser ofuscados.
  • No guarde los atributos de variables locales (asegúrese de que "LocalVariableTable" y "LocalVariableTypeTable" no se indican en la opción "-keepattributes").

Así que su archivo .pro debería verse así –

 #Keeping all public class names and keep (prevent obfuscation) of their public and protected methods -keep public class * { public protected <methods>; } # Keep (prevent obfuscation) all public and protected methods in non-public classes. # Notice that the non-public class names will still get obfuscated -keepclassmembers !public class * { public protected <methods>; } # Don't keep the local variables attributes (LocalVariableTable and LocalVariableTypeTable are dropped). -keepattributes Exceptions,Signature,Deprecated,SourceFile,SourceDir,LineNumberTable,Synthetic,EnclosingMethod,RuntimeVisibleAnnotations,RuntimeInvisibleAnnotations,RuntimeVisibleParameterAnnotations,RuntimeInvisibleParameterAnnotations,AnnotationDefault,InnerClasses,*Annotation* 

Tengo writtern un blog para Progaurding la aplicación de Android. Por favor revise el siguiente enlace

http://techspreadwithshraddha.wordpress.com/2013/03/26/android-progaurd/

ProGuard puede hacer lo que usted describe. Si no desea que cambie el nombre de clases y métodos, pruebe el siguiente:

 -keep,allowshrinking,allowoptimization class * { <methods>; } 

Espero que esto ayude

  • Número de línea incorrecto con ACRA
  • Proguard y Android :(
  • Cómo utilizar retrace.bat en android
  • ¿Cómo generar proguard-android.txt automáticamente?
  • Proyecto Android: Problema de exportación Lanzamiento cancelado! Proguard devuelto con el código de error 1. Consulte consola
  • Minify la aplicación para Android, pero no la ofusque
  • Android proguard mismo tarro especificado dos veces
  • Proguard Error / Dalvik Error 1 al firmar la aplicación para Android
  • Android cómo colocar todas mis clases en un solo paquete usando Proguard
  • Proguard Error al intentar exportar a través de android studio
  • Proguard no ignora las bibliotecas referenciadas
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.