Menu Close Back

Announcing a New Open Source Project & Full Kotlin Support in ProGuard

Announcing a New Open Source Project & Full Kotlin Support in ProGuard

We are proud to say that ProGuard is the most popular optimizer for Java bytecode out there, shrinking Java applications by up to 90% and making them run up to 20% faster. ProGuard also provides basic protection against reverse engineering (while DexGuard, which is built on the ProGuard framework, offers complete, layered mobile app security).

More than one million developers worldwide use ProGuard to optimize, shrink, and add some obfuscation to their Android applications, desktop or embedded apps. 

Today we are launching a new project, ProGuardCORE, and we’re also announcing full support for Kotlin applications. This is already offered in DexGuard, and has now been extended to ProGuard—making it easier than ever for Android developers to take full advantage of Kotlin’s functionality. 

Here’s what you need to know about these evolutions and enhancements.

ProGuard’s Full Support for Kotlin Applications

As you likely know, Kotlin is the fastest-growing coding language in terms of adoption and is Google’s preferred language for Android development. It is an innovative language that embraces modern paradigms, such as functional programming with lambdas and asynchronous programming with coroutines.

Kotlin applications contain a lot of information from the original source code in the form of metadata. This metadata is the foundation of the language’s most advanced functionality, but it also increases the size of applications and exposes sensitive information. 

ProGuard’s latest release (7.0) introduces new functionality to fully support Kotlin applications. This allows Kotlin developers to shrink and optimize their applications while taking full advantage of the language’s most innovative features.

Other optimizers with obfuscation capabilities on the market, like Google’s R8, either leave the metadata untouched—risking data leakage—or remove the metadata entirely, which prevents app developers from using Kotlin’s advanced functionality to its full extent.

ProGuard 7.0 allows developers to have the best of both worlds. The latest version of ProGuard processes the Kotlin metadata, obfuscates the metadata in use and removes any unnecessary metadata. The goal here is to minimize overhead and eliminate unnecessary exposure of information. Developers can now take full advantage of Kotlin’s functionality while shrinking and optimizing their apps with ProGuard, as well as gaining some basic security protection.

Of course, as with all ProGuard updates, Kotlin support is fully built into our more robust Android mobile app security solution, DexGuard.

ProGuard’s latest release is available on Github, and you can find the online documentation here.

Introducing ProGuardCORE

Guardsquare’s newest open source project, ProGuardCORE, gives developers the opportunity to integrate ProGuard’s powerful code parsing and code analysis capabilities into their own Java bytecode projects. 

ProGuardCORE is an open source library that provides all of the functionality needed to read, write, modify and analyze Java class files. Some of its most powerful features are advanced instruction pattern matching and abstract evaluation, which enable in-depth analysis of the control flow and data flow of bytecode. All of ProGuardCORE’s functionality has been built, tested and perfected over the years as the foundation of ProGuard.

ProGuardCORE is available as a standalone, open source project and includes the documentation and samples needed to ensure effortless integration into any project.

To showcase the functionality of ProGuardCORE, take a look at these two projects we have put together:

  • ProGuard Assembler and Disassembler uses ProGuardCORE’s code parsing functionality to convert Java bytecode into a custom assembly format and vice versa. It supports all modern features introduced in recent versions of Java, such as closures and preverification.

       ProGuard Assembler and Disassembler is available here.

  • Kotlin Metadata Printer makes use of ProGuardCORE to display the metadata included in Kotlin applications, which enables e.g. reflection. This is valuable because it offers developers a clear view of the sensitive data they may be exposing to reverse engineers.

       Kotlin Metadata Printer is available here and can be used online at tools.guardsquare.com/kotlin-metadata-printer/

Thank You

Thank you for your years of dedication to using ProGuard. As a company, we're committed to our stewardship of the ProGuard and ProGuardCORE open source projects, and we hope these updates will help you build even more cutting-edge, creative apps.