You’ve probably heard some of the startlingly high statistics about the number of mobile applications that are illegally downloaded and installed on users’ devices. For the application developer, the loss in revenue and other ramifications of software piracy are staggering; most developers try to take some steps to protect their intellectual property. Android developers have a powerful tool at their fingertips to ensure this type of protection — ProGuard.
Android applications are generally developed with Java, a language well-known for fairly easy reverse-engineering. Part of what makes Java so susceptible is that the language supports reflection, or the ability to look up code objects at runtime by name. These labels are kept when the application is compiled. When someone knows what your application does (context) and can systematically inspect the elements of your code in a human-readable fashion, it takes only a short amount of time to unwind your hard work and take advantage of it. This is just one of the reasons Java applications are fairly easily reverse engineered.
Over time, various tools have been developed to make the process of reverse engineering more difficult. Many of these tools use code obfuscation technology of some kind — a process where human-readable code is converted into context-less gobbledygook. In this way, the code becomes difficult to interpret and understand. ProGuard is one such tool, and it’s now built into the Android plug-in for Eclipse. ProGuard obfuscates, shrinks, and optimizes your code. The end result is a smaller, more secure application package file.