java -jar proguard.jar
options ...
Typically:
java -jar proguard.jar @myconfig.pro
@ filename |
Short for '-include filename'. |
-include filename |
Read configuration options from the given file. |
-injars class_path |
Specifies the program jars (or wars, ears, zips, or directories). |
-outjars class_path |
Specifies the name of the output jars (or wars, ears, zips, or directories). |
-libraryjars class_path |
Specifies the library jars (or wars, ears, zips, or directories). |
-dontskipnonpubliclibraryclasses |
Don't ignore non-public library classes. |
-dontskipnonpubliclibraryclassmembers |
Don't ignore package visible library class members. |
-keep class_specification |
Preserve the specified classes and class members. |
-keepclassmembers
class_specification |
Preserve the specified class members, if their classes are preserved as well. |
-keepclasseswithmembers
class_specification |
Preserve the specified classes and class members, if all of the specified class members are present. |
-keepnames
class_specification |
Preserve the names of the specified classes and class members (if they aren't removed in the shrinking step). |
-keepclassmembernames
class_specification |
Preserve the names of the specified class members (if they aren't removed in the shrinking step). |
-keepclasseswithmembernames
class_specification |
Preserve the names of the specified classes and class members, if all of the specified class members are present (after the shrinking step). |
-printseeds [filename] |
List classes and class members matched by the various -keep
options, to the standard output or to the given file. |
-dontshrink |
Don't shrink the input class files. |
-printusage [filename] |
List dead code of the input class files, to the standard output or to the given file. |
-dontoptimize |
Don't optimize the input class files. |
-assumenosideeffects
class_specification |
Assume that the specified methods don't have any side effects, while optimizing. |
-allowaccessmodification |
Allow the access modifiers of classes and class members to be modified, while optimizing. |
-dontobfuscate |
Don't obfuscate the input class files. |
-printmapping [filename] |
Print the mapping from old names to new names for classes and class members that have been renamed, to the standard output or to the given file. |
-applymapping filename |
Reuse the given mapping, for incremental obfuscation. |
-obfuscationdictionary
filename |
Use the words in the given text file as obfuscated method names. |
-overloadaggressively |
Apply aggressive overloading while obfuscating. |
-defaultpackage [package_name] |
Repackage all class files that are renamed into the single given package. |
-dontusemixedcaseclassnames |
Don't generate mixed-case class names while obfuscating. |
-keepattributes
[attribute_name,...] |
Preserve the given optional attributes; typically
LineNumberTable , LocalVariableTable ,
SourceFile , Deprecated , Synthetic ,
Signature , and InnerClasses . |
-renamesourcefileattribute
[string] |
Put the given constant string in the SourceFile
attributes. |
-verbose |
Write out some more information during processing. |
-dontnote |
Don't print notes about class casts of variable dynamically created objects. |
-dontwarn |
Don't warn about unresolved references at all. |
-ignorewarnings |
Print warnings about unresolved references, but continue processing anyhow. |
-dump [filename] |
Write out the internal structure of the processed class files, to the standard output or to the given file. |
Notes:
Keep
OptionsKeep | From being removed or renamed | From being renamed |
---|---|---|
Classes and class members | -keep |
-keepnames |
Class members only | -keepclassmembers |
-keepclassmembernames |
Classes and class members, if class members present | -keepclasseswithmembers |
-keepclasseswithmembernames |
[[!]public|final|abstract ...] ([!]interface)|class classname [extends|implements classname] [{ [[!]public|private|protected|static|volatile|transient ...] <fields> | (fieldtype fieldname); [[!]public|private|protected|static|synchronized|native|abstract|strictfp ...] <methods> | <init>(argumenttype,...) | classname(argumenttype,...) | (returntype methodname(argumenttype,...)); [[!]public|private|protected|static ... ] *; ... }]
Notes:
?
' for a single character,
'*
' for any number of characters (but not the package
separator), '**
' for any number of (any)
characters, and '%
' for any primitive type.
?
' for a single character and '*
'
for any number of characters.