page.title=SDK Tools Release Notes
excludeFromSuggestions=true
@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. It is included
with <a href="{@docRoot}tools/studio/index.html">Android Studio</a>.</p>

<p>If you are already using the SDK and you want to update to the latest version
of the SDK Tools, use the <a
href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a> to get the
update.</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/styles/disclosure_up.png" class="toggle-content-img"
      alt=""/>SDK Platform-tools, Revision 23.1.0</a> <em>(December 2015)</em>
  </p>

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

    <dl>
        <dt>General Notes:</dt>
    <dd>
      <ul>
        <li>Changed Linux requirements for Android SDK Platform-tools revision 23.1.0 and later:
          it now requires 64-bit Linux.</li>
      </ul>
    </dd>



  </div>
</div>

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

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

    <dl>
    <dt>Dependencies:</dt>

    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 23 or later.</li>
      </ul>
    </dd>

    <dt>General Notes:</dt>
    <dd>
      <ul>
        <li>Fixed a problem where the emulator title bar was hidden off screen.
        (<a href="http://code.google.com/p/android/issues/detail?id=178344">Issue 178344</a>)</li>
        <li>Enabled the emulator to resize the user data partition by including e2fsprogs binaries.
        (<a href="http://code.google.com/p/android/issues/detail?id=189030">Issue 189030</a>)</li>
        <li>Fixed a regression on the 32-bit Windows OS where the emulator fails to boot Android 6.0
        (API level 23) through Android 5.0 (API level 21) system images.
        (<a href="http://code.google.com/p/android/issues/detail?id=188326">Issue 188326</a>)</li>
      </ul>
    </dd>

  </div>
</div>


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

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

    <dl>
    <dt>Dependencies:</dt>

    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 23 or later.</li>
      </ul>
    </dd>

    <dt>General Notes:</dt>
    <dd>
      <ul>
        <li>Updated the emulator so it can display an upgrade notification when a new version is
        available.</li>
        <li>Added the ability for the emulator to send basic crash reports. You <em>must</em> opt-in
        through Android Studio preferences to enable crash report transmission.</li>
      </ul>
    </dd>

  </div>
</div>

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

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

    <dl>
    <dt>Dependencies:</dt>

    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 23 or later.</li>
      </ul>
    </dd>

    <dt>General Notes:</dt>
    <dd>
      <ul>
        <li>Added support for Android 6.0 (API level 23) platform.</li>
      </ul>
    </dd>

    <dt>Emulator:</dt>
    <dd>
      <ul>
        <li>Improved emulator performance on multi-core Windows desktops.
          (<a href="http://b.android.com/101040">Issue 101040</a>)</li>
        <li>Added support for GPU emulation on Windows and Linux platforms using the
          {@code -gpu mesa} command line option.</li>
        <li>Enabled support for running emulators with GPU emulation through remote desktop
          services, including Chrome Remote Desktop, Windows Terminal Services, and NoMachine.</li>
        <li>Added support for emulators with 280 dpi and 360 dpi screen resolutions.</li>
        <li>Improved support for GLES 2.0 extensions.</li>
        <li>Fixed several issues with GPU emulation support.</li>
        <li>Added support for setting the storage size on emulators using Android 4.4 (API level 19)
          and higher.
          (<a href="http://b.android.com/75141">Issue 75141</a>)</li>
        <li>Fixed problem with sending long SMS messages between emulators.
          (<a href="http://b.android.com/3539">Issue 3539</a>)</li>
        <li>Fixed issue with emulator getting incorrect time from location objects.
          (<a href="http://b.android.com/27272">Issue 27272</a>)</li>
        <li>Added handling for unusual characters in paths and file names when starting emulators.
          (<a href="http://b.android.com/35889">Issue 35889</a>)</li>
      </ul>
    </dd>

  </div>
</div>


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

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

    <dl>
    <dt>Dependencies:</dt>

    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 19 or later.</li>
      </ul>
    </dd>

    <dt>General Notes:</dt>
    <dd>
      <ul>
        <li>Fixed issues with using Ant build tasks with the Eclipse ADT build structure. </li>
        <li>Fixed the emulator boot problem on Mac OS X 10.8.5.</li>
      </ul>
    </dd>
  </div>
</div>


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

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

    <dl>
    <dt>Dependencies:</dt>

    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 19 or later.</li>
      </ul>
    </dd>

    <dt>General Notes:</dt>
    <dd>
      <ul>
        <li>Fixed issues with the ARM 64-bit emulator.</li>
      </ul>
    </dd>
  </div>
