page.title=SDK Tools
@jd:body

<p>SDK Tools is a downloadable component for the Android SDK. It includes the
complete set of development and debugging tools for the Android SDK.</p>

<p>If you are new to the Android SDK, the <a
href="{@docRoot}sdk/index.html">SDK starter package</a> installs the
latest revision of the SDK Tools in the <code>&lt;sdk&gt;/tools</code> directory.</p>

<p>If you are already using the SDK and you want to update to the latest version
of the SDK Tools, use the <em>Android SDK Manager</em> to get the
update, rather than downloading a new SDK starter package. For more information
about how to update, see <a
href="{@docRoot}sdk/exploring.html#UpdatingComponents">Exploring the SDK</a>.</p>


<h2 id="notes">Revisions</h2>

<p>The sections below provide notes about successive releases of
the SDK Tools, as denoted by revision number. To determine what revision of the SDK
Tools you are using, refer to the "Installed Packages" listing in the Android SDK Manager. </p>

<p>For a summary of all known issues in SDK Tools, see <a
href="http://tools.android.com/knownissues">http://tools.android.com/knownissues</a>.</p>


<div class="toggle-content opened">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
      alt=""/>SDK Tools, Revision 21</a> <em>(November 2012)</em>
  </p>

  <div class="toggle-content-toggleme">

    <dl>
    <dt>Dependencies:</dt>
    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 15 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that the SDK Tools r21 is designed
        for use with ADT 21.0.0 and later. If you haven't already, update your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 21.0.0.</li>
        <li>If you are developing outside Eclipse, you must have
          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
    </ul>
    </dd>
    <dt>General Notes:</dt>
    <dd>
      <ul>
        <li>Build System
          <ul>
            <li>Added a flag that sets <em>jumbo mode</em> for DEX files, which allows a larger
              number of strings in the DEX files. Enable this mode by adding the following line to
              the {@code project.properties} file of your project:
              <pre>set dex.force.jumbo=true</pre></li>
            <li>Improved the build time by pre-dexing libraries (both JAR files and library
              projects).</li>
            <li>Updated the build to generate {@code R} resource classes for library projects
              with only the IDs needed by the libraries, reducing the risk of hitting DEX file
              limits for fields and methods.</li>
            <li>Improved the build so that several editing features (code completion, resource
              chooser, go to declaration) properly handle library project resources.</li>
          </ul>
        </li>
        <li>Lint
          <ul>
            <li>Added over 25 new lint rules for resources, locale settings, layout
              files, incorrect use of {@link android.util.SparseArray} and
              {@link android.os.PowerManager.WakeLock} and manifest issues.</li>
            <li>Updated reporting to include errors in library projects if the library project is
              in the list of projects to be checked.</li>
            <li>Added a new {@code lint} target to the Ant build system for easier
              integration with continuous build systems.</li>
            <li>Added new {@code --sources} and {@code --classpath} arguments to point to sources
              with different directory structures.</li>
            <li>Improved the XML export function to support the <a
              href="https://wiki.jenkins-ci.org/display/JENKINS/Android+Lint+Plugin">Jenkins Lint
              plugin</a>.
            </li>
            <li>Added support for class file flow analysis.</li>
          </ul>
        </li>
        <li>Android Virtual Devices (AVD)
          <ul>
            <li>Added new <strong>Device Definitions</strong> tab in the AVD Manager for configuring
              standard size and Nexus virtual devices.</li>
            <li>Improved emulators so that they launch with a skin that is dynamically generated and
              reflects the actual hardware configured in the AVD Manager.</li>
            <li>Improved support for developing Android apps on MIPS-based devices with new MIPS
              System Images for Android Virtual Devices.</li>
          </ul>
        </li>
        <li>Added {@code jobb} tool for creating and encrypting
          <a href="{@docRoot}google/play/expansion-files.html">APK Expansion Files</a>.
          (<a href="{@docRoot}tools/help/jobb.html">more info</a>)
        <li>Improved the Android JUnit test runner to allow a test to be run on all connected
          devices simultaneously.</li>
      </ul>
    </dd>

    <dt>Bug fixes:</dt>
    <dd>
      <ul>
        <li>Fixed manifest merger to properly adapt library classes in the merged manifest.</li>
      </ul>
    </dd>

    </dl>
  </div>
</div>

<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>SDK Tools, Revision 20.0.3</a> <em>(August 2012)</em>
  </p>

  <div class="toggle-content-toggleme">

    <dl>
    <dt>Dependencies:</dt>
    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 12 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that the SDK Tools r20.0.3 is designed
        for use with ADT 20.0.3 and later. If you haven't already, update your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 20.0.3.</li>
        <li>If you are developing outside Eclipse, you must have
          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
    </ul>
    </dd>
    <dt>Bug fixes:</dt>
    <dd>
      <ul>
        <li>Fixed problem with cached download lists in SDK Manager.</li>
      </ul>
    </dd>
    </dl>
  </div>
