¿Cómo no ofuscar los métodos de interfaz y sus parámetros usando Progaurd en android?
Tengo el siguiente código
public class MyClass { public void method1(Integer marks) { } private String method3(String name){ } public interface interface1 { void method4(Integer ID); void method5(Integer rate, boolean status); } }
He utilizado progaurd-rules.pro
- Android form build: proguard no puede encontrar el método de referencia en la clase ViewConfigurationCompatFroyo
- Ofuscación de código mediante Eclipse IDE en Android
- Proguard y Android 🙁
- ¿Es posible descompilar un archivo .apk de Android?
- Obfuscation del código de Android. Quiero ocultar las claves de Parse.com
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod -keepparameternames -keep public class * -keepclassmembers public class *{ public *; } -keep public interface packageName.MyClass$interface1 { *; }
Código ofuscado como se indica a continuación:
public class MyClass { public void method1(Integer marks) { } private String a(String var1){ } public interface interface1 { void method4(Integer var1); void method5(Integer var1, boolean var2); } }
Quiero que las variables de los métodos de interfaz (ID, tasa y estado) no ofusquen. Como se indica a continuación
public interface interface1 { void method4(Integer ID); void method5(Integer rate, boolean status); }
¿Puede alguien sugerir cómo puede ser posible?
- El significado de { *; } En ProGuard
- Proguard me da muchas advertencias y falla
- ¿Debo mantener android.support.v4.app.Fragment y sus clases derivadas al crear una versión de lanzamiento de mi aplicación?
- ¿Ocultación / ofuscación simple de cadenas en APK?
- Android: ¿Los bytes SALT aleatorios pasados a AESObfuscator necesitan permanecer iguales?
- Cómo encriptar activos HTML + JS en Android Phonegap aplicación móvil?
- Android - ¿Cómo comprobar la ofuscación Proguard ha funcionado?
- Problemas parcelables al ofuscar con Proguard
Puede mantener los argumentos del método añadiendo indicadores adicionales a -keepattributes
. Ellos se parecen a esto:
-keepattributes LocalVariableTable,LocalVariableTypeTable
Desafortunadamente, esto mantiene los argumentos de ofuscación no sólo en la interfaz que desea, sino en todo el proyecto. Tal vez eso está bien para usted.
Si está usando una configuración predeterminada de proguard enviada junto con SDK de Android, también podría usar una anotación especial para evitar que algunas clases de ofuscación. Compruébelo .
Reglas de Proguard
Para Interfaces
Para mantener las clases de interfaz para mantener el uso
-keep public interface
Ejemplo: -keep public interface packageName.yourclass$interface1 { *; }
-keep public interface packageName.yourclass$interface1 { *; }
Mantener los miembros de la interfaz
-keep interface * { <methods>; }
De acuerdo con la documentación de ProGuard, el comodín coincide con cualquier campo.
La palabra clave de clase se refiere a cualquier interfaz o clase. La palabra clave de interfaz restringe las coincidencias con las clases de interfaz. La palabra clave enum restringe coincidencias con las clases de enumeración. Precediendo la interfaz o palabras clave de enum por un! Restringe las coincidencias a clases que no son interfaces o enumeraciones, respectivamente.
-keep public interface com.somepackage.SomeClass$someInterface { private <fields>; }
No estoy seguro de probar esto también
-keepclasseswithmembers class com.somepackage.SomeClass$someInterface{ void method4*(...); void method5*(...); }
ProGuard utiliza la convención de nomenclatura del bytecode Java, como se ve en los nombres de archivos de clase y stacktraces. Por lo tanto:
-keep public interface com.somepackage.SomeClass$someInterface {*;}
En caso de que su interfaz no sea pública.
-keep interface com.somepackage.SomeClass$someInterface {*;}.
- RTSP a través de streaming de vídeo HTTPS por GStreamer
- No se encontró la clase de barra de herramientas Android