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 &copy; 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