</div>


<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>SDK Tools, Revision 20.0.1</a> <em>(July 2012)</em>
  </p>

  <div class="toggle-content-toggleme">

    <dl>
    <dt>Dependencies:</dt>
    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 12 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that the SDK Tools r20.0.1 is designed
        for use with ADT 20.0.1 and later. If you haven't already, update your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 20.0.1.</li>
        <li>If you are developing outside Eclipse, you must have
          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
    </ul>
    </dd>
    <dt>Bug fixes:</dt>
    <dd>
      <ul>
        <li>Fixed wrong check on build state that forced repetitive Java code recompilation.</li>
        <li>Fixed problems with running more than one emulator and running multiple emulators
with GPU acceleration.</li>
        <li>Improved resize algorithm for better rendering on scaled emulator windows.</li>
        <li>Fixed a bug in the {@code lint} check for unprotected broadcast receivers to ignore
unprotected receivers for default Android actions.</li>
        <li>Fixed build issue for projects using Renderscript.</li>
        <li>Fixed memory leak in the emulator.</li>
      </ul>
    </dd>
    </dl>
  </div>
</div>

<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>SDK Tools, Revision 20</a> <em>(June 2012)</em>
  </p>

  <div class="toggle-content-toggleme">
  <dl>
    <dt>Dependencies:</dt>
    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 12 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that the SDK Tools r20 is designed for
        use with ADT 20.0.0 and later. If you haven't already, we highly recommend updating your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 20.0.0.</li>
        <li>If you are developing outside Eclipse, you must have
          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
    </ul>
    </dd>
    <dt>General notes:</dt>
    <dd>
      <ul>
        <li>Added new Device Monitor application, grouping Android debugging tools into a
single application, including ddms, traceview, hierarchyviewer and Tracer for GLES. (<a
href="{@docRoot}tools/help/gltracer.html">more info</a>)</li>
        <li>Added new System Trace new tool for tracing Android system activity. This tool allow you
to capture a slice of system activity, plus additional information tagged from the <strong>Settings
&gt; Developer Options &gt; Monitoring: Enable traces</strong> or with specific calls added to your
application code.</li>
        </li>
        <li>Build System
          <ul>
            <li>Added automatic merging of library project manifest files into the including
project's manifest. Enable this feature with the {@code manifestmerger.enabled} property.</li>
            <li>Added automatic ProGuard support for the {@code aapt -G} flag. This change causes
the build system to generate a temporary ProGuard {@code keep-rules} file containing classes that
are referenced from XML files (such as custom views) and pass this to ProGuard at shrink time. This
can make the resulting APK much smaller when using just a small portion of a large library project
(such as the Android Support library), since the catch-all rules to keep all custom views from the
default ProGuard configuration file have also been removed.</li>
            <li>Added two ProGuard configuration files for use in projects: {@code
proguard-android-optimize.txt} which enables optimizations and {@code proguard-android.txt} which
disables them.</li>
          </ul>
        </li>
        <li>SDK Manager
          <ul>
            <li>Improved caching to reduce downloading of repository definitions.</li>
            <li>Added <strong>Tools > Manage Add-on Sites</strong> option to improve performance by
            allowing temporary deactivation of third-party sites if they are loading slowly.</li>
            <li>Added settings for the SDK Manager download cache (<strong>SDK Manager > Tools >
Options</strong>).</li>
          </ul>
        </li>
      </ul>
    </dd>
    <dt>Bug fixes:</dt>
    <dd>
      <ul>
        <li>Build
          <ul>
            <li>Fixed problem where test projects did not have access to the full classpath of tested
projects, including Library Projects and third-party jars.</li>
            <li>Fixed deployment logic so that applications with embedded tests can now be deployed
and tested like test applications, including code coverage information.</li>
            <li>Fixed Ant support for testing projects with libraries.</li>
          </ul>
        </li>
      </ul>
    </dd>
    </dl>
  </div>
</div>

<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>SDK Tools, Revision 19</a> <em>(April 2012)</em>
  </p>

  <div class="toggle-content-toggleme">
    <p class="note"><strong>Note:</strong> This update of SDK Tools is only available through
the <a href="{@docRoot}sdk/exploring.html">Android SDK Manager</a>. Use this tool to
download and install this update.</p>

    <dl>
    <dt>Dependencies:</dt>
    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 9 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that the SDK Tools r19 is designed for
        use with ADT 18.0.0 and later. If you haven't already, we highly recommend updating your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 18.0.0.</li>
        <li>If you are developing outside Eclipse, you must have
          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
    </ul>
    </dd>
    <dt>Bug fixes:</dt>
    <dd>
      <ul>
        <li>Fixed an issue that prevented some developers from running the emulator with GPU