</div>


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

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

    <dl>
    <dt>Dependencies:</dt>

    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 19 or later.</li>
      </ul>
    </dd>

    <dt>General Notes:</dt>
    <dd>
      <ul>
        <li>Fixed issue with the <code>root/</code> and <code>lib/</code> folders. </li>
      </ul>
      <p class="caution"><strong>Caution:</strong> This release is known to contain issues which
      prevent builds from completing. We strongly recommend that you update to SDK Tools 24.3.2
      as soon as possible. </p>
    </dd>
  </div>
</div>


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

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

    <dl>
    <dt>Dependencies:</dt>

    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 19 or later.</li>
      </ul>
    </dd>

    <dt>General Notes:</dt>
    <dd>
      <ul>
        <li>Fixed several minor emulator issues.</li>
      </ul>
      <p class="caution"><strong>Caution:</strong> This release is known to contain issues which
      prevent builds from completing. We strongly recommend that you update to SDK Tools 24.3.2
      as soon as possible. </p>
    </dd>
  </div>
</div>



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

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

    <dl>
    <dt>Dependencies:</dt>

    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 19 or later.</li>
      </ul>
    </dd>

    <dt>General Notes:</dt>
    <dd>
      <ul>
        <li>Fixed several minor emulator issues.</li>
      </ul>
    </dd>
  </div>
</div>


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

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

    <dl>
    <dt>Dependencies:</dt>

    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 19 or later.</li>
      </ul>
    </dd>

    <dt>General Notes:</dt>
    <dd>
      <ul>
        <li>Fixed boot failures of MIPS system images on Mac OS X.</li>
        <li>Fixed AVD screen capture issues when using GPU emulation.</li>
        <li>Fixed memory leaks in emulator system.</li>
      </ul>
    </dd>
  </div>
</div>


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

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

    <dl>
    <dt>Dependencies:</dt>

    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 19 or later.</li>
      </ul>
    </dd>

    <dt>General Notes:</dt>
    <dd>
      <ul>
        <li>Fixed issue with creating projects and activities from templates using Eclipse ADT.</li>
      </ul>
    </dd>
  </div>
</div>


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

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

    <dl>
    <dt>Dependencies:</dt>

    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 19 or later.</li>
      </ul>
    </dd>

    <dt>General Notes:</dt>
    <dd>
      <ul>
        <li>Fixed Java detection issue on 32-bit Windows systems.</li>
      </ul>
    </dd>
  </div>
</div>


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

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

    <dl>
    <dt>Dependencies:</dt>

    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 19 or later.</li>
      </ul>
    </dd>

    <dt>General Notes:</dt>
    <dd>
      <ul>
        <li>Added support for Android Studio 1.0 and emulator enhancements.</li>
      </ul>
    </dd>
  </div>
</div>



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

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

    <dl>
    <dt>Dependencies:</dt>

    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 19 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
          designed for use with ADT 23.0.4 and later. If you haven't already, update your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 23.0.4.</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>Fixed Windows 32-bit compilation issue.</li>
      </ul>
    </dd>
  </div>
</div>


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

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

    <dl>
    <dt>Dependencies:</dt>

    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 19 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
          designed for use with ADT 23.0.4 and later. If you haven't already, update your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 23.0.4.</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>Fixed duplicate devices in AVD for Wear and TV.</li>
      </ul>
    </dd>
  </div>
</div>


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

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

    <dl>
    <dt>Dependencies:</dt>

    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 19 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
          designed for use with ADT 23.0.2 and later. If you haven't already, update your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 23.0.2.</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 ProGuard <code>.bat</code> files that were missing.</li>
        <li>Added the <code>proguard-android.txt</code> file that was missing.</li>
        <li>Renamed the <code>lombok-ast-0.2.2.jar</code> file to <code>lombok-ast.jar</code>,
            which should allow running lint from the command line.</li>
      </ul>
    </dd>
  </div>
</div>

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

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

    <dl>
    <dt>Dependencies:</dt>

    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 19 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
          designed for use with ADT 23.0.0 and later. If you haven't already, update your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 23.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 the Android Wear tools and system images.</li>
      </ul>
    </dd>
  </div>
