ProGuard Reference Card

Usage

java -jar proguard.jar options ...

  Typically:

java -jar proguard.jar @myconfig.pro

Options

@filename Short for '-include filename'.
-include filename Read configuration options from the given file.
-basedirectory directoryname Specifies the base directory for subsequent relative file names.
-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.
-whyareyoukeeping class_specification Print details on why the given classes and class members are being kept in the shrinking step.
-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:

Overview of Keep Options

Keep 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

Class Specifications

[[!]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:


Copyright © 2002-2005 Eric Lafortune.