acceleration.</li>
      </ul>
    </dd>
    </dl>
  </div>
</div>

<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>SDK Tools, Revision 18</a> <em>(April 2012)</em>
  </p>

  <div class="toggle-content-toggleme">
    <p class="caution"><strong>Important:</strong> To download the new Android
    4.0 system components from the Android SDK Manager, you must first update the
    SDK tools to revision 14 or later and restart the Android SDK Manager. If you do not,
    the Android 4.0 system components will not be available for download.</p>

    <dl>
    <dt>Dependencies:</dt>
    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 9 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that the SDK Tools r18 is designed for
        use with ADT 18.0.0 and later. If you haven't already, we highly recommend updating your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 18.0.0.</li>
        <li>If you are developing outside Eclipse, you must have
          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
    </ul>
    </dd>
    <dt>General notes:</dt>
    <dd>
      <ul>
        <li>Updated the SdkController app to encapsulate both sensor and multitouch emulation
          functionality.</li>
      </ul>
    </dd>
    <dt>Bug fixes:</dt>
    <dd>
      <ul>
        <li>Fixed Ant issues where some jar libraries in the {@code libs/} folder are not picked up
in some cases.</li>
      </ul>
    </dd>
    </dl>
  </div>
</div>

<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>SDK Tools, Revision 17</a> <em>(March 2012)</em>
  </p>

  <div class="toggle-content-toggleme">
    <p class="caution"><strong>Important:</strong> To download the new Android
    4.0 system components from the Android SDK Manager, you must first update the
    SDK tools to revision 14 or later and restart the Android SDK Manager. If you do not,
    the Android 4.0 system components will not be available for download.</p>

    <dl>
    <dt>Dependencies:</dt>
    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 9 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that the SDK Tools r17 is designed for
        use with ADT 17.0.0 and later. If you haven't already, we highly recommend updating your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 17.0.0.</li>
        <li>If you are developing outside Eclipse, you must have
          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
    </ul>
    </dd>
    <dt>General notes:</dt>
    <dd>
      <ul>
        <li>Emulator
          <ul>
            <li>Added support for hardware accelerated graphics rendering. This feature requires an
API Level 15, Revision 3 or later system image.
(<a href="{@docRoot}tools/devices/emulator.html#accel-graphics">more info</a>)
            </li>
            <li>Added support for running Android x86 system images in virtualization mode on
Windows and Mac OS X.
(<a href="{@docRoot}tools/devices/emulator.html#accel-vm">more info</a>)
              <p class="note"><strong>Note:</strong> Use the Android SDK Manager to download and
install x86 system images. Android x86 system images are not available for all API levels.</p>
            </li>
            <li>Added experimental support for multi-touch input by enabing the emulator to receive
              touch input from a USB-tethered physical Android device.
              (<a href="http://tools.android.com/tips/hardware-emulation">more info</a>)</li>
          </ul>
        </li>
        <li>Added viewing of live detailed network usage of an app in DDMS. (<a
    href="http://tools.android.com/recent/detailednetworkusageinddms">more info</a>)</li>
        <li>ProGuard
          <ul>
            <li>Updated the bundled ProGuard tool to version 4.7. In addition to many new features,
this update fixes the {@code Conversion to Dalvik format failed with error 1} error some users have
experienced.</li>
            <li>Updated the default {@code proguard.cfg} file with better default flags for
              Android.</li>
            <li>Split the ProGuard configuration file has been in half, with project specific flags
kept in project and the generic Android flags distributed (and updated) with the tools
themselves.</li>
          </ul>
        </li>
        <li>Build
          <ul>
            <li>Added a feature that allows you to run some code only in debug mode. Builds now
generate a class called {@code BuildConfig} containing a {@code DEBUG} constant that is
automatically set according to your build type. You can check the ({@code BuildConfig.DEBUG})
constant in your code to run debug-only functions.</li>
            <li>Fixed issue when a project and its libraries include the same jar file in their libs
              folder. (<a href="http://tools.android.com/recent/dealingwithdependenciesinandroidprojects">more
              info</a>)</li>
            <li>Added support for custom views with custom attributes in libraries. Layouts using