</div>

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

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

    <dl>
    <dt>Dependencies:</dt>

    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 18 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
          designed for use with ADT 22.6.3 and later. If you haven't already, update your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.6.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>General Notes:</dt>
    <dd>
      <ul>
        <li>Fixed an issue with the x86 emulator that caused Google Maps to crash.
            (<a href="http://b.android.com/69385">Issue 69385</a>)</li>
        <li>Fixed minor OpenGL issues.</li>
      </ul>
    </dd>
  </div>
</div>

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

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

    <dl>
    <dt>Dependencies:</dt>

    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 18 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
          designed for use with ADT 22.6.3 and later. If you haven't already, update your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.6.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>General Notes:</dt>
    <dd>
      <ul>
        <li>Fixed a problem where the AVD manager allowed creating Android Wear virtual devices
            with a target API Level lower than 19.</li>
        <li>Fixed the description of Android Wear system images in the SDK Manager.</li>
      </ul>
    </dd>

    <dt>Known Issues:</dt>
    <dd>
      <p>When you create an Android Wear virtual device in the AVD manager, a target API Level
         lower than 19 may be selected by default. Make sure you select the target API Level 19
         when creating Android Wear virtual devices.</p>
    </dd>
  </div>
</div>

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

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

    <dl>
    <dt>Dependencies:</dt>

    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 18 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
          designed for use with ADT 22.6.2 and later. If you haven't already, update your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.6.2.</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>Fixed a problem where the SDK Manager threw a <code>NullPointerException</code> after
            removing a virtual device that was created using the Android Wear
            system image. (<a href="http://b.android.com/67588">Issue 67588</a>)</li>
        <li>Fixed a problem with Nexus 5 Android virtual devices created from the command line
            where the SD card file system was read-only.</li>
      </ul>
    </dd>
  </div>
</div>

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

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

    <dl>
    <dt>Dependencies:</dt>

    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 18 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
          designed for use with ADT 22.6.1 and later. If you haven't already, update your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.6.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>General Notes:</dt>
    <dd>
      <ul>
        <li>Fixed a problem where the Android Virtual Device Manager could not create new virtual
            devices. (<a href="http://b.android.com/66661">Issue 66661</a>)</li>
        <li><p>Fixed a problem with virtual devices created using ADT 22.3 or earlier.</p>
            <p>If you created an Android Virtual Device using ADT 22.3 or earlier, the
            AVD may be listed as <em>broken</em> in the AVD Manager in 22.6.1. To fix
            this problem, select the virtual device on the AVD Manager and click
            <strong>Repair</strong>.</p>
        </li>
        <li>Fixed a problem with the command line tools when creating virtual devices.
            (<a href="http://b.android.com/66740">Issue 66740</a>)</li>
        <li>Fixed a problem with the command line <code>lint</code> script.</li>
      </ul>
    </dd>

    <dt>Known Issues:</dt>
    <dd>
      <p>When you create an Android virtual device using the Nexus 5 device definition,
         you must enable the <em>Use Host GPU</em> option, otherwise the virtual device
         will not start.</p>
    </dd>
  </div>
</div>

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

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

    <dl>
    <dt>Dependencies:</dt>
    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 18 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
          designed for use with ADT 22.6.0 and later. If you haven't already, update your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.6.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><p>The command line <code>lint</code> script (<code>tools\lint.bat</code> on
            Windows platforms, <code>tools/lint</code> on other platforms) and the
            <code>lint</code> target on <code>ant</code> builds fail with the following
            error:</p>
            <p><code>Exception in thread "main" java.lang.NoClassDefFoundError:
            lombok/ast/AstVisitor</code></p>
            <p>As a temporary workaround, rename the file
              <code>tools\lib\lombok-ast-0.2.2.jar</code> to
            <code>tools\lib\lombok-ast.jar</code>.
            We will release an updated version of the tools with a fix for
            this issue as soon as possible.</p>
          </li>
        <li>Added support for Java 7 language features like multi-catch, try-with-resources,
            and the diamond operator. These features require version 19 or higher
            of the Build Tools. Try-with-resources requires <code>minSdkVersion</code>
            19; the rest of the new language features require
            <code>minSdkVersion</code> 8 or higher.</li>
        <li>Added new lint checks:
          <ul>
            <li>Security:
              <ul>
                <li>Look for code potentially affected by a <code>SecureRandom</code>
                    vulnerability.</li>
                <li>Check that calls to <code>checkPermission</code> use the return value.</li>
              </ul>
            </li>
            <li>Check that production builds do not use mock location providers.</li>
            <li>Look for manifest values that are overwritten by values from Gradle build
                scripts.</li>
          </ul>
        </li>
        <li>Fixed a number of minor issues in the SDK and build system.</li>
        <li>Emulator:
          <ul>
            <li>Fixed a problem with the emulator shutting down immediately for Android 1.5
                on the Nexus One and Nexus S devices.
                (<a href="http://b.android.com/64945">Issue 64945</a>)</li>
            <li>Fixed a problem with port numbers longer than four digits.
                (<a href="http://b.android.com/60024">Issue 60024</a>)</li>
            <li>Fixed battery errors for the Nexus One and Nexus S devices.
                (<a href="http://b.android.com/39959">Issue 39959</a>)</li>
            <li>Fixed a problem with paths or arguments that contain
                spaces on Windows platforms.
                (<a href="http://b.android.com/18317">Issue 18317</a>)</li>
            <li>Fixed a problem with long path values on Windows platforms.
                (<a href="http://b.android.com/33336">Issue 33336</a>)</li>
            <li>Fixed a problem with the {@code -snapshot-list} command line
                option on 64-bit systems.
                (<a href="http://b.android.com/34233">Issue 34233</a>)</li>
          </ul>
        </li>
        <li>Fixed an issue with RenderScript support. Using RenderScript support mode
          now requires version 19.0.3 of the Build Tools.</li>
      </ul>
    </dd>
    </dl>
  </div>
