ProGuard Changelog

What's new in ProGuard 4.11

Jan 7, 2014
  • The optimization step can now simplify enum types, replacing the synthetic classes that the compiler generates by plain integer constants.
  • This version also fixes a number of bugs, notably in class merging and method inlining.

New in ProGuard 4.10 (Aug 1, 2013)

  • This version mainly updates the Gradle task, for easier integration in the Android SDK. ProGuard's notes and warnings now point to the relevant paragraphs on the Troubleshooting page in the documentation.
  • The Troubleshooting page has additional specific information on Android issues.

New in ProGuard 4.8 (May 29, 2012)

  • This version mostly fixes a series of minor problems in configuration parsing, optimization, and obfuscation.
  • It also adds a few string optimizations to the optimization step, and small enhancements for configuration with the Ant task.
  • This version is entirely compatible with previous versions, so upgrading is simply a matter of switching to the new jars.

New in ProGuard 4.7 (Dec 22, 2011)

  • This version adds support for processing Java 7 code.
  • It shrinks class files slightly better.
  • It fixes a number of issues in the optimization and obfuscation steps and in the GUI.
  • For Android developers, it works around a problem with spaces in path names in the Android SDK.

New in ProGuard 4.6 (Feb 16, 2011)

  • This version mainly fixes bugs in the optimization step.
  • The documentation and examples have been updated and extended.
  • Notably, there are new examples that illustrate how to process Android apps and Scala code.

New in ProGuard 4.4 (Jul 22, 2009)

  • Added new peephole optimizations.
  • Added option -optimizations for fine-grained configuration of optimizations.
  • Added option -adaptclassstrings for adapting string constants that correspond to obfuscated classes.
  • Added option -keeppackagenames for keeping specified package names from being obfuscated.
  • Added option -keepdirectories for keeping specified directory entries in output jars.
  • Extended options -dontnote and -dontwarn for fine-grained configuration of notes and warnings.
  • Added option -regex in ReTrace, for specifying alternative regular expressions to parse stack traces.
  • Extended renaming of resource files based on obfuscation.
  • Avoiding bug in IBM's JVM for JSE, in optimization step.
  • Avoiding ArrayIndexOutOfBoundsException in optimization step.
  • Fixed configuration with annotations that are not preserved themselves.
  • Fixed preverification of invocations of super constructors with arguments containing ternary operators.
  • Fixed processing of unreachable exception handlers.
  • Fixed repeated method inlining.
  • Fixed inlining of finally blocks surrounded by large try blocks, compiled with JDK 1.4 or earlier.
  • Fixed optimization of complex finally blocks, compiled with JDK 1.4 or earlier.
  • Fixed obfuscation of anonymous class names, if EnclosingMethod attributes are being kept.
  • Fixed obfuscation of inner class names in generic types.
  • Fixed decoding of UTF-8 strings containing special characters.
  • Fixed copying of debug information and annotations when merging classes.
  • Fixed writing out of unknown attributes.
  • Fixed updating manifest files with split lines.
  • Updated documentation and examples.