1b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<html> 3b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<head> 4b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> 5b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<meta http-equiv="content-style-type" content="text/css"> 6b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<meta name="author" content="Eric Lafortune"> 7b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<meta name="description" content="ProGuard: java shrinker, optimizer, obfuscator, and preverifier"> 8b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<meta name="keywords" content="java obfuscator, optimizer, shrinker, preverfier"> 9b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<link rel="stylesheet" type="text/css" href="style.css"> 10b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<title>ProGuard Main</title> 11b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang<script type="text/javascript" language="JavaScript"> 12b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang<!-- 13b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wangif (window.self==window.top) 14b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang window.top.location.replace("index.html#"+window.location.pathname+window.location.hash); 15b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wangelse { 16b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang if (window.top.location.hash!="") 17b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang window.top.location.hash=""; 18b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang} 19b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang//--> 20b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang</script> 21b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato</head> 22b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<body> 23b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 24b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<h2>Main</h2> 25b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 26b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<p class="intro"> 27b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<b>ProGuard</b> is a free Java class file shrinker, optimizer, obfuscator, and 28b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratopreverifier. It detects and removes unused classes, fields, methods, and 29b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoattributes. It optimizes bytecode and removes unused instructions. It renames 30b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratothe remaining classes, fields, and methods using short meaningless names. 31b9cc48a43ed984587c939d02fba5316bf5c0df6eYing WangFinally, it preverifies the processed code for Java 6 or higher, or for Java 32b9cc48a43ed984587c939d02fba5316bf5c0df6eYing WangMicro Edition. 33b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato</p> 34b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe OnoratoSome uses of <b>ProGuard</b> are: 35b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<ul> 36b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 37b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<li>Creating more compact code, for smaller code archives, faster transfer 38b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang across networks, faster loading, and smaller memory footprints.</li> 39b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 40b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang<li>Making programs and libraries harder to reverse-engineer.</li> 41b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 42b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang<li>Listing dead code, so it can be removed from the source code.</li> 43b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 44b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang<li>Retargeting and preverifying existing class files for Java 6 or higher, to 45b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang take full advantage of their faster class loading.</li> 46b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 47b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato</ul> 48b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<p> 49b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<b>ProGuard</b>'s main advantage compared to other Java obfuscators is 50b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoprobably its compact template-based configuration. A few intuitive command 51b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wangline options or a simple configuration file are usually sufficient. 52b9cc48a43ed984587c939d02fba5316bf5c0df6eYing WangThe user manual explains all available options and shows examples of this 53b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratopowerful configuration style. 54b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<p> 55b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<b>ProGuard</b> is fast. It only takes seconds to process programs and 56b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratolibraries of several megabytes. The results section presents actual figures 57b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratofor a number of applications. 58b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<p> 59b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<b>ProGuard</b> is a command-line tool with an optional graphical user 60b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wanginterface. It also comes with plugins for Ant, for Gradle, and for the JME 61b9cc48a43ed984587c939d02fba5316bf5c0df6eYing WangWireless Toolkit. 62b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<p> 63b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<p class="intro"> 64b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang<a href="http://www.saikoa.com/dexguard" target="_top"> 65b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang<img align="left" src="android_shades.png" width="64" height="64" /></a> 66b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang<b>ProGuard</b> now has a sibling optimizer and obfuscator for Android: 67b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang<a href="http://www.saikoa.com/dexguard" target="_top"><b>DexGuard</b></a>. It 68b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wangfocuses on code protection, with additional features like string encryption 69b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wangand class encryption. It directly targets Dalvik bytecode and streamlines the 70b9cc48a43ed984587c939d02fba5316bf5c0df6eYing WangAndroid build process. 71b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato</p> 72b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe OnoratoThe following sections provide more detailed information: 73b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<ul> 74b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang<li><a href="main.html">Main</a>: this overview page.</li> 75b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<li><a href="results.html">Results</a>: some results obtained with 76b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang <b>ProGuard</b>, including timings and memory usage.</li> 77b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang<li><a href="FAQ.html">FAQ</a>: answers to some Frequently Asked Questions.</li> 78b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<li><a href="manual/index.html">Manual</a>: the complete <b>ProGuard</b> user 79b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang manual, with examples and troubleshooting tips.</li> 80b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<li><a href="quality.html">Quality</a>: a discussion of the (excellent) quality 81b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang of <b>ProGuard</b>'s code.</li> 82b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang<li><a href="screenshots.html">Screenshots</a>: some impressions of what <b>ProGuard</b> looks like.</li> 83b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<li><a href="testimonials.html">Testimonials</a>: what users think of 84b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang <b>ProGuard</b>.</li> 85b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<li><a href="license.html">License</a>: <b>ProGuard</b> is free, under a GPL 86b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang license.</li> 87b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<li><a href="downloads.html">Downloads</a>: download the <b>ProGuard</b> 88b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang package yourself.</li> 89b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<li><a href="feedback.html">Feedback</a>: tell me about your experiences, or 90b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang learn from others on our forums.</li> 91b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<li><a href="acknowledgements.html">Acknowledgements</a>: people who have been 92b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang helpful.</li> 93b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<li><a href="alternatives.html">Alternatives</a>: other Java obfuscators, 94b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang optimizers, and shrinkers.</li> 95b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato</ul> 96b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 97b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang<hr /> 98b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang<noscript><div><a target="_top" href="index.html" class="button">Show menu</a></div></noscript> 99b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<address> 100b9cc48a43ed984587c939d02fba5316bf5c0df6eYing WangCopyright © 2002-2013 101b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a>. 102b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato</address> 103b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato</body> 104b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato</html> 105