</div>

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

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

    <dl>
    <dt>Dependencies:</dt>
    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 18 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
          designed for use with ADT 22.3.0 and later. If you haven't already, update your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.3.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 support for Android 4.4 (API level 19).</li>
        <li>Fixed a number of minor bugs in the SDK and build system.</li>
      </ul>
    </dd>
    </dl>
  </div>
</div>

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

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

    <dl>
    <dt>Dependencies:</dt>
    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 16 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
          designed for use with ADT 22.2.1 and later. If you haven't already, update your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.2.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>General Notes:</dt>
    <dd>
      <ul>
        <li>Fixed problem with templates that causes the new project wizard to hang.
         (<a href="http://b.android.com/60149">Issue 60149</a>)</li>
        <li>Fixed crash when using the lint command line tool because of mis-matched library
          dependency. (<a href="http://b.android.com/60190">Issue 60190</a>)</li>
      </ul>
    </dd>
    </dl>
  </div>
</div>

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

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

    <dl>
    <dt>Dependencies:</dt>
    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 16 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
          designed for use with ADT 22.2 and later. If you haven't already, update your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.2.</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 build tools to allow use of RenderScript on older versions of Android
         using new features in the
         <a href="{@docRoot}tools/support-library/features.html#v8">Support Library</a>.</li>
        <li>Moved the Systrace tool to the {@code <sdk>/platform-tools/} directory. </li>
        <li>Modified <a href="{@docRoot}tools/help/gltracer.html">Tracer for OpenGL ES</a> to
          support OpenGL ES 3.0.</li>
        <li>Lint
          <ul>
            <li>Fixed problem with lint not detecting custom namespaces.
              (<a href="http://b.android.com/55673">Issue 55673</a>)</li>
            <li>Fixed problem with the XML report including invalid characters.
              (<a href="http://b.android.com/56205">Issue 56205</a>)</li>
            <li>Fixed command-line execution of lint to work in headless mode to support execution
              by build servers. (<a href="http://b.android.com/55820">Issue 55820</a>)</li>
          </ul>
        </li>
        <li>Improved support for path names with spaces in the Windows command-line tools.</li>
      </ul>
    </dd>
    </dl>
  </div>
</div>


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

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

    <dl>
    <dt>Dependencies:</dt>
    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 16 or later.</li>
        <li>If you are developing in Eclipse with the
          <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a>, note that this version of
          SDK Tools is designed for use with ADT 22.0.5 and later. If you haven't already, update
          ADT to 22.0.5.</li>
        <li>If you are using <a href="{@docRoot}sdk/installing/studio.html">Android Studio</a>,
          note that this version of the SDK Tools is designed to work with Android Studio
          0.2.x and later.</li>
        <li>If you are developing without an integrated development environment (IDE), 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>Fixed RenderScript compilation issue for Windows platforms with ant.</li>
        <li>Updated <a href="{@docRoot}tools/help/systrace.html">Systrace</a> to work with the
          Android 4.3 platform image.</li>
        <li>Fixed packaging of RenderScript compiler.</li>
        <li>Build tools 18.0.0 is obsolete and 18.0.1 should be used instead.</li>
      </ul>
    </dd>
    </dl>
  </div>
