<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<meta http-equiv="content-style-type" content="text/css">
<link rel="stylesheet" type="text/css" href="style.css">
<title>Ant Task</title>
</head>
<body>

<script type="text/javascript" language="JavaScript">
<!--
if (window.self==window.top)
  document.write('<a class="largebutton" target="_top" href="../index.html#manual/ant.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
//-->
</script>
<noscript>
<a class="largebutton" target="_top"  href="../index.html#manual/ant.html">ProGuard index</a>
<a class="largebutton" target="_top"  href="http://www.saikoa.com/dexguard">DexGuard</a>
<a class="largebutton" target="_top"  href="http://www.saikoa.com/">Saikoa</a>
<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
</noscript>

<h2>Ant Task</h2>

<b>ProGuard</b> can be run as a task in the Java-based build tool Ant (version
1.8 or higher).
<p>

Before you can use the <code>proguard</code> task, you have to tell Ant about
this new task. The easiest way is to add the following line to your
<code>build.xml</code> file:
<p>

<pre>
&lt;taskdef resource="proguard/ant/task.properties"
         classpath="/usr/local/java/proguard/lib/proguard.jar" /&gt;
</pre>
<p>

Please make sure the class path is set correctly for your system.
<p>

There are three ways to configure the ProGuard task:
<ol>
<li>using an external configuration file,</li>
<li>using embedded ProGuard configuration options, or</li>
<li>using the equivalent XML configuration tags.</li>
</ol>
These three ways can be combined, depending on practical circumstances and
personal preference.
<p>

<h3>1. An external ProGuard configuration file</h3>

The simplest way to use the ProGuard task in an Ant build file is to keep your
ProGuard configuration file, and include it from Ant. You can include your
ProGuard configuration file by setting
the <a href="#configuration_attribute"><code>configuration</code></a>
attribute of your
<code>proguard</code> task. Your ant build file will then look like this:
<p>

<pre>
&lt;taskdef resource="proguard/ant/task.properties"
         classpath="/usr/local/java/proguard/lib/proguard.jar" /&gt;
&lt;proguard configuration="myconfigfile.pro"/&gt;
</pre>
<p>

This is a convenient option if you prefer ProGuard's configuration style over
XML, if you want to keep your build file small, or if you have to share your
configuration with developers who don't use Ant.
<p>

<h3>2. Embedded ProGuard configuration options</h3>

Instead of keeping an external ProGuard configuration file, you can also copy
the contents of the file into the nested text of the <code>proguard</code> task
(the PCDATA area). Your Ant build file will then look like this:
<p>

<pre>
&lt;taskdef resource="proguard/ant/task.properties"
         classpath="/usr/local/java/proguard/lib/proguard.jar" /&gt;
&lt;proguard&gt;
  -libraryjars ${java.home}/lib/rt.jar
  -injars      in.jar
  -outjars     out.jar

  -keepclasseswithmembers public class * {
      public static void main(java.lang.String[]);
  }
&lt;/proguard&gt;
</pre>
<p>

Some minor syntactical changes are required in order to conform with the XML
standard.
<p>

Firstly, the <code>#</code> character cannot be used for comments in an XML
file. Comments must be enclosed by an opening <code>&lt;!--</code> and a
closing <code>--&gt;</code>. All occurrences of the <code>#</code> character
can be removed.
<p>

Secondly, the use of <code>&lt;</code> and <code>&gt;</code> characters would
upset the structure of the XML build file. Environment variables can be
specified with the usual Ant style <code>${...}</code>, instead of the ProGuard
style <code>&lt;...&gt;</code>.  Other occurrences of <code>&lt;</code> and
<code>&gt;</code> have to be encoded as <code>&amp;lt;</code> and
<code>&amp;gt;</code> respectively.
<p>

<h3>3. XML configuration tags</h3>

If you really prefer a full-blown XML configuration, you can replace the
ProGuard configuration options by XML configuration tags. The resulting
configuration will be equivalent, but much more verbose and difficult to read,
as XML goes. The remainder of this page presents the supported tags. For a
more extensive discussion of their meaning, please consult the traditional <a
href="usage.html">Usage</a> section. You can find some sample configuration
files in the <code>examples/ant</code> directory of the ProGuard distribution.
<p>

<h2><a name="proguard">Task Attributes and Nested Elements</a></h2>

The <code><b>&lt;proguard&gt;</b></code> task and the
<code><b>&lt;proguardconfiguration&gt;</b></code> task can have the following
attributes (only for <code>&lt;proguard&gt;</code>) and nested
elements:

<dl>

<dt><a name="configuration_attribute"><code><b>configuration</b></code></a>
    = "<i>filename</i>"</dt>
<dd>Read and merge options from the given ProGuard-style configuration
    file. Note: for reading multiple configuration files or XML-style
    configurations, use the <a
    href="#configuration_element"><code>configuration</code></a>
    <i>element</i>.</dd>

<dt><a href="usage.html#skipnonpubliclibraryclasses"><code><b>skipnonpubliclibraryclasses</b></code></a>
    = "<i>boolean</i>"
    (default = false)</dt>
<dd>Ignore non-public library classes.</dd>

<dt><a href="usage.html#dontskipnonpubliclibraryclassmembers"><code><b>skipnonpubliclibraryclassmembers</b></code></a>
    = "<i>boolean</i>"
    (default = true)</dt>
<dd>Ignore package visible library class members.</dd>

<dt><a href="usage.html#target"><code><b>target</b></code></a>
    = "<i>version</i>"
    (default = none)</dt>
<dd>Set the given version number in the processed classes.</dd>

<dt><a href="usage.html#forceprocessing"><code><b>forceprocessing</b></code></a>
    = "<i>boolean</i>"
    (default = false)</dt>
<dd>Process the input, even if the output seems up to date.</dd>

<dt><a href="usage.html#printseeds"><code><b>printseeds</b></code></a>
    = "<i>boolean or filename</i>"
    (default = false)</dt>
<dd>List classes and class members matched by the various <code>keep</code>
    commands, to the standard output or to the given file.</dd>

<dt><a href="usage.html#dontshrink"><code><b>shrink</b></code></a>
    = "<i>boolean</i>"
    (default = true)</dt>
<dd>Shrink the input class files.</dd>

<dt><a href="usage.html#printusage"><code><b>printusage</b></code></a>
    = "<i>boolean or filename</i>"
    (default = false)</dt>
<dd>List dead code of the input class files, to the standard output or to the
    given file.</dd>

<dt><a href="usage.html#dontoptimize"><code><b>optimize</b></code></a>
    = "<i>boolean</i>"
    (default = true)</dt>
<dd>Optimize the input class files.</dd>

<dt><a href="usage.html#optimizationpasses"><code><b>optimizationpasses</b></code></a>
    = "<i>n</i>"
    (default = 1)</dt>
<dd>The number of optimization passes to be performed.</dd>

<dt><a href="usage.html#allowaccessmodification"><code><b>allowaccessmodification</b></code></a>
    = "<i>boolean</i>"
    (default = false)</dt>
<dd>Allow the access modifiers of classes and class members to be modified,
    while optimizing.</dd>

<dt><a href="usage.html#mergeinterfacesaggressively"><code><b>mergeinterfacesaggressively</b></code></a>
    = "<i>boolean</i>"
    (default = false)</dt>
<dd>Allow any interfaces to be merged, while optimizing.</dd>

<dt><a href="usage.html#dontobfuscate"><code><b>obfuscate</b></code></a>
    = "<i>boolean</i>"
   (default = true)</dt>
<dd>Obfuscate the input class files.</dd>

<dt><a href="usage.html#printmapping"><code><b>printmapping</b></code></a>
    = "<i>boolean or filename</i>"
    (default = false)</dt>
<dd>Print the mapping from old names to new names for classes and class members
    that have been renamed, to the standard output or to the given file.</dd>

<dt><a href="usage.html#applymapping"><code><b>applymapping</b></code></a>
    = "<i>filename</i>"
    (default = none)</dt>
<dd>Reuse the given mapping, for incremental obfuscation.</dd>

<dt><a href="usage.html#obfuscationdictionary"><code><b>obfuscationdictionary</b></code></a>
    = "<i>filename</i>"
    (default = none)</dt>
<dd>Use the words in the given text file as obfuscated field names and method
    names.</dd>

<dt><a href="usage.html#classobfuscationdictionary"><code><b>classobfuscationdictionary</b></code></a>
    = "<i>filename</i>"
    (default = none)</dt>
<dd>Use the words in the given text file as obfuscated class names.</dd>

<dt><a href="usage.html#packageobfuscationdictionary"><code><b>packageobfuscationdictionary</b></code></a>
    = "<i>filename</i>"
    (default = none)</dt>
<dd>Use the words in the given text file as obfuscated package names.</dd>

<dt><a href="usage.html#overloadaggressively"><code><b>overloadaggressively</b></code></a>
    = "<i>boolean</i>"
    (default = false)</dt>
<dd>Apply aggressive overloading while obfuscating.</dd>

<dt><a href="usage.html#useuniqueclassmembernames"><code><b>useuniqueclassmembernames</b></code></a>
    = "<i>boolean</i>"
    (default = false)</dt>
<dd>Ensure uniform obfuscated class member names for subsequent incremental
    obfuscation.</dd>

<dt><a href="usage.html#dontusemixedcaseclassnames"><code><b>usemixedcaseclassnames</b></code></a>
    = "<i>boolean</i>"
    (default = true)</dt>
<dd>Generate mixed-case class names while obfuscating.</dd>

<dt><a href="usage.html#flattenpackagehierarchy"><code><b>flattenpackagehierarchy</b></code></a>
    = "<i>package_name</i>"
    (default = none)</dt>
<dd>Repackage all packages that are renamed into the single given parent
    package.</dd>

<dt><a href="usage.html#repackageclasses"><code><b>repackageclasses</b></code></a>
    = "<i>package_name</i>"
    (default = none)</dt>
<dd>Repackage all class files that are renamed into the single given
    package.</dd>

<dt><a href="usage.html#keepparameternames"><code><b>keepparameternames</b></code></a>
    = "<i>boolean</i>"
   (default = false)</dt>
<dd>Keep the parameter names and types of methods that are kept.</dd>

<dt><a href="usage.html#renamesourcefileattribute"><code><b>renamesourcefileattribute</b></code></a>
    = "<i>string</i>"
    (default = none)</dt>
<dd>Put the given constant string in the <code>SourceFile</code>
    attributes.</dd>

<dt><a href="usage.html#dontpreverify"><code><b>preverify</b></code></a>
    = "<i>boolean</i>"
    (default = true)</dt>
<dd>Preverify the processed class files if they are targeted at Java Micro
    Edition or at Java 6 or higher.</dd>

<dt><a href="usage.html#microedition"><code><b>microedition</b></code></a>
    = "<i>boolean</i>"
    (default = false)</dt>
<dd>Target the processed class files at Java Micro Edition.</dd>

<dt><a href="usage.html#verbose"><code><b>verbose</b></code></a>
    = "<i>boolean</i>"
    (default = false)</dt>
<dd>Write out some more information during processing.</dd>

<dt><a href="usage.html#dontnote"><code><b>note</b></code></a>
    = "<i>boolean</i>"
   (default = true)</dt>
<dd>Print notes about potential mistakes or omissions in the configuration.
    Use the nested element <a href="#dontnote">dontnote</a> for more
    fine-grained control.</dd>

<dt><a href="usage.html#dontwarn"><code><b>warn</b></code></a>
    = "<i>boolean</i>"
    (default = true)</dt>
<dd>Print warnings about unresolved references. Use the nested
    element <a href="#dontwarn">dontwarn</a> for more fine-grained
    control. <i>Only use this option if you know what you're doing!</i></dd>

<dt><a href="usage.html#ignorewarnings"><code><b>ignorewarnings</b></code></a>
    = "<i>boolean</i>"
    (default = false)</dt>
<dd>Print warnings about unresolved references, but continue processing
    anyhow. <i>Only use this option if you know what you're doing!</i></dd>

<dt><a href="usage.html#printconfiguration"><code><b>printconfiguration</b></code></a>
    = "<i>boolean or filename</i>"
    (default = false)</dt>
<dd>Write out the entire configuration in traditional ProGuard style, to the
    standard output or to the given file. Useful to replace unreadable
    XML configurations.</dd>

<dt><a href="usage.html#dump"><code><b>dump</b></code></a>
    = "<i>boolean or filename</i>"
    (default = false)</dt>
<dd>Write out the internal structure of the processed class files, to the
    standard output or to the given file.</dd>

<dt><a href="usage.html#injars"><code><b>&lt;injar</b></code></a>
    <a href="#classpath"><i>class_path</i></a>
    <code><b>/&gt;</b></code></dt>
<dd>Specifies the program jars (or aars, wars, ears, zips, apks, or
    directories).</dd>

<dt><a href="usage.html#outjars"><code><b>&lt;outjar</b></code></a>
    <a href="#classpath"><i>class_path</i></a>
    <code><b>/&gt;</b></code></dt>
<dd>Specifies the names of the output jars (or aars, wars, ears, zips, apks, or
    directories).</dd>

<dt><a href="usage.html#libraryjars"><code><b>&lt;libraryjar</b></code></a>
    <a href="#classpath"><i>class_path</i></a>
    <code><b>/&gt;</b></code></dt>
<dd>Specifies the library jars (or aars, wars, ears, zips, apks, or
    directories).</dd>

<dt><a href="usage.html#keepdirectories"><code><b>&lt;keepdirectory name = </b></code></a>"<i>directory_name</i>"
    <code><b>/&gt;</b></code><br/>
    <a href="usage.html#keepdirectories"><code><b>&lt;keepdirectories filter = </b></code></a>"<a href="usage.html#filefilters"><i>directory_filter</i></a>"
    <code><b>/&gt;</b></code></dt>
<dd>Keep the specified directories in the output jars (or aars, wars, ears,
    zips, apks, or directories).</dd>

<dt><a href="usage.html#keep"><code><b>&lt;keep</b></code></a>
    <a href="#keepmodifier"><i>modifiers</i></a>
    <a href="#classspecification"><i>class_specification</i></a>
    <code><b>&gt;</b></code>
    <a href="#classmemberspecification"><i>class_member_specifications</i></a>
    <code><b>&lt;/keep&gt;</b></code></dt>
<dd>Preserve the specified classes <i>and</i> class members.</dd>

<dt><a href="usage.html#keepclassmembers"><code><b>&lt;keepclassmembers</b></code></a>
    <a href="#keepmodifier"><i>modifiers</i></a>
    <a href="#classspecification"><i>class_specification</i></a>
    <code><b>&gt;</b></code>
    <a href="#classmemberspecification"><i>class_member_specifications</i></a>
    <code><b>&lt;/keepclassmembers&gt;</b></code></dt>
<dd>Preserve the specified class members, if their classes are preserved as
    well.</dd>

<dt><a href="usage.html#keepclasseswithmembers"><code><b>&lt;keepclasseswithmembers</b></code></a>
    <a href="#keepmodifier"><i>modifiers</i></a>
    <a href="#classspecification"><i>class_specification</i></a>
    <code><b>&gt;</b></code>
    <a href="#classmemberspecification"><i>class_member_specifications</i></a>
    <code><b>&lt;/keepclasseswithmembers&gt;</b></code></dt>
<dd>Preserve the specified classes <i>and</i> class members, if all of the
    specified class members are present.</dd>

<dt><a href="usage.html#keepnames"><code><b>&lt;keepnames</b></code></a>
    <a href="#classspecification"><i>class_specification</i></a>
    <code><b>&gt;</b></code>
    <a href="#classmemberspecification"><i>class_member_specifications</i></a>
    <code><b>&lt;/keepnames&gt;</b></code></dt>
<dd>Preserve the names of the specified classes <i>and</i> class members (if
    they aren't removed in the shrinking step).</dd>

<dt><a href="usage.html#keepclassmembernames"><code><b>&lt;keepclassmembernames</b></code></a>
    <a href="#classspecification"><i>class_specification</i></a>
    <code><b>&gt;</b></code>
    <a href="#classmemberspecification"><i>class_member_specifications</i></a>
    <code><b>&lt;/keepclassmembernames&gt;</b></code></dt>
<dd>Preserve the names of the specified class members (if they aren't removed
    in the shrinking step).</dd>

<dt><a href="usage.html#keepclasseswithmembernames"><code><b>&lt;keepclasseswithmembernames</b></code></a>
    <a href="#classspecification"><i>class_specification</i></a>
    <code><b>&gt;</b></code>
    <a href="#classmemberspecification"><i>class_member_specifications</i></a>
    <code><b>&lt;/keepclasseswithmembernames&gt;</b></code></dt>
<dd>Preserve the names of the specified classes <i>and</i> class members, if
    all of the specified class members are present (after the shrinking
    step).</dd>

<dt><a href="usage.html#whyareyoukeeping"><code><b>&lt;whyareyoukeeping</b></code></a>
    <a href="#classspecification"><i>class_specification</i></a>
    <code><b>&gt;</b></code>
    <a href="#classmemberspecification"><i>class_member_specifications</i></a>
    <code><b>&lt;/whyareyoukeeping&gt;</b></code></dt>
<dd>Print details on why the given classes and class members are being kept in
    the shrinking step.</dd>

<dt><a href="usage.html#assumenosideeffects"><code><b>&lt;assumenosideeffects</b></code></a>
    <a href="#classspecification"><i>class_specification</i></a>
    <code><b>&gt;</b></code>
    <a href="#classmemberspecification"><i>class_member_specifications</i></a>
    <code><b>&lt;/assumenosideeffects&gt;</b></code></dt>
<dd>Assume that the specified methods don't have any side effects, while
    optimizing. <i>Only use this option if you know what you're
    doing!</i></dd>

<dt><a href="usage.html#optimizations"><code><b>&lt;optimization name = </b></code></a>"<a href="optimizations.html"><i>optimization_name</i></a>"
    <code><b>/&gt;</b></code><br/>
    <a href="usage.html#optimizations"><code><b>&lt;optimizations filter = </b></code></a>""<a href="optimizations.html"><i>optimization_filter</i></a>"
    <code><b>/&gt;</b></code></dt>
<dd>Perform only the specified optimizations.</dd>

<dt><a href="usage.html#keeppackagenames"><code><b>&lt;keeppackagename name = </b></code></a>"<i>package_name</i>"
    <code><b>/&gt;</b></code><br/>
    <a href="usage.html#keeppackagenames"><code><b>&lt;keeppackagenames filter = </b></code></a>"<a href="usage.html#filters"><i>package_filter</i></a>"
    <code><b>/&gt;</b></code></dt>
<dd>Keep the specified package names from being obfuscated. If no name is
    given, all package names are preserved.</dd>

<dt><a href="usage.html#keepattributes"><code><b>&lt;keepattribute name = </b></code></a>"<i>attribute_name</i>"
    <code><b>/&gt;</b></code><br/>
    <a href="usage.html#keepattributes"><code><b>&lt;keepattributes filter = </b></code></a>"<a href="usage.html#filters"><i>attribute_filter</i></a>"
    <code><b>/&gt;</b></code></dt>
<dd>Preserve the specified optional Java bytecode attributes, with optional
    wildcards. If no name is given, all attributes are preserved.</dd>

<dt><a href="usage.html#adaptclassstrings"><code><b>&lt;adaptclassstrings filter = </b></code></a>"<a href="usage.html#filters"><i>class_filter</i></a>"
    <code><b>/&gt;</b></code></dt>
<dd>Adapt string constants in the specified classes, based on the obfuscated
    names of any corresponding classes.</dd>

<dt><a href="usage.html#adaptresourcefilenames"><code><b>&lt;adaptresourcefilenames filter = </b></code></a>"<a href="usage.html#filefilters"><i>file_filter</i></a>"
    <code><b>/&gt;</b></code></dt>
<dd>Rename the specified resource files, based on the obfuscated names of the
    corresponding class files.</dd>

<dt><a href="usage.html#adaptresourcefilecontents"><code><b>&lt;adaptresourcefilecontents filter = </b></code></a>"<a href="usage.html#filefilters"><i>file_filter</i></a>"
    <code><b>/&gt;</b></code></dt>
<dd>Update the contents of the specified resource files, based on the
    obfuscated names of the processed classes.</dd>

<dt><a name="dontnote" />
    <a href="usage.html#dontnote"><code><b>&lt;dontnote filter = </b></code></a>"<a href="usage.html#filters"><i>class_filter</i></a>"
    <code><b>/&gt;</b></code></dt>
<dd>Don't print notes about classes matching the specified class name
    filter.</dd>

<dt><a name="dontwarn" />
    <a href="usage.html#dontwarn"><code><b>&lt;dontwarn filter = </b></code></a>"<a href="usage.html#filters"><i>class_filter</i></a>"
    <code><b>/&gt;</b></code></dt>
<dd>Don't print warnings about classes matching the specified class name
    filter. <i>Only use this option if you know what you're doing!</i></dd>

<dt><a name="configuration_element"><code><b>&lt;configuration refid = </b></code></a>"<i>ref_id</i>"
    <code><b>/&gt;</b></code><br/>
    <code><b>&lt;configuration file = </b></code>"<i>name</i>"
    <code><b>/&gt;</b></code></dt>
<dd>The first form includes the XML-style configuration specified in a
    <code>&lt;proguardconfiguration&gt;</code> task (or
    <code>&lt;proguard&gt;</code> task) with attribute <code>id</code> =
    "<i>ref_id</i>". Only the nested elements of this configuration are
    considered, not the attributes.
    <p>
    The second form includes the ProGuard-style configuration from the specified
    file. The element is actually a <code>fileset</code> element and supports
    all of its attributes and nested elements, including multiple files.
    </dd>

</dl>

<h2><a name="classpath">Class Path Attributes and Nested Elements</a></h2>

The jar elements are <code>path</code> elements, so they can have any of the
standard <code>path</code> attributes and nested elements. The most common
attributes are:

<dl>

<dt><code><b>path</b></code> = "<i>path</i>"</dt>
<dd>The names of the jars (or aars, wars, ears, zips, apks, or directories),
    separated by the path separator.</dd>

<dt><code><b>location</b></code> = "<i>name</i>" (or <code><b>file</b></code>
    = "<i>name</i>", or <code><b>dir</b></code> = "<i>name</i>", or
    <code><b>name</b></code> = "<i>name</i>")</dt>
<dd>Alternatively, the name of a single jar (or aar, war, ear, zip, or
    directory).</dd>

<dt><code><b>refid</b></code> = "<i>ref_id</i>"</dt>
<dd>Alternatively, a reference to the path or file set with the attribute
    <code>id</code> = "<i>ref_id</i>".</dd>

</dl>

In addition, the jar elements can have ProGuard-style filter attributes:

<dl>

<dt><code><b>filter</b></code> =
    "<a href="usage.html#filefilters"><i>file_filter</i></a>"</dt>
<dd>An optional filter for all class file names and resource file names that
    are encountered.</dd>

<dt><code><b>apkfilter</b></code> =
    "<a href="usage.html#filefilters"><i>file_filter</i></a>"</dt>
<dd>An optional filter for all apk names that are encountered.</dd>

<dt><code><b>jarfilter</b></code> =
    "<a href="usage.html#filefilters"><i>file_filter</i></a>"</dt>
<dd>An optional filter for all jar names that are encountered.</dd>

<dt><code><b>aarfilter</b></code> =
    "<a href="usage.html#filefilters"><i>file_filter</i></a>"</dt>
<dd>An optional filter for all aar names that are encountered.</dd>

<dt><code><b>warfilter</b></code> =
    "<a href="usage.html#filefilters"><i>file_filter</i></a>"</dt>
<dd>An optional filter for all war names that are encountered.</dd>

<dt><code><b>earfilter</b></code> =
    "<a href="usage.html#filefilters"><i>file_filter</i></a>"</dt>
<dd>An optional filter for all ear names that are encountered.</dd>

<dt><code><b>zipfilter</b></code> =
    "<a href="usage.html#filefilters"><i>file_filter</i></a>"</dt>
<dd>An optional filter for all zip names that are encountered.</dd>

</dl>

<h2><a name="keepmodifier">Keep Modifier Attributes</a></h2>

The keep tags can have the following <i>modifier</i> attributes:

<dl>

<dt><a href="usage.html#includedescriptorclasses"><code><b>includedescriptorclasses</b></code></a>
    = "<i>boolean</i>"
    (default = false)</dt>
<dd>Specifies whether the classes of the fields and methods specified in the
    keep tag must be kept as well.</dd>

<dt><a href="usage.html#allowshrinking"><code><b>allowshrinking</b></code></a>
    = "<i>boolean</i>"
    (default = false)</dt>
<dd>Specifies whether the entry points specified in the keep tag may be
    shrunk.</dd>

<dt><a href="usage.html#allowoptimization"><code><b>allowoptimization</b></code></a>
    = "<i>boolean</i>"
    (default = false)</dt>
<dd>Specifies whether the entry points specified in the keep tag may be
    optimized.</dd>

<dt><a href="usage.html#allowobfuscation"><code><b>allowobfuscation</b></code></a>
    = "<i>boolean</i>"
    (default = false)</dt>
<dd>Specifies whether the entry points specified in the keep tag may be
    obfuscated.</dd>

</dl>

<h2><a name="classspecification">Class Specification Attributes and Nested Elements</a></h2>

The keep tags can have the following <i>class_specification</i> attributes and
<i>class_member_specifications</i> nested elements:

<dl>

<dt><code><b>access</b></code> = "<i>access_modifiers</i>"</dt>
<dd>The optional access modifiers of the class. Any space-separated list of
    "public", "final", and "abstract", with optional negators "!".</dd>

<dt><code><b>annotation</b></code> = "<i>annotation_name</i>"</dt>
<dd>The optional fully qualified name of an annotation of the class, with
    optional wildcards.</dd>

<dt><code><b>type</b></code> = "<i>type</i>"</dt>
<dd>The optional type of the class: one of "class", "interface", or
    "!interface".</dd>

<dt><code><b>name</b></code> = "<i>class_name</i>"</dt>
<dd>The optional fully qualified name of the class, with optional
    wildcards.</dd>

<dt><code><b>extendsannotation</b></code> = "<i>annotation_name</i>"</dt>
<dd>The optional fully qualified name of an annotation of the the class that
    the specified classes must extend, with optional wildcards.</dd>

<dt><code><b>extends</b></code> = "<i>class_name</i>"</dt>
<dd>The optional fully qualified name of the class the specified classes
    must extend, with optional wildcards.</dd>

<dt><code><b>implements</b></code> = "<i>class_name</i>"</dt>
<dd>The optional fully qualified name of the class the specified classes
    must implement, with optional wildcards.</dd>

<dt><code><b>&lt;field</b></code>
    <a href="#classmemberspecification"><i>class_member_specification</i></a>
    <code><b>/&gt;</b></code></dt>
<dd>Specifies a field.</dd>

<dt><code><b>&lt;method</b></code>
    <a href="#classmemberspecification"><i>class_member_specification</i></a>
    <code><b>/&gt;</b></code></dt>
<dd>Specifies a method.</dd>

<dt><code><b>&lt;constructor</b></code>
    <a href="#classmemberspecification"><i>class_member_specification</i></a>
    <code><b>/&gt;</b></code></dt>
<dd>Specifies a constructor.</dd>

</dl>

<h2><a name="classmemberspecification">Class Member Specification Attributes</a></h2>

The class member tags can have the following <i>class_member_specification</i>
attributes:

<dl>

<dt><code><b>access</b></code> = "<i>access_modifiers</i>"</dt>
<dd>The optional access modifiers of the class. Any space-separated list of
    "public", "protected", "private", "static", etc., with optional negators
    "!".</dd>

<dt><code><b>annotation</b></code> = "<i>annotation_name</i>"</dt>
<dd>The optional fully qualified name of an annotation of the class member,
    with optional wildcards.</dd>

<dt><code><b>type</b></code> = "<i>type</i>"</dt>
<dd>The optional fully qualified type of the class member, with optional
    wildcards. Not applicable for constructors, but required for methods for
    which the <code>parameters</code> attribute is specified.</dd>

<dt><code><b>name</b></code> = "<i>name</i>"</dt>
<dd>The optional name of the class member, with optional wildcards. Not
    applicable for constructors.</dd>

<dt><code><b>parameters</b></code> = "<i>parameters</i>"</dt>
<dd>The optional comma-separated list of fully qualified method parameters,
    with optional wildcards. Not applicable for fields, but required for
    constructors, and for methods for which the <code>type</code> attribute is
    specified.</dd>

</dl>

<hr />
<address>
Copyright &copy; 2002-2014
<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
</address>
</body>
</html>
