¿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.
- Android form build: proguard no puede encontrar el método de referencia en la clase ViewConfigurationCompatFroyo
- Dependencias de IBM MobileFirst 7
- Android: Java: Proguard: ¿Cómo verificar si mi jar (proyecto jar diferente) / apk se procesa correctamente? (Estoy pensando en hacer ingeniería inversa)
- Proguard con la colección parametrizada orrmlite
- Proguard mientras que la biblioteca Butterknife y otras advertencias
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.
- Proguard hace reflexionar con la clase R en la aplicación android ya no funciona
- Proguard elimina clase Anonymous en clase Anonymous en Java
- Error de generación de ProGuard "Referencias no resueltas"
- ProGuard no funciona en mi aplicación
- Mantenga los nombres de los métodos de interfaz internos en proguard
- Obtener advertencias con Proguard (con bibliotecas externas)
- Dile a Proguard que mantenga la anotación en los métodos
- ¿Dónde encuentro proguard.cfg en mi proyecto?
- 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