</div>


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

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

    <dl>
    <dt>Dependencies:</dt>
    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 16 or later.</li>
        <li>If you are developing in Eclipse with the
          <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a>, note that this version of
          SDK Tools is designed for use with ADT 22.0.4 and later. If you haven't already, update
          ADT to 22.0.4.</li>
        <li>If you are using <a href="{@docRoot}sdk/installing/studio.html">Android Studio</a>,
          note that this version of the SDK Tools is designed to work with Android Studio
          0.2.x and later.</li>
        <li>If you are developing without an integrated development environment (IDE), 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>Fixed problem with compiling RenderScript code.</li>
      </ul>
    </dd>
    </dl>
  </div>
</div>


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

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

    <dl>
    <dt>Dependencies:</dt>
    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 16 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
          designed for use with ADT 22.0.1 and later. If you haven't already, update your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.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>General Notes:</dt>
    <dd>
      <ul>
        <li>Fixed issue with Lint ServiceCast check and fully qualified class names.
          (<a href="http://code.google.com/p/android/issues/detail?id=55403">Issue 55403</a>)</li>
        <li>Fixed crash issue with Lint ArraySizeDetector check.
          (<a href="http://code.google.com/p/android/issues/detail?id=54887">Issue 54887</a>)</li>
        <li>Fixed a problem with the monkeyrunner tool failing to import standard python classes.
          (<a href="http://code.google.com/p/android/issues/detail?id=55632">Issue 55632</a>)</li>
        <li>Fixed a problem with DDMS monitor not opening heap and network statistics views due to
          a class not found exception.
          (<a href="http://code.google.com/p/android/issues/detail?id=55394">Issue 55394</a>)</li>
      </ul>

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


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

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

    <dl>
    <dt>Dependencies:</dt>
    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 16 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
          designed for use with ADT 22.0.0 and later. If you haven't already, update your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.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>Changed the structure of the SDK by adding a new build tool SDK Component, which is
          based on the existing platform-tools component. This change decouples the build tools
          versions from the IDE versions, allowing updates to the tools without requiring an
          IDE update.</li>
        <li>Updated tools to allow libraries to share the same package name as the applications
          that use them.</li>
        <li>Updated {@code draw9patch} tool to allow easier changing of markers.</li>
        <li>Added new Lint checks, including checks for layout consistency,
          {@link android.widget.RelativeLayout} siblings, {@link android.os.Parcel} creator,
          JavaScript interfaces, {@link android.app.Service} casting, quantity strings, manifest
          typos, orientation tags in layouts, overlapping names for 9-patches and images, and class
          existence checks.</li>
        <li>Updated build tools to sign applications using the BouncyCastle library instead of
          relying on Sun JVM specific APIs.</li>
        <li>Released some of the Android tools into <a href="http://www.maven.org">Maven
          Central</a> to assist third-party tool developers. The following tools are available
          in the repository: {@code manifest-merger}, {@code common/sdk_common}, {@code ddmlib},
          {@code dvlib}, {@code layoutlib_api}, {@code sdklib}, and {@code lint}.</li>
      </ul>
    </dd>

    <dt>Bug fixes:</dt>
    <dd>
      <ul>
        <li>Fixed a number of minor bugs in the SDK and build system.</li>
    </ul>
    </dd>
    </dl>
  </div>
</div>

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

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

    <dl>
    <dt>Dependencies:</dt>
    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 16 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
          designed for use with ADT 21.1.0 and later. If you haven't already, update your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 21.1.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>Improved error reporting in {@code dx} when dex merging fails in the build
          system.</li>
        <li>Added more than 15 new Lint checks, including checks for overriding older APIs, XML
          resource problems, graphic asset issues and manifest tags.</li>
        <li>Added new aapt feature to compile resources.</li>
      </ul>
    </dd>
    </dl>
  </div>