custom attributes must use the namespace URI {@code http://schemas.android.com/apk/res-auto} instead
of the URI that includes the app package name. This URI is replaced with the app specific one at
build time.</li>
          </ul>
        </li>
        <li>Lint
          <ul>
            <li>Updated Lint to check Android application code. Lint rules which previously
performed pattern based searches in the application code (such as the unused resource check) have
been rewritten to use the more accurate Java-style parse trees.</li>
            <li>Added support for checking library projects. This change means that rules such as
the unused resource check properly handle resources declared in a library project and referenced in
a downstream project.</li>
            <li>Added ability to suppress Lint warnings in Java code with the new
{@code @SuppressLint} annotation, and in XML files with the new tools: namespace and
ignore attribute. (<a
    href="http://tools.android.com/recent/ignoringlintwarnings">more info</a>)</li>
            <li>New Lint checks:
              <ul>
                <li>Added check for Android API calls that require a version of Android higher than
                  the minimum supported version. You can use the new {@code @TargetApi} annotation
                  to suppress warnings when the code is wrapped in a system version condition.
                  (<a href="http://tools.android.com/recent/lintapicheck">more info</a>)</li>
                <li>Added over 20 new Lint rules, including checks for
                  <a href="http://tools.android.com/recent/lintperformancechecks">performance</a>,
                  XML layouts, manifest and file handling.</li>
              </ul>
            </li>
          </ul>
        </li>
      </ul>
    </dd>
    </dl>
  </div>
</div>

<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>SDK Tools, Revision 16</a> <em>(December 2011)</em>
  </p>

  <div class="toggle-content-toggleme">
    <p class="caution"><strong>Important:</strong> To download the new Android
    4.0 system components from the Android SDK Manager, you must first update the
    SDK tools to revision 14 or later and restart the Android SDK Manager. If you do not,
    the Android 4.0 system components will not be available for download.</p>

<dl>
<dt>Dependencies:</dt>
<dd>
  <ul>
    <li>Android SDK Platform-tools revision 9 or later.</li>
    <li>If you are developing in Eclipse with ADT, note that the SDK Tools r16 is designed for use
    with ADT 16.0.0 and later. If you haven't already, we highly recommend updating your
    <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 16.0.0.</li>
    <li>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
    Ant</a> 1.8 or later.</li>
</ul>
</dd>
<dt>General notes:</dt>
<dd>
  <ul>
    <li>Added Lint tools to detect common errors in Android projects.
      (<a href="http://tools.android.com/recent/lint">more info</a>)</li>
    <li>Added sensor emulation support, which allows the emulator to read sensor data from a
      physical Android device.
      (<a href="http://tools.android.com/recent/sensoremulation">more info</a>)</li>
    <li>Added support for using a webcam to emulate a camera on Mac OS X.</li>
  </ul>
</dd>
<dt>Bug fixes:</dt>
<dd>
  <ul>
    <li>Snapshots now work for Android 4.0 system images.</li>
    <li>Fixed several small issues for the build file.
    (<a href="http://code.google.com/p/android/issues/detail?id=21023">Issue 21023</a>,
    <a href="http://code.google.com/p/android/issues/detail?id=21267">Issue 21267</a>,
    <a href="http://code.google.com/p/android/issues/detail?id=21465">Issue 21465</a>,
    <a href="http://code.google.com/p/android/issues/detail?id=21525">Issue 21525</a>).</li>
  </ul>
</dd>
</dl>
</div>
</div>

<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>SDK Tools, Revision 15</a> <em>(October 2011)</em>
  </p>

  <div class="toggle-content-toggleme">
    <p class="caution"><strong>Important:</strong> To download the new Android
    4.0 system components from the Android SDK Manager, you must first update the
    SDK tools to revision 14 or later and restart the Android SDK Manager. If you do not,
    the Android 4.0 system components will not be available for download.</p>
  <dl>
<dt>Dependencies:</dt>
<dd>
  <ul><li>Android SDK Platform-tools revision 9 or later.</li>
  <li>If you are developing in Eclipse with ADT, note that the SDK Tools r15 is designed for use
  with ADT 15.0.0 and later. If you haven't already, we highly recommend updating your <a
  href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 15.0.0.</li>
  <li>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
  Ant</a> 1.8 or later.</li>
</ul>

<dt>Bug fixes:</dt>
<dd>
  <ul>
    <li>Fixed emulator crash on Linux due to improper webcam detection
    (<a href="http://code.google.com/p/android/issues/detail?id=20952">Issue 20952</a>).</li>
    <li>Fixed emulator issue when using the <code>-wipe-data</code> argument.</li>
    <li>Fixed build issue when using Renderscript in projects that target API levels 11-13
    (<a href="http://code.google.com/p/android/issues/detail?id=21006">Issue 21006</a>).</li>
    <li>Fixed issue when creating an AVD using the GoogleTV addon
    (<a href="http://code.google.com/p/android/issues/detail?id=20963">Issue 20963</a>).</li>
    <li>Fixed <code>ant test</code>
    (<a href="http://code.google.com/p/android/issues/detail?id=20979">Issue 20979</a>).</li>
    <li>Fixed <code>android update project</code>
    (<a href="http://code.google.com/p/android/issues/detail?id=20535">Issue 20535</a>).</li>
    <li>Fixed scrolling issue in the new Logcat panel of DDMS.</li>
    <li>Fixed issue with MonkeyRunner
    (<a href="http://code.google.com/p/android/issues/detail?id=20964">Issue 20964</a>).</li>
    <li>Fixed issues in the SDK Manager
    (<a href="http://code.google.com/p/android/issues/detail?id=20939">Issue 20939</a>,
    <a href="http://code.google.com/p/android/issues/detail?id=20607">Issue 20607</a>).</li>
  </ul>
</dd>
</dl>
</div>
</div>

<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>SDK Tools, Revision 14</a> <em>(October 2011)</em>
  </p>

  <div class="toggle-content-toggleme">
    <p class="note"><strong>Important:</strong> To download the new Android
    4.0 system components from the Android SDK Manager, you must first update the
    SDK tools to revision 14 and restart the Android SDK Manager. If you do not,
    the Android 4.0 system components will not be available for download.</p>
  <dl>
<dt>Dependencies:</dt>
<dd>
  <ul><li>Android SDK Platform-tools revision 8 or later.</li>
  <li>If you are developing in Eclipse with ADT, note that the SDK Tools r14 is designed for use
  with ADT 14.0.0 and later. If you haven't already, we highly recommend updating your <a
  href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 14.0.0.</li>
  <li>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
  Ant</a> 1.8 or later.</li>
</ul>

<dt>General notes:</dt>
<dd>
  <ul>
    <li>Added webcam support to Android 4.0 or later platforms to emulate rear-facing cameras when
    one webcam is present, and to emulate both rear-facing and front-facing cameras when two
    webcams are present. Webcam support is for Windows and Linux only.
    Mac support will come in a later release.</li>
    <li>Changed <code>default.properties</code> to <code>project.properties</code> and
    <code>build.properties</code> to <code>ant.properties</code>. Any existing
    projects that you build with Ant must be updated with the <code>android update project</code>
    command.</li>
    <li>Changed Ant <code>build.xml</code> file to support improvements to the
    build system and added and modified Ant commands to support these changes. For a list of Ant
commands, see the
<a href="{@docRoot}tools/building/building-cmdline.html#AntReference">Ant Command
Reference</a>.</li>
    <li>Changed how library projects are built.</li>
    <li>Improved incremental builds, so that resource compilation runs less frequently. Builds no
    longer run when you edit strings or layouts (unless you add a new <code>id</code>) and no longer
    run once for each library project.</li>
    <li>Introduced a "PNG crunch cache" that only runs on modified PNG files, instead of
    crunching all existing PNG files, all the time.</li>
    <li>Revamped the SDK Manager UI (<a href="http://tools.android.com/recent/newsdkmanager">more
info</a>).</li>
  </ul>
  <p>For a complete overview of the build system changes and what you need to do to support them,
see the <a href="http://tools.android.com/recent/buildchangesinrevision14">Android Tools Project
site</a>.</p>
</dd>
</dl>
</div>
</div>

<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>SDK Tools, Revision 13</a> <em>(September 2011)</em>
  </p>

  <div class="toggle-content-toggleme">
  <dl>
<dt>Dependencies:</dt>
<dd>
<p>If you are developing in Eclipse with ADT, note that the SDK Tools r13 is designed for use with
ADT 12.0.0 and later. If you haven't already, we highly recommend updating your <a
href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 12.0.0.</p>

<p>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
Ant</a> 1.8 or later.</p>

<dt>General notes:</dt>
<dd>
  <ul>
    <li>Fix compilation issue in Ant (<code>dex</code> step) when paths have spaces.</li>
    <li>Fix issue in emulator installation when paths have spaces.</li>
    <li>Fix issue when AVD paths have spaces.</li>
    <li>Fix rendering issue when using emulator scaling (<a href="http://code.google.com/p/android/issues/detail?id=18299">see more</a>).</li>
  </ul>
</dd>
</dl>
</div>
</div>


<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>SDK Tools, Revision 12</a> <em>(July 2011)</em>
  </p>

  <div class="toggle-content-toggleme">
  <dl>
<dt>Dependencies:</dt>
<dd>
<p>If you are developing in Eclipse with ADT, note that the SDK Tools r12 is designed for use with
ADT 12.0.0 and later. If you haven't already, we highly recommend updating your <a
href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 12.0.0.</p>

<p>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
Ant</a> 1.8 or later.</p>

<dt>General notes:</dt>
<dd>
  <ul>
    <li>The AVD manager and emulator can now use system images
    compiled for ARM v7 and x86 CPUs.</li>
  </ul>
</dd>
</dl>
</div>
</div>

<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>SDK Tools, Revision 11</a> <em>(May 2011)</em>
  </p>

  <div class="toggle-content-toggleme">
  <dl>
<dt>Dependencies:</dt>
<dd>
<p>If you are developing in Eclipse with ADT, note that the SDK Tools r11 is designed for use with
ADT 10.0.1 and later. If you haven't already, we highly recommend updating your <a
href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 10.0.1.</p>

<p>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
Ant</a> 1.8 or later.</p>

<dt>General notes:</dt>
<dd>
  <ul>
    <li>Miscellaneous emulator changes to support Android 3.1.</li>
  </ul>
</dd>
</dl>
</div>
</div>


<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>SDK Tools, Revision 10</a> <em>(February 2011)</em>
  </p>

  <div class="toggle-content-toggleme">
  <dl>
<dt>Dependencies:</dt>
<dd>
<p>If you are developing in Eclipse with ADT, note that the SDK Tools r10 is
designed for use with ADT 10.0.0 and later. After installing SDK Tools r10, we
highly recommend updating your ADT Plugin to 10.0.0.</p>

<p>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
Ant</a> 1.8 or later.</p>

<dt>General notes:</dt>
<dd>
  <ul>
    <li>The tools now automatically generate Java Programming Language source files (in the
<code>gen</code> directory) and
    bytecode (in the <code>res/raw</code> directory) from your native <code>.rs</code> files</li>
  </ul>
</dd>
</dl>
</div>
</div>



<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>SDK Tools, Revision 9</a> <em>(January 2011)</em>
  </p>

  <div class="toggle-content-toggleme">
  <dl>
<dt>Dependencies:</dt>
<dd>
<p>If you are developing in Eclipse with ADT, note that the SDK Tools r9 is
designed for use with ADT 9.0.0 and later. After installing SDK Tools r9, we
highly recommend updating your ADT Plugin to 9.0.0.</p>

<p>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
Ant</a> 1.8 or later.</p>

<dt>Upgrading to SDK Tools r9:</dt>
<dd>
<p>If you are upgrading to SDK Tools r9 from SDK Tools r7 or earlier, the default installed location
for the <code>adb</code> tool has changed from <code>&lt;<em>SDK</em>&gt;/tools/adb</code> to
<code>&lt;<em>SDK</em>&gt;/platform-tools/adb</code>. This means that you should
add the new location to your PATH and modify any custom build scripts to
reference the new location. Copying the <code>adb</code> executable from the new
location to the old is not recommended, since subsequent updates to the SDK
Tools will delete the file.</p>
</dd>

<dt>General notes:</dt>
<dd>
  <ul>
    <li>The default ProGuard configuration, <code>proguard.cfg</code>, now ignores the following classes:
      <ul>
        <li>classes that extend {@link android.preference.Preference}</li>
        <li>classes that extend {@link android.app.backup.BackupAgentHelper}</li>
      </ul>
    </li>
    <li>Ant lib rules now allow you to override <code>java.encoding</code>, <code>java.source</code>,
    and <code>java.target</code> properties.</li>
    <li>The default encoding for the <code>javac</code> Ant task is now UTF-8.</li>
    <li>The LogCat view in DDMS now properly displays UTF-8 characters.</li>
    <li>The SDK Manager is more reliable on Windows. For details on the improvements, see the
    <a href="http://tools.android.com/recent/sdkmanagerfixes">Android Tools Project Site</a>. </li>
    <li>Early look at the new snapshot feature: To improve startup time for the emulator, you can
enable snapshots for the system state. The emulator will then restore to the state when it last
closed almost instantly. <strong>Note:</strong> The snapshot feature is still under active
development and might not always perform as expected.</li>
    <li>Fixed the missing JAR file error that prevented <code>draw9patch</code> from running.</li>
    <li>Fixed the Windows launch scripts <code>hierarchyviewer</code> and <code>ddms</code> to support
    the new location of <code>adb</code>.</li>
    <li>Known issues with emulator performance: Because the Android emulator must simulate the ARM
instruction set architecture on your computer, emulator performance is  slow. We're working hard to
resolve the performance issues and it will improve in future releases.</li>
  </ul>
</dd>
</dl>
</div>
</div>

<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>SDK Tools, Revision 8</a> <em>(December 2010)</em>
  </p>

  <div class="toggle-content-toggleme">
<dl>
<dt>Dependencies:</dt>
<dd>
<p>If you are developing in Eclipse with ADT, note that SDK Tools r8 is
designed for use with ADT 8.0.0 and later. After installing SDK Tools r8, we
highly recommend updating your ADT Plugin to 8.0.0.</p>

<p>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
Ant</a> 1.8 or later.</p>

<p>Also note that SDK Tools r8 requires a new SDK component called
<em>Platform-tools</em>. The new Platform-tools component lets all SDK platforms
(Android 2.1, Android 2.2, and so on) use the same (latest) version of build
tools such as <code>adb</code>, <code>aapt</code>, <code>aidl</code>, and
<code>dx</code>. To download the Platform-tools component, use the Android SDK
Manager, as described in <a href="{@docRoot}sdk/exploring.html">Exploring the
SDK</a></p>

<dt>Upgrading from SDK Tools r7:</dt>
<dd>
<p>If you are upgrading to SDK Tools r8 from an earlier version, note that the
the default installed location for the <code>adb</code> tool has changed from
<code>&lt;<em>SDK</em>&gt;/tools/adb</code> to
<code>&lt;<em>SDK</em>&gt;/platform-tools/adb</code>. This means that you should
add the new location to your PATH and modify any custom build scripts to
reference the new location. Copying the <code>adb</code> executable from the new
location to the old is not recommended, since subsequent updates to the SDK
Tools will delete the file.</p>
</dd>

<dt>General notes:</dt>
<dd>
<ul>
<li>All SDK platforms now support Library Projects.</li>
<li>Support for a true debug build. Developers no longer need to add the
<code>android:debuggable</code> attribute to the
<code>&lt;application&gt;</code> tag in the manifest &mdash; the build tools add
the attribute automatically. In Eclipse/ADT, all incremental builds are assumed
to be debug builds, so the tools insert <code>android:debuggable="true"</code>.
When exporting a signed release build, the tools do not add the attribute. In
Ant, a <code>ant debug</code> command automatically inserts the
<code>android:debuggable="true"</code> attribute, while <code>ant release</code>
does not. If <code>android:debuggable="true"</code> is manually set, then
<code>ant release</code> will actually do a debug build, rather than a release
build.</li>
<li>Automatic ProGuard support in release builds. Developers generate a ProGuard
configuration file using the <code>android</code> tool &mdash; the build tools
then automatically run ProGuard against the project sources during the build.
For more information, see the <a
href="{@docRoot}tools/help/proguard.html">ProGuard</a>
documentation. </li>
<li>New overridable Ant javac properties: <code>java.encoding</code>,
<code>java.source</code>, and <code>java.target</code> (default values are
"ascii", "1.5", and "1.5", respectively).</li>
<li>New UI for the HierarchyViewer tool.</li>
</ul>
</dd>
</dl>
 </div>
</div>

<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>SDK Tools, Revision 7</a> <em>(September 2010)</em>
  </p>

  <div class="toggle-content-toggleme">
<dl>
<dt>Dependencies:</dt>
<dd>
<p>If you are developing in Eclipse with ADT, note that SDK Tools r7 is
designed for use with ADT 0.9.8 and later. After installing SDK Tools r7, we
highly recommend updating your ADT Plugin to 0.9.8.</p>
</dd>

<dt>General notes:</dt>
<dd>
<ul>
<li>Added support for library projects that depend on other library projects.</li>
<li>Adds support for aidl files in library projects.</li>
<li>Adds support for extension targets in Ant build to perform tasks between the
normal tasks: <code>-pre-build</code>, <code>-pre-compile</code>, and
<code>-post-compile</code>.</li>
<li>Adds support for "headless" SDK update. See <code>android -h update sdk</code>
for more information.</li>
<li>Fixes location control in DDMS to work in any locale not using '.' as a
decimal point.</li>
</ul>
</ul>
</dd>
</dl>
 </div>
</div>

<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>SDK Tools, Revision 6</a> <em>(May 2010)</em>
  </p>

  <div class="toggle-content-toggleme">
<dl>
<dt>Dependencies:</dt>
<dd>
<p>If you are developing in Eclipse with ADT, note that SDK Tools r6 is
designed for use with ADT 0.9.7 and later. After installing SDK Tools r6, we
highly recommend updating your ADT Plugin to 0.9.7.</p>
</dd>

<dt>Library projects:</dt>
<dd>
<p>The SDK Tools now support the use of <em>library projects</em> during
development, a capability that lets you store shared Android application
code and resources in a separate development project. You can then reference the
library project from other Android projects and, at build time, the tools
compile the shared code and resources as part of the dependent applications.
More information about this feature is available in the <a
href="{@docRoot}tools/projects/index.html#LibraryProjects">Creating and Managing Projects</a> document.</p>
<p>If you are developing in Eclipse, <a href="eclipse-adt.html">ADT</a>
provides the equivalent library project support.</p>
</dd>
</dl>
 </div>
</div>

<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>SDK Tools, Revision 5</a> <em>(March 2010)</em>
  </p>

  <div class="toggle-content-toggleme">
<dl>
<dt>Dependencies:</dt>
<dd><ul>
<li>If you are developing in Eclipse with ADT, note that SDK Tools r5 is
designed for use with ADT 0.9.6 and later. After installing SDK Tools r5, we
highly recommend updating your ADT Plugin to 0.9.6.</li>
<li>For Mac OS platforms, OS X 10.4.x (Tiger) is no longer
officially supported. </li>
</ul>
</dd>

<dt>SDK and AVD Manager:</dt>
<dd>
<ul>
<li>Fixes SSL download for the standalone version of the SDK Updater.</li>
<li>Fixes issue with 64-bit JVM on Windows.</li>
<li>Adds support for platform samples components.</li>
<li>Improves support for dependency between components.</li>
<li>AVDs now sorted by API level.</li>
<li>The AVD creation dialog now enforces a minimum SD card size of 9MB.</li>
<li>Prevents deletion of running AVDs.</li>
<li>Settings are now automatically saved, no need to click "Apply".</li>
</ul>
</dd>

<dt>Emulator:</dt>
<dd>
<ul>
<li>Emulator now requires SD card to be 9MB or more.</li>
</ul>
</dd>

<dt>Layoutopt:</dt>
<dd>
<ul>
<li>Fixes <code>layoutopt.bat</code> to execute correctly on Windows.</li>
</ul>
</dd>
</dl>
 </div>
</div>

<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>SDK Tools, Revision 4</a> <em>(December 2009)</em>
  </p>

  <div class="toggle-content-toggleme">
<dl>
<dt>Dependencies:</dt>
<dd><p>SDK Tools r4 is compatible with ADT 0.9.5 and later, but not
compatible with earlier versions. If you are developing in Eclipse with ADT, you
<strong>must</strong> update your ADT plugin to version 0.9.5 or higher if you
install SDK Tools r4 in your SDK. </p></dd>

<dt>General notes:</dt>
<dd>
<ul>
<li>Launcher script now forces GDK_NATIVE_WINDOW=true (linux only), to fix a
compatibility issue between GTK and SWT.</li>
</ul>
</dd>

<dt>Android SDK and AVD Manager:</dt>
<dd>
<ul>
<li>AVD Launch dialog now shows scale value.</li>
<li>Fixes potential NPE in SDK Manager on AVD launch, for older AVD with no
skin name specified.</li>
<li>Fixes XML validation issue in on older Java versions.</li>
<li>No longer forces the use of Java 1.5 on Mac OS X.</li>
</ul>
</dd>

<dt>Emulator:</dt>
<dd>
<ul>
<li>No longer limits the size of the system partition.</li>
</ul>
</dd>

<dt>Ant build tools:</dt>
<dd>
<ul>
<li>.apk packaging now properly ignores vi swap files as well as hidden files.</li>
</ul>
</dd>
</dl>
 </div>
</div>

<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>SDK Tools, Revision 3</a> <em>(October 2009)</em>
  </p>

  <div class="toggle-content-toggleme">
<dl>
<dt>Dependencies:</dt>
<dd><p>SDK Tools r3 is compatible with ADT 0.9.4 and later, but not
compatible with earlier versions. If you are developing in Eclipse with ADT, you
<strong>must</strong> update your ADT plugin to version 0.9.4 or higher if you
install SDK Tools r3 in your SDK.</p>
</dd>

<dt>Android tool:</dt>
<dd>
<ul>
<li>Adds new <code>android create test-project</code> and <code>android update
test-project</code> commands to allow for greater flexibility in the location of the
main and test projects.</li>
</ul>
</dd>

<dt>DDMS:</dt>
<dd>
<ul>
<li>Adds a button to dump HPROF file for running applications (app must be able
to write to the sdcard).</li>
<li>Button to start/stop profiling of a running application (app must be able to
write to the sdcard). Upon stop, Traceview will automatically be launched to
display the trace.</li>
<li>Fixed DDMS, Traceview, and the AVD Mananger/SDK Updater to run on Mac OS X
10.6.</li>
<li>Fixed screenshot support for devices running 32-bit framebuffer.</li>
</ul>
</dd>

<dt>Android SDK and AVD Manager:</dt>
<dd>
<ul>
<li>Provides a new UI that lets you set options for controlling
the emulator skin, screen size/density, and scale factor used when launching
an AVD.</li>
<li>Provides improved AVD creation UI, which lets you customize the hardware
properties of your AVDs.</li>
<li>Now enforces dependencies between platforms and tools components, and
between SDK add-ons and platforms.</li>
</ul>
</dd>

<dt>Layoutopt, a new tool for optimizing layouts:</dt>

<dd><p>The SDK Tools r3 package includes <code>layoutopt</code>, a new command-line
tool that helps you optimize your layout hierarchies. When run against your
layout files, the tool analyzes their hierarchies and notifies you of
inefficiencies and other potential issues. The tool also provides simple
solutions for the issues it finds. For usage, see <a
href="/tools/help/layoutopt.html">layoutopt</a>.</p>
</dd>
</dl>
 </div>
</div>

