page.title=Android Studio Release Notes

@jd:body


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

  <h2>See also</h2>
  <ol>
    <li><a href="{@docRoot}sdk/installing/index.html">Installing Android Studio</a></li>
  </ol>

</div>
</div>


<p>Android Studio is the official IDE for Android development, and with a single download includes
everything you need to begin developing Android apps:</p>

<ul>
<li>IntelliJ IDE + Android Studio plugin</li>
<li>Android SDK Tools</li>
<li>Android Platform-tools</li>
<li>A version of the Android platform</li>
<li>A version of the Android system image for the emulator</li>
</ul>

<p>For an introduction to Android Studio, read the
<a href="{@docRoot}tools/studio/index.html">Android Studio</a> guide.</p>

<p>Periodic updates are pushed to Android Studio without requiring you to update your Android
project. To manually check for updates, select <strong>Help > Check for updates</strong> (on Mac,
select <strong>Android Studio > Check for updates</strong>).</p>


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

<p>The sections below provide notes about successive releases of
Android Studio, as denoted by revision number. </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=""/>Android Studio v1.2.0</a> <em>(April 2015)</em>
  </p>

  <div class="toggle-content-toggleme">
    <p>Various fixes and enhancements:</p>
    <ul>
      <li>Updated the Android runtime window to include the
        <a href="{@docRoot}tools/studio/index.html#memory-monitor">Memory Monitor</a> tool
        and added a tab for CPU performance monitoring.</li>
      <li>Added a <em>Captures</em> tab in the left margin to display the captured memory and CPU
        performance data files, such as CPU method tracking and memory heap snapshots.</li>
      <li>Expanded <a href="{@docRoot}tools/debugging/annotations.html">annotation</a>
          support with additional metadata annotations and inferred nullability. </li>
      <li>Enhanced the Translations Editor with additional support for Best Current Practice
          (BCP) 47, which uses 3-letter language and region codes.</li>
      <li>Integrated IntelliJ 14 and 14.1 features for improved code analysis and performance:</li>
         <ul>
          <li>Enhanced debugging to show inline values for variables and referring objects,
            as well as perform inline evaluation of lambda and operator expressions. </li>
          <li>Added code style detection for tab and indent sizes. </li>
          <li>Added scratch files for code experiments and prototyping without project files.</li>
          <li>Added the simultaneous insertion of opening and closing tags in HTML and XML files.</li>
          <li>Added a built-in Java class decompiler so you can look at what’s inside a library
            for which the source code is not available. </li>
         </ul>
         <p>See
         <a class="external-link" href="https://www.jetbrains.com/idea/whatsnew">What's New in IntelliJ</a>
         for a complete description of the new features and enhancements.</p>
       </li>
      <li>Added additional <a href="{@docRoot}tools/studio/index.html#project-view">Project Views</a>
        for <em>Scratches</em>, <em>Project Files</em>, <em>Problems</em>, <em>Production</em>,
        and <em>Tests</em> to enhance project management and access. </li>
      <li>Enhanced the <strong>File &gt; Settings</strong> menu and dialogs for improved settings
          access and management. </li>
      <li>Added support for high-density displays for Windows and Linux. </li>
      <li>Added support for 280 dpi resources in the <code>res/drawable-280dpi/</code> folder.
     </ul>
    </ul>
  </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=""/>Android Studio v1.1.0</a> <em>(February 2015)</em>
  </p>

  <div class="toggle-content-toggleme">
    <p>Various fixes and enhancements:</p>
    <ul>
      <li>Added support for the <a href="{@docRoot}design/wear/index.html">Android Wear</a> watch
      template. </li>
      <li>Modified new project and module creation to include
      <a href="{@docRoot}tools/projects/index.html#mipmap"><code>res/mipmap</code></a> folders for
      density-specific launcher icons. These <code>res/mipmap</code> folders replace the
      <a href="{@docRoot}guide/topics/resources/drawable-resource.html"><code>res/drawable</code></a>
      folders for launcher icons.  </li>
      <li>Updated launcher icons to have a
      <a href="{@docRoot}design/material/index.html">Material Design</a> look and added an
      <code>xxxhdpi</code> launcher icon. </li>
      <li>Added and enhanced <a href="{@docRoot}tools/help/lint.html"><code>lint</code></a> checks
      for region and language combinations, launcher icons, resource names, and other common
      code problems.</li>
      <li>Added support for Best Current Practice (BCP) language tag 47.  </li>
    </ul>
  </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=""/>Android Studio v1.0.1</a> <em>(December 2014)</em>
  </p>

  <div class="toggle-content-toggleme">
    <p>Various fixes and enhancements:</p>
    <ul>
      <li>Fixed AVD Manager and <strong>device.xml</strong> file lock issue. </li>
      <li>Fixed the emulator log on Windows systems. </li>
      <li>Fixed issue with creating AVDs with Android Studio and Android SDK installed on different
      drives on Windows systems.</li>
      <li>Sets the default update channel for new downloads to <strong>Stable</strong>. If you
      installed the 1.0.0 version of Android Studio and would like stable, production-ready version
      updates, use <strong>File > Settings > Updates</strong> to change to the <strong>Stable</strong>
      update channel.
      </li>
    </ul>
  </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=""/>Android Studio v1.0</a> <em>(December 2014)</em>
  </p>

  <div class="toggle-content-toggleme">
    <p>Initial release of Android Studio.</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=""/>Android Studio v0.8.14</a> <em>(October 2014)</em>
  </p>

  <div class="toggle-content-toggleme">
    <p>See
    <a href="http://tools.android.com/recent/androidstudio0814inbetachannel">tools.android.com</a>
    for a full list of changes.</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=""/>Android Studio v0.8.6</a> <em>(August 2014)</em>
  </p>

  <div class="toggle-content-toggleme">
    <p>See <a href="http://tools.android.com/recent">tools.android.com</a> for a full list of changes.</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=""/>Android Studio v0.8.0</a> <em>(June 2014)</em>
  </p>

  <div class="toggle-content-toggleme">
    <p>Added support for Android Wear projects.</p>
    <p>See <a href="http://tools.android.com/recent">tools.android.com</a> for a full list of changes.</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=""/>Android Studio v0.5.2</a> <em>(May 2014)</em>
  </p>

  <div class="toggle-content-toggleme">
  <ul>
    <li>See <a href="http://tools.android.com/recent">tools.android.com</a> for a full list of changes.</li>
  </ul>
  </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=""/>Android Studio v0.4.6</a> <em>(March 2014)</em>
  </p>

  <div class="toggle-content-toggleme">
  <ul>
    <li>See <a href="http://tools.android.com/recent">tools.android.com</a> for a full list of changes.</li>
  </ul>
  </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=""/>Android Studio v0.4.2</a> <em>(Jan 2014)</em>
  </p>

  <div class="toggle-content-toggleme">
  <ul>
    <li>See <a href="http://tools.android.com/recent">tools.android.com</a> for a full list of changes.</li>
  </ul>
  </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=""/>Android Studio v0.3.2</a> <em>(Oct 2013)</em>
  </p>

  <div class="toggle-content-toggleme">
  <ul>
    <li>See <a href="http://tools.android.com/recent">tools.android.com</a> for a full list of changes.</li>
  </ul>
  </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=""/>Android Studio v0.2.x</a> <em>(July 2013)</em>
  </p>

  <div class="toggle-content-toggleme">
  <ul>
    <li>Merged in the latest IntelliJ codebase changes. Includes fixes for issues reported by Studio users such as tweaks to Linux font sizes and font rendering.</li>
    <li>Android Gradle plug-in updated to 0.5.0.
      <p class="caution"><strong>Caution:</strong> This new version is not backwards compatible.
      When opening a project that uses an older version of the plug-in, Studio will show an error
      stating <strong>Gradle &lt;project_name&gt; project refresh failed.</strong></p>
      <p>The updated Gradle plug-in includes the following changes:</p>
      <ul>
        <li>Fixed IDE model to contain the output file even if it's customized through the DSL. Also
        fixed the DSL to get/set the output file on the variant object so that it's not necessary to
        use <code>variant.packageApplication or variant.zipAlign</code></li>
        <li>Fixed dependency resolution so that we resolved the combination of (default config,
        build types, flavor(s)) together instead of separately.</li>
        <li>Fixed dependency for tests of library project to properly include all the dependencies
        of the library itself.</li>
        <li>Fixed case where two dependencies have the same leaf name.</li>
        <li>Fixed issue where Proguard rules file cannot be applied on flavors.</li>
      </ul>
      <p>All Gradle plugin release notes are available are here: <a href=
      "http://tools.android.com/tech-docs/new-build-system"
      >http://tools.android.com/tech-docs/new-build-system</a>.</p>
    </li>
    <li>Gradle errors from aapt no longer point to merged output files in the build/ folder, they
    point back to the real source locations.</li>
    <li>Parallel Builds. It's now possible to use Gradle's parallel builds. Please be aware that
    parallel builds are in "incubation" (see <a
    href="http://www.gradle.org/docs/current/userguide/gradle_command_line.html">Gradle's
    documentation</a>.) This feature is off by default. To enable it, go to
    <strong>Preferences</strong> &gt; <strong>Compiler</strong> and check the box <em>Compile
    independent modules in parallel</em>.</li>
    <li>Further work on the new resource repository used for layout rendering, resource
    folding in the editor, and more:
      <ul>
      <li>Basic support for .aar library dependencies (e.g. using a library without a local copy of
      the sources). Still not working for resource XML validation and navigation in source editors.
      </li>
      <li>Cycle detection in resource references.</li>
      <li>Quick Documentation (F1), which can show all translations of the string under the caret,
      will now also show all resource overlays from the various Gradle flavors and build types, as
      well as libraries. They are listed in reverse resource overlay order, with strikethrough on
      the versions of the string that are masked.</li>
      <li>Fixes to handle updating the merged resources when the set of module dependencies
      change.</li>
      <li>XML rendering fixes to properly handle character entity declarations and XML and unicode
      escapes.</li>
      </ul>
    <li>Save screenshot support for the layout preview and layout editor windows.</li>
    <li>Template bug fixes.</li>
    <li>Lint bug fixes.</li>
    <li>Various fixes for crash reports. Thank you, and keep filing crash reports!</li>
  </ul>
  </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=""/>Android Studio v0.1.x</a> <em>(May 2013)</em>
  </p>

  <div class="toggle-content-toggleme">
  <ul>
    <li>Various bug fixes, including a fix for a common Windows installation issue.
  </ul>
  </div>
</div>

<p>&nbsp;</p>


<h2 id="Troubleshooting">Troubleshooting</h2>

<p>If you encounter problems in Android Studio, look at the following page
for possible resolutions to known issues: <a href="http://tools.android.com/knownissues"
>http://tools.android.com/knownissues</a>.</p>



</div><!-- end main content -->




</div><!-- end relative position wrapper -->