</div>

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

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

    <dl>
    <dt>Dependencies:</dt>
    <dd>
      <ul>
        <li>Android SDK Platform-tools revision 16 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
          designed for use with ADT 21.0.1 and later. If you haven't already, update your
        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 21.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>General Notes:</dt>
    <dd>
      <ul>
        <li>Build
          <ul>
            <li>Updated build to detect and handle package name conflicts between an application and
              the libraries it depends on. Libraries cannot share package names unless all of them
              share the same package name.
              (<a href="http://code.google.com/p/android/issues/detail?id=40152">Issue 40152</a>,
               <a href="http://code.google.com/p/android/issues/detail?id=40273">Issue 40273</a>)
            </li>
            <li>Added a flag to disable dex merging to deal with cases where merging could generate
              a broken dex file. If this happens to your project, add the following setting to your
              {@code project.properties} file: {@code dex.disable.merger=true} This setting
              causes the build system to revert to the older, slower dex processing that does not
              pre-dex libraries.</li>
          </ul>
        </li>

        <li>RenderScript
          <ul>
            <li>Added support for
              <a href="{@docRoot}guide/topics/renderscript/compute.html#filterscript">Filterscript</a>
              compilation.</li>
            <li>Added new project setting to control the RenderScript compilation target separately
              from an Android project. Adding the following line to a {@code project.properties}
              file causes RenderScript code to be compiled for Android API Level 17, while the
              containing application can target a different (lower) API level:
              <pre>renderscript.target = 17</pre>
              Previously, the RenderScript compilation target was tied to the
              {@code android:minSdkVersion} setting in the manifest.
              (<a href="http://code.google.com/p/android/issues/detail?id=40487">Issue 40487</a>)
            </li>
          </ul>
        </li>

      </ul>
    </dd>


    <dt>Bug fixes:</dt>
    <dd>
      <ul>
        <li>Lint
          <ul>
            <li>Corrected check for {@code 0px} values in style XML elements.
              (<a href="http://code.google.com/p/android/issues/detail?id=39601">Issue 39601</a>)
              </li>
            <li>Fixed incorrect flagging of formatting strings.
              (<a href="http://code.google.com/p/android/issues/detail?id=39758">Issue 39758</a>)
              </li>
            <li>Fixed problem where {@code tools:ignore} directive in the manifest file was ignored
              by the Lint tool.
              (<a href="http://code.google.com/p/android/issues/detail?id=40136">Issue 40136</a>)
              </li>
            <li>Fixed problem with flagging a wakelock release inside a conditional.
              (<a href="http://code.google.com/p/android/issues/detail?id=40424">Issue 40424</a>)
              </li>
            <li>Fixed incorrect reporting of missing {@code layout_width} and {@code layout_height}
              XML fields.
              (<a href="http://code.google.com/p/android/issues/detail?id=38958">Issue 38958</a>)
              </li>
            <li>Fixed handling of custom namespace attributes.</li>
            <li>Added fixes for filtering out library project warnings.</li>
            <li>Removed warnings about missing classes before a build.</li>
          </ul>
        </li>

        <li>Fixed problem with UI Automator Viewer execution script where Android tools directory
          is not set.</li>
        <li>Fixed problem with the SDK Manager so that it auto-selects the most recently released
          platform on startup.</li>
        <li>Fixed Java finding script to look for the currently supported version of Java (1.6 or
          higher).</li>
        <li>Fixed the SDK Manager launcher in the ADT bundle so that it can properly launch the
          SDK Manager program when it is placed at the root of the bundle.</li>
      </ul>
    </dd>
    </dl>
  </div>
</div>

<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/styles/disclosure_down.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 16 or later.</li>
        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools 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>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/styles/disclosure_down.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 this version of SDK Tools 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/styles/disclosure_down.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 this version of SDK Tools 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/styles/disclosure_down.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 this version of SDK Tools 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/styles/disclosure_down.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 this version of SDK Tools 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/styles/disclosure_down.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 this version of SDK Tools 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/styles/disclosure_down.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 this version of SDK Tools 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/styles/disclosure_down.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 this version of SDK Tools 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/styles/disclosure_down.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 this version of SDK Tools 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/styles/disclosure_down.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 this version of SDK Tools 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/styles/disclosure_down.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 this version of SDK Tools 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/styles/disclosure_down.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 this version of SDK Tools 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/styles/disclosure_down.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 this version of SDK Tools 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/styles/disclosure_down.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 this version of SDK Tools 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/styles/disclosure_down.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 this version of SDK Tools 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/styles/disclosure_down.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 this version of SDK Tools 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/styles/disclosure_down.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 this version of SDK Tools 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/styles/disclosure_down.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 this version of SDK Tools 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/styles/disclosure_down.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 this version of SDK Tools 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/styles/disclosure_down.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>This version of SDK Tools 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/styles/disclosure_down.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>This version of SDK Tools 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>
