third_party/java/proguard/proguard6.2.2/docs/downloads.md
ProGuard is distributed under the terms of the GNU General Public License. Please consult the license page for more details.
ProGuard is written in Java, so it requires a Java Runtime Environment (JRE 1.7 or higher).
You can download ProGuard in various forms:
You can find major releases, minor releases with important bug fixes, and beta releases with the latest new features and any less urgent bug fixes.
If you're still working with an older version of ProGuard, check out the summary of changes below, to see if you're missing something essential. Unless noted otherwise, ProGuard remains compatible across versions, so don't be afraid to update.
| | | |
|--------|----------|----------|----------------------------------
| 6.2.2 | | GRADLE | Fixed missing runtime dependencies.
| 6.2.1 | PGD-12 | GRADLE | Fixed build of Gradle plugin.
| 6.2.1 | DGD-827 | CORE | Fixed retracing of obfuscated class / method names in some cases.
| 6.2.1 | PGD-15 | CORE | Fixed potential ClassFormatError due to corrupt LineNumberTables when processing class files generated by groovy 2.5.5+.
| 6.2.1 | DGD-1503 | CORE | Added default filter to prevent processing of versioned class files.
| 6.2.1 | DGD-1364 | DOCS | Documented the mapping file format.
| 6.2.1 | DGD-950 | CORE | Fixed potential EmptyStackException when generating mapping files with inlined methods in rare cases.
| 6.2.1 | PGD-10 | CORE | Fixed potential VerifyError when optimizing classes with class version 11+ due to nest based access.
| 6.2.1 | PGD-11 | CORE | Fixed gradle example for processing libraries.
| 6.2.1 | PGD-8 | CORE | Fixed potential IllegalArgumentException with message Value "x" is not a reference value when optimizing code with conditional casts.
| 6.2.1 | DGD-1424 | CORE | Fixed incomplete fix in case of inlining method with type annotations.
| 6.2.0 | DGD-1359 | CORE | Fixed removal of non-static write-only fields (optimization field/removal/writeonly).
| 6.2.0 | DGD-1424 | CORE | Fixed potential build error when inlining methods into code attributes with type annotations.
| 6.2.0 | PGD-764 | GUI | Fixed text fields for obfuscation dictionaries.
| 6.2.0 | PGD-751 | GUI | Fixed boilerplate settings and foldable panels.
| 6.2.0 | DGD-1418 | CORE | Fixed class member access checking for backporting of closures.
| 6.2.0 | DGD-1359 | CORE | Fixed removal of write-only fields.
| 6.2.0 | PGD-756 | CORE | Fixed detection of functional interfaces.
| 6.2.0 | DGD-1317 | CORE | Fixed potential build errors when optimizing methods with many parameters.
| 6.2.0 | PGD-753 | CORE | Fixed processing of signature attributes in constructors of inner classes and enum types.
| 6.2.0 | PGD-759 | CORE | Fixed backporting of Java 8 API types when used as parameters in private methods.
| 6.2.0 | PGD-1 | CORE | Fixed optimization of exception handling in Kotlin runtime.
let and the Elvis operator ?:.-assumevalues, with corresponding optimizations on
integer intervals.module-info
classes with requires without version.-if, to specify conditions for -keep options.-addconfigurationdebugging, to instrument the
code to get feedback about missing configuration at runtime.-android to tune processing for Android.-keep options.-assumenoexternalsideeffects,
-assumenoescapingparameters, and -assumenoexternalreturnvalues,
to express fine-grained assumptions for better code optimization.includedescriptorclasses is specified.-ignorewarnings is specified.-keep modifier includedescriptorclasses.-dontpreverify
is specified.optimize.conservatively.optimize.conservatively to allow for
instructions intentionally throwing NullPointerException,
ArrayIndexOutOfBoundsException, or ClassCastException without
other useful effects.-keepparameternames or -keepattributes.-keepclassmembers
without specific class or class members.-keep options.-keepparameternames.-dontskipnonpubliclibraryclasses is now set by default. Added
-skipnonpubliclibraryclasses as an option.-optimizations for fine-grained configuration
of optimizations.-adaptclassstrings for adapting string constants that
correspond to obfuscated classes.-keeppackagenames for keeping specified package names
from being obfuscated.-keepdirectories for keeping specified directory
entries in output jars.-dontnote and -dontwarn for fine-grained
configuration of notes and warnings.-regex in ReTrace, for specifying alternative regular
expressions to parse stack traces.EnclosingMethod
attributes are being kept.-keepclassmembers options.-classobfuscationdictionary and
-packageobfuscationdictionary.maximum.inlined.code.length (default is 8) and
maximum.resulting.code.length (defaults are 8000 for JSE and 2000
for JME), for expert users who read release notes.<injars> and
<libraryjars> elements.-microedition and -dontpreverify.-target to modify java version of processed
class files.-keep options more orthogonal and flexible, with option
modifiers allowshrinking, allowoptimization, and
allowobfuscation.***", matching
any type, and "...", matching any number of arguments.-forceprocessing.-flattenpackagehierarchy and -repackageclasses
(replacing -defaultpackage) to control obfuscation of
package names.-adaptresourcefilenames and
-adaptresourcefilecontents, with file filters, to update resource
files corresponding to obfuscated class names.Exceptions attributes as optional.EnclosingClass$InnerClass) in obfuscation step, if InnerClasses
attributes or EnclosingMethod attributes are being kept.Upgrade considerations:
Exceptions attribute as optional,
you may have to specify -keepattributes Exceptions, notably when
processing code that is to be used as a library.-microedition. You then no longer need to process the
code with an external preverifier.-repackageclasses instead of the old
option name -defaultpackage.-dontusemixedcaseclassnames is specified.-useuniqueclassmembernames.Class.forName detection.-basedirectory option.-whyareyoukeeping option to get details on why given classes
and class members are being kept.Class.forName constructs.assumenosideeffects' nested element in Ant task.-resourcejars option. Resources should now be read using
regular -injars options, using filters if necessary.outjars' now nested element instead of attribute.type' attribute of <method> element no longer defaults to
'void'.< and > characters now have to be encoded in
embedded configurations.<proguardconfiguration> task no longer accepts attributes.-applymapping option for incremental obfuscation.SourceDir attribute..class constructs.-defaultpackage bug for protected classes and class members.-defaultpackage option..class constructs in internal classes targeted
at JRE1.2 (the default in JDK1.4).-dump option when -outjar option is not present..class detection for classes compiled with Jikes.Class.forName("MyClass"),
MyClass.class, and
(MyClass)Class.forName(variable).newInstance() constructs. This
greatly simplifies configuration.