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. | 
-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 names of the output jars (or wars, ears, zips, or directories). | 
-libraryjars
                 class_path | 
Specifies the library jars (or wars, ears, zips, or directories). | 
-skipnonpubliclibraryclasses | 
Ignore non-public library classes. | 
-dontskipnonpubliclibraryclasses | 
Don't ignore non-public library classes (the default). | 
-dontskipnonpubliclibraryclassmembers | 
Don't ignore package visible library class members. | 
-keepdirectories
                 [directory_filter] | 
Keep the specified directories in the output jars (or wars, ears, zips, or directories). | 
-target
                 version | 
Set the given version number in the processed classes. | 
-forceprocessing | 
Process the input, even if the output seems up to date. | 
-keep
                 [,modifier,...]
                 class_specification | 
Preserve the specified classes and class members. | 
-keepclassmembers
                 [,modifier,...]
                 class_specification | 
Preserve the specified class members, if their classes are preserved as well. | 
-keepclasseswithmembers
                 [,modifier,...]
                 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. | 
-optimizations
                 optimization_filter | 
The optimizations to be enabled and disabled. | 
-optimizationpasses
                 n | 
The number of optimization passes to be performed. | 
-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. | 
-mergeinterfacesaggressively | 
Allow any interfaces to be merged, 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 field names and method names. | 
-classobfuscationdictionary
                 filename | 
Use the words in the given text file as obfuscated class names. | 
-packageobfuscationdictionary
                 filename | 
Use the words in the given text file as obfuscated package names. | 
-overloadaggressively | 
Apply aggressive overloading while obfuscating. | 
-useuniqueclassmembernames | 
Ensure uniform obfuscated class member names for subsequent incremental obfuscation. | 
-dontusemixedcaseclassnames | 
Don't generate mixed-case class names while obfuscating. | 
-keeppackagenames
                 [package_filter] | 
Keep the specified package names from being obfuscated. | 
-flattenpackagehierarchy
                 [package_name] | 
Repackage all packages that are renamed into the single given parent package. | 
-repackageclasses
                 [package_name] | 
Repackage all class files that are renamed into the single given package. | 
-keepattributes
                 [attribute_filter] | 
Preserve the given optional attributes; typically
    Exceptions, InnerClasses,
    Signature, Deprecated,
    SourceFile, SourceDir,
    LineNumberTable,
    LocalVariableTable, LocalVariableTypeTable,
    Synthetic, EnclosingMethod, and
    *Annotation*. | 
-keepparameternames | 
Keep the parameter names and types of methods that are kept. | 
-renamesourcefileattribute
                 [string] | 
Put the given constant string in the SourceFile
    attributes. | 
-adaptclassstrings
                 [class_filter] | 
Adapt string constants in the specified classes, based on the obfuscated names of any corresponding classes. | 
-adaptresourcefilenames
                 [file_filter] | 
Rename the specified resource files, based on the obfuscated names of the corresponding class files. | 
-adaptresourcefilecontents
                 [file_filter] | 
Update the contents of the specified resource files, based on the obfuscated names of the processed classes. | 
-dontpreverify | 
Don't preverify the processed class files. | 
-microedition | 
Target the processed class files at Java Micro Edition. | 
-verbose | 
Write out some more information during processing. | 
-dontnote
                 [class_filter] | 
Don't print notes about potential mistakes or omissions in the configuration. | 
-dontwarn
                 [class_filter] | 
Don't warn about unresolved references at all. | 
-ignorewarnings | 
Print warnings about unresolved references, but continue processing anyhow. | 
-printconfiguration
                 [filename] | 
Write out the entire configuration in traditional ProGuard style, to the standard output or to the given file. | 
-dump
                 [filename] | 
Write out the internal structure of the processed class files, to the standard output or to the given file. | 
Notes:
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 | 
includedescriptorclasses | 
Also keep any classes in the descriptors of specified fields and methods. | allowshrinking | 
Allow the specified entry points to be removed in the shrinking step. | 
allowoptimization | 
Allow the specified entry points to be modified in the optimization step. | 
allowobfuscation | 
Allow the specified entry points to be renamed in the obfuscation step. | 
[@annotationtype] [[!]public|final|abstract ...] [!]interface|class classname
    [extends|implements [@annotationtype] classname]
[{
    [@annotationtype] [[!]public|private|protected|static|volatile|transient ...] <fields> |
                                                                      (fieldtype fieldname);
    [@annotationtype] [[!]public|private|protected|static|synchronized|native|abstract|strictfp ...] <methods> |
                                                                                           <init>(argumenttype,...) |
                                                                                           classname(argumenttype,...) |
                                                                                           (returntype methodname(argumenttype,...));
    [@annotationtype] [[!]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, '%' for any primitive type,
    '***' for any type, and '...' for       any number of arguments.?' for a single character and '*'
    for any number of characters.