page.title=SDK Build Tools Release Notes

@jd:body

<div id="qv-wrapper">
<div id="qv">

  <h2>See Also</h2>
  <ol>
    <li><a href="{@docRoot}tools/building/index.html">Building and Running</a></li>
  </ol>

</div>
</div>

<p>Build Tools is a component of the Android SDK required for building Android
  application code. The latest version of these tools is included in the
  <a href="{@docRoot}sdk/index.html">SDK starter package</a> and installed in the
  <code>&lt;sdk&gt;/build-tools/</code> directory.</p>

<p>You should always keep your Build Tools component updated by downloading the latest version
  using the <a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>. By default,
  the Android SDK uses the most recent downloaded version of the Build Tools. If your projects
  depend on older versions of the Build Tools, the SDK Manager allows you to download and maintain
  separate versions of the tools for use with those projects.</p>

<p>To use a specific version of the Build Tools in your application project:</p>

<div class="toggle-content closed">
<p style="margin-top:5px"><a href="#" onclick="return toggleContent(this)">
  <img src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
  />Using Eclipse</a></p>

  <div class="toggle-content-toggleme">
  <ol>
    <li>In the root folder of your application project, find the {@code project.properties}
      file.</li>
    <li>Open the file and specify the Build Tools version by adding a {@code buildtools} property
      on a separate line:
<pre>
sdk.buildtools=17.0.0
</pre>
    </li>
  </ol>
  </div>
</div>

<div class="toggle-content closed">
<p style="margin-top:5px"><a href="#" onclick="return toggleContent(this)">
  <img src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
  />Using Android Studio</a></p>

  <div class="toggle-content-toggleme">
  <ol>
    <li>In the root folder of your application project, find the {@code build.gradle}
      file.</li>
    <li>Open the file and specify the Build Tools version by adding a {@code buildToolsVersion}
      property to the {@code android} section:
<pre>
android {
    ...
    buildToolsVersion "17.0.0"
    ...
}
</pre>
    </li>
  </ol>
  </div>
</div>


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

<p>The sections below provide notes about releases of the Build Tools. To determine which
revisions of the Build Tools are available in your SDK, refer to the <em>Installed Packages</em>
listing in the Android SDK Manager.</p>

<div class="toggle-content opened">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
      alt=""/>Build Tools, Revision 22.0.1</a> <em>(March 2015)</em>
  </p>
  <div class="toggle-content-toggleme">
    <p>Fixed compatibility issues with
    <a href="{@docRoot}guide/topics/renderscript/compute.html">RenderScript</a> kernels on
    Android 4.4 (API level 19) to Android 4.1 (API level 16) devices.</p>
  </div>
</div>


<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>Build Tools, Revision 22.0.0</a> <em>(March 2015)</em>
  </p>
  <div class="toggle-content-toggleme">
    <p>Added support for Android 5.1 (API level 22).</p>
  </div>
</div>


<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>Build Tools, Revision 21.1.2</a> <em>(February 2015)</em>
  </p>
  <div class="toggle-content-toggleme">
    <p>Fixed problem with building data layouts in 32-bit mode.</p>
  </div>
</div>


<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>Build Tools, Revision 21.1.1</a> <em>(November 2014)</em>
  </p>
  <div class="toggle-content-toggleme">
    <p>Fixed multidex script issues.</p>
  </div>
</div>


<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>Build Tools, Revision 21.1</a> <em>(October 2014)</em>
  </p>
  <div class="toggle-content-toggleme">
    <p>Added multidex file support for APKs and Jack support to address the 64K method reference
    limit.</p>
  </div>
</div>


<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>Build Tools, Revision 21.0.2</a> <em>(October 2014)</em>
  </p>
  <div class="toggle-content-toggleme">
    <p>Complete updates for Eclipse ADT to solve instability issues on Windows platforms.</p>
  </div>
</div>


<div class="toggle-content closed">
  <p><a href="#" onclick="return toggleContent(this)">
    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
      alt=""/>Build Tools, Revision 21.0.1</a> <em>(October 2014)</em>
  </p>
  <div class="toggle-content-toggleme">
    <p>Initial updates for Eclipse ADT on Windows. Please use Revision 21.0.2.</p>
  </div>
</div>


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

    <dl>
      <dt>General Notes:</dt>
      <dd>
        <ul>
          <li>Added support for Android 5.0 (API level 21).</li>
          <li>RenderScript now supports seamless 32/64-bit operation for API level 21 and higher.</li>
          <li>Fixed issue with the Gradle build system when using the JaCoCo plugin.
          (<a href="http://b.android.com/69174">Issue 69174</a>)</li>
          <li>Added an <em>input-list</em> option for use with long command lines on Windows.</li>
        </ul>
      </dd>
    </dl>
  </div>
</div>


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

    <dl>
      <dt>General Notes:</dt>
      <dd>
        <ul>
          <li>Added support for Android Wear.</li>
        </ul>
      </dd>
    </dl>

  </div>
</div>

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

    <dl>
      <dt>General Notes:</dt>
      <dd>
        <ul>
          <li>Added <code>zipalign</code> to the Build Tools.</li>
          <li>Modified <code>aapt</code> to ignore XML files that fail to compile.</li>
        </ul>
      </dd>
    </dl>

  </div>
</div>

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

    <p>Fixed an issue with RenderScript support.</p>

  </div>
</div>

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

    <dl>
      <dt>Fixed RenderScript build issues:</dt>
      <dd>
        <ul>
          <li>Fixed a problem with RenderScript bitcode encoding.
            (<a href="http://b.android.com/64775">Issue 64775</a>)
          </li>
          <li>Fixed a problem with RenderScript missing math symbols
            (<a href="http://b.android.com/64110">Issue 64110</a>)
          </li>
        </ul>
      </dd>
    </dl>
    <p></p>

  </div>
</div>



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

    <dl>
      <dt>Fixed miscellaneous build issues:</dt>
      <dd>
        <ul>
          <li>Fixed support for compiling RenderScript in NDK mode with Gradle.</li>
          <li>Fixed {@code BufferOverflowException} problem in the dx build.
            (<a href="http://b.android.com/61710">Issue 61710</a>)
          </li>
        </ul>
      </dd>
    </dl>
    <p></p>

  </div>
</div>

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

    <p>Added support for Android 4.4 (API level 19) build targets.</p>

  </div>
</div>

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

    <p>Fixed several minor build issues.</p>

  </div>
</div>

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

    <p>Fixed issue with RenderScript support mode.</p>

  </div>
</div>

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

    <p>Added support for Android 4.3 (API level 18) build targets.</p>

  </div>
</div>

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

    <p>Initial release.</p>

    <dl>
      <dt>General Notes:</dt>
      <dd>
        <ul>
          <li>Included support for Android 4.2 (API level 17) build targets.</li>
          <li>Decoupled the build-specific components of the Android SDK from the platform-tools
          component, so that the build tools can be updated independently of the integrated
          development environment (IDE) components.</li>
        </ul>
      </dd>
    </dl>

  </div>
</div>
