
Former-commit-id: c2472d32726924a6f431c1fc5cf223e68e91045c Former-commit-id: 9afa79003e882347a41e1f187d13ef45c5113089
624 lines
27 KiB
HTML
624 lines
27 KiB
HTML
|
|
<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
|
|
<meta http-equiv="content-style-type" content="text/css">
|
|
<link rel="stylesheet" type="text/css" href="style.css">
|
|
<title>ProGuard Downloads</title>
|
|
<script type="text/javascript" language="JavaScript">
|
|
<!--
|
|
if (window.self==window.top)
|
|
window.top.location.replace("index.html#"+window.location.pathname+window.location.hash);
|
|
else {
|
|
var hash="#"+window.location.pathname.replace(window.top.location.pathname.replace("index.html", ""), "");
|
|
if (window.top.location.hash!=hash)
|
|
window.top.location.hash=hash;
|
|
}
|
|
//-->
|
|
</script>
|
|
</head>
|
|
<body>
|
|
|
|
<h2>Downloads</h2>
|
|
|
|
<b>ProGuard</b> is distributed under the terms of the GNU General Public
|
|
License. Please consult the <a href="license.html">license page</a> for more
|
|
details.
|
|
<p>
|
|
<b>ProGuard</b> is written in Java, so it requires a Java Runtime Environment
|
|
(JRE 1.4 or higher).
|
|
<p>
|
|
You can download the latest release (containing the program jar, the
|
|
documentation you're reading now, examples, and the source code) from this
|
|
location:
|
|
<p>
|
|
<center><a href="http://sourceforge.net/project/showfiles.php?group_id=54750"
|
|
target="other">Download section</a> (at <a
|
|
href="http://sourceforge.net/projects/proguard/"
|
|
target="other">SourceForge</a>)</center>
|
|
<p>
|
|
|
|
If you're still working with an older version of <b>ProGuard</b>, check out
|
|
the summary of changes below, to see if you're missing something essential.
|
|
Better look at the up-to-date <a
|
|
href="http://proguard.sourceforge.net/downloads.html">on-line version</a> if
|
|
you're reading a local copy of this page.
|
|
<p>
|
|
The download section may also contain updates with sub-minor version numbers.
|
|
These versions are typically released shortly after their parent versions, for
|
|
applying emergency fixes. Please make sure to look at those if you are
|
|
encountering any problems with recent releases.
|
|
<p>
|
|
Finally, there may be beta versions of upcoming releases. They may be of
|
|
interest too, because they typically contain any less urgent bug fixes
|
|
collected since the previous release.
|
|
<p>
|
|
|
|
<h3><div>Dec 2011</div> Version 4.7</h3>
|
|
<ul>
|
|
<li>Added support for Java 7.
|
|
<li>Parsing unquoted file names with special characters more leniently.
|
|
<li>Added support for instance methods overriding class methods.
|
|
<li>Added removal of unused parameterless constructors.
|
|
<li>Added removal of empty class initializers.
|
|
<li>Added peephole optimizations for constant strings.
|
|
<li>Avoiding idle optimization passes.
|
|
<li>Improved removal of unused constants after obfuscation.
|
|
<li>Fixed removal of unused classes referenced by annotations.
|
|
<li>Fixed simplifying parameters of constructors that should actually be
|
|
preserved.
|
|
<li>Fixed simplifying parameters of large numbers of similar constructors.
|
|
<li>Fixed exceptions in optimization of unusual obfuscated code.
|
|
<li>Fixed NullPointerException when specifying <code>-keepclassmembers</code>
|
|
without specific class or class members.
|
|
<li>Fixed potential problems with mixed-case class name dictionaries when not
|
|
allowing mixed-case class names.
|
|
<li>Fixed obfuscation of classes with EnclosingMethod attributes that don't
|
|
specify methods.
|
|
<li>Fixed preverification of returning try blocks with finally blocks, inside
|
|
try blocks, when compiled with JDK 1.4.
|
|
<li>Fixed sorting of interfaces containing generics.
|
|
<li>Fixed paths in shell scripts.
|
|
<li>Fixed filling in of text fields showing class obfuscation dictionary and
|
|
package obfuscation dictionary from configuration in GUI.
|
|
<li>Worked around Oracle Java 6/7 bug #7027598 that locked the GUI on Linux.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Feb 2011</div> Version 4.6</h3>
|
|
<ul>
|
|
<li>Added support for synthetic, bridge, and varargs modifiers in configuration.
|
|
<li>Added detection of atomic updater construction with constant arguments.
|
|
<li>Fixed merging of package visible classes.
|
|
<li>Fixed optimization of fields that are only accessed by reflection.
|
|
<li>Fixed optimization of read-only or write-only fields that are volatile.
|
|
<li>Fixed handling of side-effects due to static initializers.
|
|
<li>Fixed handling of bridge flags in obfuscation step.
|
|
<li>Fixed handling of super flag when merging classes.
|
|
<li>Fixed updating of variable tables when optimizing variables.
|
|
<li>Fixed removal of unused parameters with 32 or more parameters.
|
|
<li>Fixed incorrect removal of exception handler for instanceof instruction.
|
|
<li>Fixed inlining of methods with unusual exception handlers.
|
|
<li>Fixed optimization of unusual code causing stack underflow.
|
|
<li>Fixed keeping of constructor parameter names.
|
|
<li>Fixed unwanted wrapping of non-standard META-INF files.
|
|
<li>Fixed filtering of warnings about references to array types.
|
|
<li>Fixed overriding of warning option and note option in Ant task.
|
|
<li>Improved detection of file name extensions for canonical paths.
|
|
<li>Improved printing of seeds specified by <code>-keep</code> options.
|
|
<li>Improved printing of notes about unkept classes.
|
|
<li>Improved checking whether output is up to date.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Jun 2010</div> Version 4.5</h3>
|
|
<ul>
|
|
<li>Added option <code>-keepparameternames</code>.
|
|
<li><code>-dontskipnonpubliclibraryclasses</code> is now set by default. Added
|
|
<code>-skipnonpubliclibraryclasses</code> as an option.
|
|
<li>Made processing independent of order of input classes to get even more
|
|
deterministic output.
|
|
<li>Improved constant field propagation.
|
|
<li>Improved renaming of resource files in subdirectories of packages.
|
|
<li>Avoiding making fields in interfaces private.
|
|
<li>Optimizing exception handlers for monitorexit instruction.
|
|
<li>Reduced maximum allowed code length after inlining from 8000 bytes to
|
|
7000 bytes.
|
|
<li>Fixed missing warnings about missing library classes.
|
|
<li>Fixed shrinking of annotations with arrays of length 0.
|
|
<li>Fixed handling of -0.0 and NaN values when simplifying expressions.
|
|
<li>Fixed copying of exception handlers when simplifying tail recursion calls.
|
|
<li>Fixed optimization of introspected fields.
|
|
<li>Fixed simplification of unnecessary variable initializations.
|
|
<li>Fixed evaluation of subroutines in pre-JDK 1.5 code.
|
|
<li>Fixed updating of access flags in inner classes information.
|
|
<li>Fixed disabling of field privatization.
|
|
<li>Fixed invocations of privatized methods.
|
|
<li>Fixed updating of local variable debug information in optimization step.
|
|
<li>Fixed print settings without file name in GUI.
|
|
<li>Fixed field privatization setting in GUI.
|
|
<li>Fixed saving incorrectly quoted arguments in GUI.
|
|
<li>Fixed handling of regular expressions with only negators.
|
|
<li>Fixed unwanted wrapping of non-standard META-INF files.
|
|
<li>Fixed regular expression pattern for constructors in ReTrace.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Jul 2009</div> Version 4.4</h3>
|
|
<ul>
|
|
<li>Added new peephole optimizations.
|
|
<li>Added option <code>-optimizations</code> for fine-grained configuration of
|
|
optimizations.
|
|
<li>Added option <code>-adaptclassstrings</code> for adapting string constants
|
|
that correspond to obfuscated classes.
|
|
<li>Added option <code>-keeppackagenames</code> for keeping specified package
|
|
names from being obfuscated.
|
|
<li>Added option <code>-keepdirectories</code> for keeping specified directory
|
|
entries in output jars.
|
|
<li>Extended options <code>-dontnote</code> and <code>-dontwarn</code> for
|
|
fine-grained configuration of notes and warnings.
|
|
<li>Added option <code>-regex</code> in ReTrace, for specifying alternative
|
|
regular expressions to parse stack traces.
|
|
<li>Extended renaming of resource files based on obfuscation.
|
|
<li>Improved inlining of constant parameters and removal of unused parameters.
|
|
<li>Avoiding bug in IBM's JVM for JSE, in optimization step.
|
|
<li>Avoiding ArrayIndexOutOfBoundsException in optimization step.
|
|
<li>Fixed configuration with annotations that are not preserved themselves.
|
|
<li>Fixed preverification of invocations of super constructors with arguments
|
|
containing ternary operators.
|
|
<li>Fixed processing of unreachable exception handlers.
|
|
<li>Fixed merging of exception classes.
|
|
<li>Fixed repeated method inlining.
|
|
<li>Fixed inlining of finally blocks surrounded by large try blocks, compiled
|
|
with JDK 1.4 or earlier.
|
|
<li>Fixed optimization of complex finally blocks, compiled with JDK 1.4 or
|
|
earlier.
|
|
<li>Fixed obfuscation of anonymous class names, if <code>EnclosingMethod</code>
|
|
attributes are being kept.
|
|
<li>Fixed obfuscation of inner class names in generic types.
|
|
<li>Fixed decoding of UTF-8 strings containing special characters.
|
|
<li>Fixed copying of debug information and annotations when merging classes.
|
|
<li>Fixed writing out of unknown attributes.
|
|
<li>Fixed updating manifest files with split lines.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Dec 2008</div> Version 4.3</h3>
|
|
<ul>
|
|
<li>Added class merging.
|
|
<li>Added static single assignment analysis.
|
|
<li>Added support for annotation and enumeration class types in configuration.
|
|
<li>Refined shrinking of fields in case of unusual
|
|
<code>-keepclassmembers</code> options.
|
|
<li>Added simplification of tail recursion calls.
|
|
<li>Added new peephole optimizations.
|
|
<li>Fixed optimization of unused variable initializations causing negative
|
|
stack sizes.
|
|
<li>Fixed optimization of unusual initialization code causing
|
|
NullPointerExceptions.
|
|
<li>Fixed optimization of half-used long and double parameters.
|
|
<li>Fixed processing of complex generics signatures.
|
|
<li>Working around suspected java compiler bug with parameter annotations on
|
|
constructors of non-static inner classes.
|
|
<li>Fixed obfuscation of classes with inner classes whose names are preserved.
|
|
<li>Fixed access of protected methods in repackaged classes.
|
|
<li>Added options <code>-classobfuscationdictionary</code> and
|
|
<code>-packageobfuscationdictionary</code>.
|
|
<li>Adapting more types of resource file names based on obfuscation.
|
|
<li>Extended warnings about incorrect dependencies.
|
|
<li>Added start-up scripts and build scripts.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Mar 2008</div> Version 4.2</h3>
|
|
<ul>
|
|
<li>Refined data flow analysis in optimization step.
|
|
<li>Fixed handling of exceptions when inlining subroutines.
|
|
<li>Fixed inlining of incompatible code constructs between different java
|
|
versions.
|
|
<li>Fixed computation of local variable frame size.
|
|
<li>Fixed optimization of infinite loops.
|
|
<li>Fixed optimization of subroutine invocations.
|
|
<li>Fixed optimization of floating point remainder computations.
|
|
<li>Fixed removal of unused parameters in method descriptors containing arrays
|
|
of longs or doubles.
|
|
<li>Added undocumented java system properties
|
|
<code>maximum.inlined.code.length</code> (default is 8) and
|
|
<code>maximum.resulting.code.length</code> (defaults are 8000 for JSE and
|
|
2000 for JME), for expert users who read release notes.
|
|
<li>Fixed processing of generic types in Signature attributes in shrinking and
|
|
optimization steps.
|
|
<li>Fixed processing of inner class names in Signature attributes in obfuscation
|
|
step.
|
|
<li>Improved adapting resource file names following obfuscated class names.
|
|
<li>Fixed interpretation of package names in GUI.
|
|
<li>Fixed default settings for Xlets in GUI.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Dec 2007</div> Version 4.1</h3>
|
|
<ul>
|
|
<li>Fixed shrinking of default annotation element values.
|
|
<li>Fixed optimization of invocations of methods in same class that are
|
|
accessed through extensions.
|
|
<li>Fixed optimization of invocations of synchronized methods without other
|
|
side-effects.
|
|
<li>Fixed optimization of some non-returning subroutines.
|
|
<li>Fixed handling of local variable debug information when inlining methods.
|
|
<li>Avoiding StackOverflowErrors during optimization of complex methods.
|
|
<li>Fixed obfuscation of potentially ambiguous non-primitive constants in
|
|
interfaces.
|
|
<li>Fixed preverification of some code constructs involving String, Class, and
|
|
exception types.
|
|
<li>The Ant task now allows empty <code><injars></code> and
|
|
<code><libraryjars></code> elements.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Sep 2007</div> Version 4.0</h3>
|
|
<ul>
|
|
<li>Added preverifier for Java 6 and Java Micro Edition, with new options
|
|
<code>-microedition</code> and <code>-dontpreverify</code>.
|
|
<li>Added new option <code>-target</code> to modify java version of processed
|
|
class files.
|
|
<li>Made <code>-keep</code> options more orthogonal and flexible, with option
|
|
modifiers <code>allowshrinking</code>, <code>allowoptimization</code>, and
|
|
<code>allowobfuscation</code>.
|
|
<li>Added new wildcards for class member descriptors: "<code>***</code>",
|
|
matching any type, and "<code>...</code>", matching any number of
|
|
arguments.
|
|
<li>Added support for configuration by means of annotations.
|
|
<li>Improved shrinking of unused annotations.
|
|
<li>Added check on modification times of input and output, to avoid unnecessary
|
|
processing, with new option <code>-forceprocessing</code>.
|
|
<li>Added new options <code>-flattenpackagehierarchy</code> and
|
|
<code>-repackageclasses</code> (replacing <code>-defaultpackage</code>) to
|
|
control obfuscation of package names.
|
|
<li>Added new options <code>-adaptresourcefilenames</code> and
|
|
<code>-adaptresourcefilecontents</code>, with file filters, to update
|
|
resource files corresponding to obfuscated class names.
|
|
<li>Added detection of dynamically accessed fields and methods.
|
|
<li>Now treating <code>Exceptions</code> attributes as optional.
|
|
<li>Now respecting naming rule for nested class names
|
|
(<code>EnclosingClass$InnerClass</code>) in obfuscation step, if
|
|
<code>InnerClasses</code> attributes or <code>EnclosingMethod</code>
|
|
attributes are being kept.
|
|
<li>Added new inter-procedural optimizations: method inlining and propagation
|
|
of constant fields, constant arguments, and constant return values.
|
|
<li>Added optimized local variable allocation.
|
|
<li>Added more than 250 new peephole optimizations.
|
|
<li>Improved making classes and class members public or protected.
|
|
<li>Now printing notes on suspiciously unkept classes in parameters of
|
|
specified methods.
|
|
<li>Now printing notes for class names that don't seem to be fully qualified.
|
|
<li>Added support for uppercase filename extensions.
|
|
<li>Added tool tips to the GUI.
|
|
<li>Rewritten class file I/O code.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
Upgrade considerations:
|
|
<ul>
|
|
|
|
<li>Since ProGuard now treats the <code>Exceptions</code> attribute as
|
|
optional, you may have to specify <code>-keepattributes Exceptions</code>,
|
|
notably when processing code that is to be used as a library.
|
|
|
|
<li>ProGuard now preverifies code for Java Micro Edition, if you specify the
|
|
option <code>-microedition</code>. You then no longer need to process the
|
|
code with an external preverifier.
|
|
|
|
<li>You should preferably specify <code>-repackageclasses</code> instead of the
|
|
old option name <code>-defaultpackage</code>.
|
|
</ul>
|
|
|
|
<h3><div>Dec 2007</div> Version 3.11</h3>
|
|
<ul>
|
|
<li>Fixed optimization of invocations of methods in same class that are
|
|
accessed through extensions.
|
|
<li>Fixed optimization of invocations of synchronized methods without other
|
|
side-effects.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Aug 2007</div> Version 3.10</h3>
|
|
<ul>
|
|
<li>Now handling mixed-case input class names when
|
|
<code>-dontusemixedcaseclassnames</code> is specified.
|
|
<li>Fixed optimization of synchronization on classes, as compiled by Eclipse
|
|
and Jikes.
|
|
<li>Fixed optimization of switch statements with unreachable cases.
|
|
<li>Avoiding merging subsequent identically named files.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Jun 2007</div> Version 3.9</h3>
|
|
<ul>
|
|
<li>Fixed processing of .class constructs in Java 6.
|
|
<li>Fixed repeated processing of .class constructs.
|
|
<li>Fixed possible division by 0 in optimization step.
|
|
<li>Fixed handling of variable instructions with variable indices larger than
|
|
255.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Mar 2007</div> Version 3.8</h3>
|
|
<ul>
|
|
<li>Fixed optimization of parameters used as local variables.
|
|
<li>Fixed obfuscation with conflicting class member names.
|
|
<li>Fixed incremental obfuscation with incomplete mapping file for library jars.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Dec 2006</div> Version 3.7</h3>
|
|
<ul>
|
|
<li>Now accepting Java 6 class files.
|
|
<li>Fixed shrinking of partially used annotations.
|
|
<li>Improved incremental obfuscation, with new option
|
|
<code>-useuniqueclassmembernames</code>.
|
|
<li>Printing more information in case of conflicting configuration and input.
|
|
<li>Fixed optimization of repeated array length instruction.
|
|
<li>Fixed optimization of subsequent try/catch/finally blocks with return
|
|
statements.
|
|
<li>Fixed optimization of complex stack operations.
|
|
<li>Fixed optimization of simple infinite loops.
|
|
<li>Fixed optimization of expressions with constant doubles.
|
|
<li>Tuned optimization to improve size reduction after preverification.
|
|
<li>Fixed overflows of offsets in long code blocks.
|
|
<li>Now allowing class names containing dashes.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>May 2006</div> Version 3.6</h3>
|
|
<ul>
|
|
<li>No longer automatically keeping classes in parameters of specified methods
|
|
from obfuscation and optimization (introduced in version 3.4).
|
|
<li>Fixed inlining of interfaces that are used in .class constructs.
|
|
<li>Fixed removal of busy-waiting loops reading volatile fields.
|
|
<li>Fixed optimization of comparisons of known integers.
|
|
<li>Fixed optimization of known branches.
|
|
<li>Fixed optimization of method calls on arrays of interfaces.
|
|
<li>Fixed optimization of method calls without side-effects.
|
|
<li>Fixed optimization of nested try/catch/finally blocks with return
|
|
statements.
|
|
<li>Fixed initialization of library classes that only appear in descriptors.
|
|
<li>Fixed matching of primitive type wildcards in configuration.
|
|
<li>Fixed the boilerplate specification for enumerations in the GUI.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Jan 2006</div> Version 3.5</h3>
|
|
<ul>
|
|
<li>Fixed obfuscation of class members with complex visibility.
|
|
<li>Fixed optimization bugs causing stack verification errors.
|
|
<li>Fixed optimization bug causing overridden methods to be finalized.
|
|
<li>Fixed optimization bug causing abstract method errors for retro-fitted
|
|
library methods.
|
|
<li>Fixed optimization bug evaluating code with constant long values.
|
|
<li>Fixed bug in updating of optional local variable table attributes and local
|
|
variable type table attributes after optimization.
|
|
<li>Fixed interpretation of comma-separated class names without wildcards.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Oct 2005</div> Version 3.4</h3>
|
|
<ul>
|
|
<li>Extended optimizations: removing duplicate code within methods.
|
|
<li>Extended regular expressions for class names to comma-separated lists.
|
|
<li>Now automatically keeping classes in descriptors of kept class members.
|
|
<li>Added verbose statistics for optimizations.
|
|
<li>Added boilerplate Number optimizations in GUI.
|
|
<li>Fixed <code>Class.forName</code> detection.
|
|
<li>Fixed incremental obfuscation bug.
|
|
<li>Fixed optimization bug causing stack verification errors.
|
|
<li>Fixed optimization bugs related to removal of unused parameters.
|
|
<li>Fixed exception when optimizing code with many local variables.
|
|
<li>Fixed exception when saving configuration with initializers in GUI.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Jun 2005</div> Version 3.3</h3>
|
|
<ul>
|
|
<li>Extended optimizations: making methods private and static when possible,
|
|
making classes static when possible, removing unused parameters.
|
|
<li>Made file names relative to the configuration files in which they are
|
|
specified. Added <code>-basedirectory</code> option.
|
|
<li>Added <code>-whyareyoukeeping</code> option to get details on why given
|
|
classes and class members are being kept.
|
|
<li>Added warnings for misplaced class files.
|
|
<li>Improved printing of notes for <code>Class.forName</code> constructs.
|
|
<li>Implemented '<code>assumenosideeffects</code>' nested element in Ant task.
|
|
<li>Improved processing of annotations.
|
|
<li>Fixed reading and writing of parameter annotations.
|
|
<li>Fixed various optimization bugs.
|
|
<li>Fixed wildcards not matching '-' character.
|
|
<li>Fixed wildcard bug and checkbox bugs in GUI.
|
|
<li>Setting file chooser defaults in GUI.
|
|
<li>Leaving room for growBox in GUI on Mac OS X.
|
|
<li>Properly closing configuration files.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Dec 2004</div> Version 3.2</h3>
|
|
<ul>
|
|
<li>Fixed JDK5.0 processing bugs.
|
|
<li>Fixed optimization bugs.
|
|
<li>Fixed relative paths in Ant task.
|
|
<li>Improved speed of shrinking step.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Nov 2004</div> Version 3.1</h3>
|
|
<ul>
|
|
<li>Improved obfuscation and shrinking of private class members.
|
|
<li>Added inlining of interfaces with single implementations.
|
|
<li>Added option to specify obfuscation dictionary.
|
|
<li>Added option to read package visible library class members.
|
|
<li>Extended support for JDK5.0 attributes.
|
|
<li>Fixed various optimization bugs.
|
|
<li>Modified Ant task to accept paths instead of filesets.
|
|
<li>Fixed two Ant task bugs.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Aug 2004</div> Version 3.0</h3>
|
|
<ul>
|
|
<li>Added bytecode optimization step, between shrinking step and obfuscation
|
|
step.
|
|
<li>Generalized filtered recursive reading and writing of jars, wars, ears,
|
|
zips, and directories.
|
|
<li>Added support for grouping input and output jars, wars, ears, zips, and
|
|
directories.
|
|
<li>Added support for applying mapping files to library classes.
|
|
<li>Removed <code>-resourcejars</code> option. Resources should now be read
|
|
using regular <code>-injars</code> options, using filters if necessary.
|
|
<li>Rewrote Ant task. Input and output modification dates are not checked at
|
|
the moment. Minor changes in XML schema:
|
|
<ul>
|
|
<li>Filters now specified using attributes.
|
|
<li>'<code>outjars</code>' now nested element instead of attribute.
|
|
<li>'<code>type</code>' attribute of <code><method></code> element no
|
|
longer defaults to '<code>void</code>'.
|
|
<li><code><</code> and <code>></code> characters now have to be
|
|
encoded in embedded configurations.
|
|
<li><code><proguardconfiguration></code> task no longer accepts
|
|
attributes.
|
|
</ul>
|
|
<li>Updated J2ME WTK plugin, now customizable through configuration file.
|
|
<li>Updated GUI.
|
|
<li>Fixed various processing bugs.
|
|
<li>Fixed ReTrace parsing bugs.
|
|
<li>Improved jar compression.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Mar 2004</div> Version 2.1</h3>
|
|
<ul>
|
|
<li>Added support for JDK1.5 classes.
|
|
<li>Added additional wildcard for matching primitive types.
|
|
<li>Added possibility to switch off notes about duplicate class definitions.
|
|
<li>Fixed use of multiple filters on output jars.
|
|
<li>Fixed option to keep all attributes.
|
|
<li>Fixed various Ant task bugs.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Dec 2003</div> Version 2.0</h3>
|
|
<ul>
|
|
<li>Added a graphical user interface for ProGuard and ReTrace.
|
|
<li>Added <code>-applymapping</code> option for incremental obfuscation.
|
|
<li>Added support for filtering input and output files.
|
|
<li>Added support for the J++ <code>SourceDir</code> attribute.
|
|
<li>Improved detection of <code>.class</code> constructs.
|
|
<li>Improved handling of misplaced manifest files.
|
|
<li>Improved implementation of ReTrace.
|
|
<li>Worked around String UTF-8 encoding bug affecting foreign characters.
|
|
<li>Fixed exception when ignoring warnings.
|
|
<li>Fixed various Ant task bugs.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Aug 2003</div> Version 1.7</h3>
|
|
<ul>
|
|
<li>Fixed various Ant task bugs.
|
|
<li>Fixed ClassCastException due to explicitly used abstract classes with
|
|
implicitly used interfaces targeted at JRE1.2 (the default in JDK1.4).
|
|
<li>Fixed <code>-defaultpackage</code> bug for protected classes and class
|
|
members.
|
|
<li>Fixed ReTrace bug when retracing without line number tables.
|
|
<li>Worked around zip package problems with duplicate out entries and rogue
|
|
manifest files.
|
|
<li>Added work-around for handling malformed legacy interface class files.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>May 2003</div> Version 1.6</h3>
|
|
<ul>
|
|
<li>Added support for Ant.
|
|
<li>Added support for the J2ME Wireless Toolkit.
|
|
<li>Added support for reading and writing directory hierarchies.
|
|
<li>Added option for specifying resource jars and directories.
|
|
<li>Added support for wildcards in class member specifications.
|
|
<li>Improved handling of the <code>-defaultpackage</code> option.
|
|
<li>Improved stack trace parsing in ReTrace tool.
|
|
<li>Fixed processing of libraries containing public as well as non-public
|
|
extensions of non-public classes.
|
|
<li>Fixed examples for processing libraries, midlets, and serializable code.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Jan 2003</div> Version 1.5</h3>
|
|
<ul>
|
|
<li>Fixed processing of retrofitted library interfaces.
|
|
<li>Fixed processing of <code>.class</code> constructs in internal classes
|
|
targeted at JRE1.2 (the default in JDK1.4).
|
|
<li>Fixed <code>-dump</code> option when <code>-outjar</code> option is not
|
|
present.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Nov 2002</div> Version 1.4</h3>
|
|
<ul>
|
|
<li>Now copying resource files over from the input jars to the output jar.
|
|
<li>Added option to obfuscate using lower-case class names only.
|
|
<li>Added better option for obfuscating native methods.
|
|
<li>Added option not to ignore non-public library classes.
|
|
<li>Added automatic <code>.class</code> detection for classes compiled with
|
|
Jikes.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Sep 2002</div> Version 1.3</h3>
|
|
<ul>
|
|
<li>Added support for wildcards in class names.
|
|
<li>Added tool to de-obfuscate stack traces.
|
|
<li>Added options to print processing information to files.
|
|
<li>Added option to rename source file attributes.
|
|
<li>Fixed processing of implicitly used interfaces targeted at JRE1.2 (the
|
|
default in JDK1.4)
|
|
<li>Fixed processing of configurations with negated access modifiers.
|
|
<li>Fixed duplicate class entry bug.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Aug 2002</div> Version 1.2</h3>
|
|
<ul>
|
|
<li>Improved speed.
|
|
<li>Fixed processing of classes targeted at JRE1.2 (the default in JDK1.4)
|
|
with references to their own subclasses.
|
|
<li>Fixed processing of static initializers in J2ME MIDP applications.
|
|
<li>Fixed processing of retrofitted interfaces (again).
|
|
<li>Added more flexible handling of white space in configuration.
|
|
<li>Updated documentation.
|
|
</ul>
|
|
|
|
<h3><div>Jul 2002</div> Version 1.1</h3>
|
|
<ul>
|
|
<li>Added automatic detection of <code>Class.forName("MyClass")</code>,
|
|
<code>MyClass.class</code>, and
|
|
<code>(MyClass)Class.forName(variable).newInstance()</code> constructs.
|
|
This greatly simplifies configuration.
|
|
<li>Added options to keep class names and class member names without affecting
|
|
any shrinking. They are mostly useful for native methods and serializable
|
|
classes.
|
|
<li>Fixed processing of retrofitted interfaces.
|
|
<li>Added handling of missing/invalid manifest file in input jar.
|
|
<li>Updated documentation and examples.
|
|
</ul>
|
|
|
|
<h3><div>Jun 2002</div> Version 1.0</h3>
|
|
<ul>
|
|
<li>First public release, based on class parsing code from Mark Welsh's
|
|
<b>RetroGuard</b>.
|
|
</ul>
|
|
|
|
<hr />
|
|
<noscript><div><a target="_top" href="index.html" class="button">Show menu</a></div></noscript>
|
|
<address>
|
|
Copyright © 2002-2011
|
|
<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a>.
|
|
</address>
|
|
|
|
</body>
|
|
</html>
|