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 and AVD 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/adding-components.html#UpdatingComponents">Updating SDK
Components</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
and AVD Manager. </p>

<script type="text/javascript">
function toggleDiv(link) {
  var toggleable = $(link).parent();
  if (toggleable.hasClass("closed")) {
    //$(".toggleme", toggleable).slideDown("fast");
    toggleable.removeClass("closed");
    toggleable.addClass("open");
    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot + "assets/images/triangle-opened.png"));
  } else {
    //$(".toggleme", toggleable).slideUp("fast");
    toggleable.removeClass("open");
    toggleable.addClass("closed");
    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot + "assets/images/triangle-closed.png"));
  }
  return false;
}
</script>
<style>
.toggleable {
padding: .25em 1em;
}
.toggleme {
  padding: 1em 1em 0 2em;
  line-height:1em;
}
.toggleable a {
  text-decoration:none;
}
.toggleme a {
  text-decoration:underline;
}
.toggleable.closed .toggleme {
  display:none;
}
#jd-content .toggle-img {
  margin:0;
}
</style>

<div class="toggleable opened">
  <a href="#" onclick="return toggleDiv(this)">
        <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px" width="9px" />
SDK Tools, Revision 7</a> <em>(September 2010)</em>
  <div class="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>
</li>
</ul>
</dd>
</dl>
 </div>
</div>

<div class="toggleable closed">
  <a href="#" onclick="return toggleDiv(this)">
        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
SDK Tools, Revision 6</a> <em>(May 2010)</em>
  <div class="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}guide/developing/other-ide.html#libraryProject">Developing 
in Other IDEs</a> document.</p>
<p>If you are developing in Eclipse, <a href="eclipse-adt.html">ADT 0.9.7</a>
provides the equivalent library project support.</p>
</dd>
</dl>
 </div>
</div>

<div class="toggleable closed">
  <a href="#" onclick="return toggleDiv(this)">
        <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px" width="9px" />
SDK Tools, Revision 5</a> <em>(March 2010)</em>
  <div class="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="toggleable closed">
  <a href="#" onclick="return toggleDiv(this)">
        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
SDK Tools, Revision 4</a> <em>(December 2009)</em>
  <div class="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="toggleable closed">
  <a href="#" onclick="return toggleDiv(this)">
        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
SDK Tools, Revision 3</a> <em>(October 2009)</em>
  <div class="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 appplications (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="/guide/developing/tools/layoutopt.html">layoutopt</a>.</p>
</dd>
</dl>
 </div>
</div>
