Red de conocimiento informático - Problemas con los teléfonos móviles - La declaración de reglas de ofuscación más completa de ProGuard

La declaración de reglas de ofuscación más completa de ProGuard

-include filename

Introduce recursivamente el archivo de configuración del directorio

-basedirectory nombredirectorio

-injars class_path

Especifica el paquete jar (o wars, orears, orzip o estructura de directorios) que será procesado por la aplicación y cuyos archivos de clase serán procesados ​​y escritos en los jars de salida. Cualquier archivo que no sea de clase incluido se copiará directamente pero no se procesará. (Preste atención al filtrado de archivos generados automáticamente por el IDE);

-outjars class_path

Especifique el nombre del archivo jar de salida (wars, ear, zip, estructura de directorios); Los archivos jar especificados por -injar han sido procesados ​​y se escribirán en los archivos jar de salida especificados. Si no se especifica outjars, no se escribirá el archivo de clase.

-libraryjars class_path no ofuscará la biblioteca jar especificada (el proyecto de Android no ofuscará la biblioteca de terceros importada)

-skipnonpubliclibraryclasses no ofuscará la biblioteca jar especificada. strong> No confunda las clases de llamadas no públicas en archivos jar específicos

-dontskipnonpubliclibraryclasses No ignore las clases de llamadas no públicas en archivos jar específicos (opción predeterminada) y los reproductores anteriores

-dontskipnonpubliclibraryclassmembers

No ignorar los miembros de la clase pública (variables y métodos) en la biblioteca especificada. De forma predeterminada, ProGuard los ignorará

- keepdirectories [ director_filtro ] Especifica la estructura del directorio que se preservará.

-versión de destino

Especifique el número de versión de Java. El número de versión puede ser 1.0, 1.1, 1.2, 1.3, 1.4, 1.5 (o solo 5), 1.6 (o solo 6) o 1.7 (o solo 7). De forma predeterminada, el número de versión de un archivo de clase permanece sin cambios. Por ejemplo, es posible que desee actualizar sus archivos de clase a Java 6 cambiando el número de versión y la prevalidación.

-forceprocessing Fuerza el procesamiento de archivos jar de entrada (-injars) incluso si el archivo jar de salida es el más reciente. Determina si los archivos o directorios de entrada, salida y configuración especificados están actualizados en función de sus marcas de tiempo.

-keep [, modificador, ... ] class_specification

Especifica las clases y los miembros de la clase que se conservarán (como biblioteca de clases pública ***, todos los métodos públicos de acceso público son debe conservarse)

-keepclassmembers [, modificador, ...] especificación_clase

-keep [, modificador, ...] especificación_clase

-keep [ , modificador, ... ] especificación_clase

Especifique los miembros de la clase que se conservarán: variables o métodos

-keepclasseswithmembers [, modificador, ... ] especificación_clase

Especifique las clases y los miembros de la clase que se conservarán si los miembros de la clase especificados existen (es decir, similares a mantener)

-keepnames class_specification

-keepclasseswithmembers [, modificador, ... especificación < / p>

[Abreviatura de -keepallowshrinking class_specification]

Especifica las clases y los miembros de la clase cuyos nombres se conservarán, siempre que no se eliminen durante la fase de reducción. Solo para pruebas difusas

-keepclassmembernames especificación_clase

[-keepclassmembersallowshrinking abreviatura de especificación_clase]

Especifica los miembros de la clase cuyos nombres se conservarán si están en The La etapa de compresión no se elimina. Solo se usa para ofuscación

-keepclasseswithmembernames especificación_clase

[-keepclasseswithmembers permite reducir la abreviatura de especificación_clase]

[-keepclasseswithmembers permite reducir la abreviatura de especificación_clase reducido]. especificación]

Especifica un miembro de la clase cuyo nombre se conservará, si el miembro de la clase especificado todavía existe después de la fase de compresión. Sólo para ofuscación

-printseeds [nombre de archivo]

Especifica una lista exhaustiva de clases y miembros de clase que coinciden con las distintas opciones de -keep. La lista se imprimirá en la salida estándar o en el archivo especificado. Esta lista se puede utilizar para verificar que realmente se encuentre el miembro de clase esperado, especialmente si se utilizan comodines. Por ejemplo, es posible que desee enumerar todas las aplicaciones o todos los subprogramas guardados.

Puede usarse después de los comandos keep, keepclassmembers, keepclasseswithmembers

rt.jar(java/ .class, javax/ class)

input.jar(! . gif, imágenes/ )

input.war(lib/ .jar, support/ jar; .class, .gif)

-clases injars

- injars en1.jar

-injars en2.jar

-injars en3.jar

-outjars out.jar

-injars en1 .jar

-injars in3.jar

-outjars out

-injars base_in1.jar

-injars base_in2.jar<. / p>

-injars base_in3.jar

-outjars base_out.jar(java/, javax/)

-injars in.jar

- outjars code_out.jar(**. class)

-outjars resources_out.jar

"lt;java.homegt;/lib/rt.jar" se interpretará como "/usr / local/java/jdk/jre/lib/rt."

"lt;user.homegt; "se interpretará como el directorio de inicio del usuario

"lt;user.dirgt ; "Se interpretará como el directorio de trabajo actual

java/.class, javax/.class //Coincide con todas las .classes en los archivos de clase en los directorios java y javax y sus subdirectorios

-keep class org.codehaus.jackson.* //mantiene los archivos de clase en org.codehaus.jackson.*. Jackson. //mantenga todos los archivos de clase en org.codehaus.Jackson, incluidos los archivos de clase en sus subpaquetes

! .gif, imágenes/** coincide con todos los archivos en el directorio de imágenes, pero no incluye archivos .gif

-injars in.jar(!images/**) //Especifique el paquete jar de entrada, pero eliminar imágenes Todos los archivos en el directorio

"foo, bar" coincide con los archivos foo y todos los nombres que terminan en bar.

"!foobar, bar " coincide con todos los nombres que terminan en bar excepto foobar.

[@annotationtype] [[!] público|final|abstracto|@...].

[!] Interfaz|Clase|enum nombre de clase

[extiende|implementa [@annotationtype] nombre de clase]

[{

[@annotationtype] [[!] público|privado|protegido|estático|volátil|transitorio...] lt; camposgt; |

(nombre del campo tipo de campo);

[@annotationtype] [[! público|privado|protegido|estático|sincronizado|nativo|abstracto|estrictofp ...]lt;methodsgt;|

lt;initgt;(argumenttype, ...) |

nombre de clase (tipo de argumento,...) |

[@annotationtype] [[!...) |

(nombre de método de tipo de retorno (tipo de argumento,...)) )

[@annotationtype] [[! público|privado|protegido|estático ... ] *

...

}]

-keepclassmembernames clase com.dev.demo.one.ClassOneOne {

public *;

}

-keep class com.dev.demo.ClassOne {

público lt; initgt ();

}

-mantener clase com.dev.demo.two.ClassTwoTwo {

público lt;initgt;(int);

}

-keepclassmember clase com.dev.demo.two.ClassTwoThree {

public lt;methodsgt;;

privado

}

-keep class * extiende com

-keepnames class com.dev.demo.two.ClassTwoThree { * ;}

-keepnames clase com.dev.demo.one.ClassOne { ;}

-keep clase com.dev.