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. Advantages of ProGuard compared to other Java shrinkers and obfuscators are compact template-based configuration, memory efficiency, and speed. It is mostly popular for embedded development and for commercial development, and is integrated in Oracle's Wireless Toolkit, in Intel's TXE SDK, and in Google's Android SDK.

The most prominent new feature of this release is a custom ProGuard task for the Gradle build system. It provides clean integration, with full support for ProGuard's options in Gradle's configuration language. The optimization step contains internal improvements for optimizing static initializers and optimizing away unnecessary string operations. This release also contains various bugfixes collected since the previous release. The documentation and examples have been extended. This version is compatible with previous versions, so upgrading is as simple as switching to the new jars.


ProGuard 4.9-0322_proguard_4.9.png