¿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.
- Cómo activar proguard en mi proyecto?
- AppCompat V7 falla al usar shrinkResources
- Android Proguard SqlCipher NoClassDefFoundError
- * Vs ** vs *** en Proguard?
- Aplicación de Android con android-support-v4.jar añadido a lib enfrentando error al intentar iniciar sesión usando progaurd en IntelliJ Idea
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.
- Configuración de ProGuard para Guava con obfuscación y optimización
- Proguard config para facebook sdk. Eliminar todo excepto el análisis
- Proguard Parámetro del tipo que falta
- Eliminar localizaciones no utilizadas de APK
- Proguard no obstruye las aplicaciones de Android
- Proguard obfusca nombres de actividad en un manifiesto de biblioteca fusionada
- ¿Cómo invertir el ingeniero / descompilar un APK Android que se ofuscó con ProGuard?
- ¿Cómo verificar los datos de POST se envía desde la aplicación de Android con la firma SHA1 correcta?
- 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