ProGuard is a shrinker, optimizer, obfuscator, and preverifier for Java bytecode. It detects and removes unused classes, fields, methods, and attributes. It optimizes methods and removes dead code. It renames the remaining classes, fields, and methods using short, meaningless names. Finally, it preverifies the processed code for Java 6 or higher, or for Java Micro Edition. The resulting code is more compact, more efficient, and more difficult to reverse-engineer. ProGuard is mostly popular for embedded development and for commercial development. For example, it is integrated in Oracle's Wireless Toolkit, in Intel's TXE SDK, and in Google's Android SDK.
ProGuard version 4.9 is finally out:
- The most prominent new feature is a custom ProGuard task for the Gradle build system. It provides a clean integration, with full support for ProGuard's options in Gradle's configuration language. The task should become useful for the upcoming move to Gradle in the Android SDK.
- The optimization step contains internal improvements for optimizing static initializers and for optimizing away unnecessary string operations. These string operations were often left over after letting ProGuard remove logging calls. Processed code is even cleaner now.
- As always, the release also contains a number of bug fixes collected since the previous release. The documentation and examples have been extended.
The release is compatible with previous releases, so upgrading your build process can be as simple as replacing the ProGuard jar.
We are now also updating the binary artifacts on Maven Central as part of the release process. These artifacts are mostly useful when integrating ProGuard in Maven-based environments.
Eric Lafortune -- Saikoa
PS: I'll be talking about ProGuard at Droidcon in Berlin, 7-10 April 2013. Come by for a chat!