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 update</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/styles/disclosure_up.png" class="toggle-content-img"
      alt=""/>Android Studio v1.5.1</a> <em>(December 2015)</em>
  </p>
  <div class="toggle-content-toggleme">
    <p>Fixes and enhancements:</p>
    <ul>
    <li>Fixed a rendering failure issue in the Layout Editor.
      <a href="http://b.android.com/194612">Issue: 194612</a> </li>
    <li>Added the ability to vary <code>description</code> manifest attributes by configuration.
      <a href="http://b.android.com/194705">Issue: 194705</a>
    </li>
     <li>Improved the contrast of the Android Studio Darcula appearance theme in Vector Asset Studio.
      <a href="http://b.android.com/191819">Issue: 191819</a>
    </li>
    <li>Added <em>Help</em> button support to Vector Asset Studio.
    </li>
    <li>Added support for the <code>%</code> operator for data binding. <a href="http://b.android.com/194045">Issue: 194045</a>
      </li>
    <li>Fixed a case where launching an app for debugging resulted in the debugger connecting to the
      wrong device. <a href="http://b.android.com/195167">Issue: 195167</a>
    </li>
    <li>Fixed a null pointer exception that could occur when attempting to run an app in
      certain scenarios.
    </li>
  </ul>
  </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=""/>Android Studio v1.5.0</a> <em>(November 2015)</em>
  </p>
  <div class="toggle-content-toggleme">
    <p>Fixes and enhancements:</p>
    <ul>
    <li>Added new Memory Monitor analysis abilities to Android Monitor. When you view an HPROF file
      captured from this monitor, the display is now more helpful so you can more quickly locate
      problems, such as memory leaks. To use this monitor, click <strong>Android Monitor</strong> at
      the bottom of the main window. In Android Monitor, click the <strong>Memory</strong> tab. While
      the monitor is running, click the <strong>Dump Java Heap</strong> icon, and then click
      <strong>Captures</strong> in the main window and double-click the file to view it. Click
      <em>Capture Analysis</em> on the right. (The
      Android Device Monitor can't be running at the same time as Android Monitor.)</li>
    <li>Added new deep link and app link support. The Code Editor can automatically create an
      intent filter for deep linking in the <code>AndroidManifest.xml</code> file. It can also
      generate code to help you integrate with the
      <a href="http://developers.google.com/app-indexing/android/publish" class="external-link">App Indexing API</a>
      in an activity in a Java file. A deep link testing feature
      helps you verify that a specified deep link can launch an app. In the <strong>General</strong>
      tab of the <em>Run/Debug Configurations</em> dialog, you can specify deep link launch
      options. You can also test App Indexing API calls in an activity by using the Android Monitor
      <strong>logcat</strong> display. The Android <code>lint</code> tool now has warnings for
      certain issues involving deep links and the App Indexing API.
    </li>
     <li>Added the ability to use short names when code-completing custom views in the Code Editor.
    </li>
    <li>Added support for more {@link android.graphics.drawable.VectorDrawable} elements to
      <a href="{@docRoot}tools/help/vector-asset-studio.html">Vector Asset Studio</a>
      for backward-compatibility. Vector Asset Studio can use these elements to convert vector
      drawables into PNG raster images to use with Android 4.4 (API level 20) and lower.
    </li>
    <li>Added new <code>lint</code> checks for Android TV and Android Auto to give you
      immediate, actionable feedback in Android Studio, along with several quick fixes. For example,
      for Android TV, it can report and provide a quick fix for permissions, unsupported hardware,
      <code>uses-feature</code> element, and missing banner issues. For Android Auto, it can
      validate the correct usage in the descriptor file referred from your
      <code>AndroidManifest.xml</code> file, report if there isn't an intent filter for the
      <code>MediaBrowserService</code> class, and identify certain voice actions issues.
      </li>
    <li>Added new <code>lint</code> checks for insecure broadcast receivers,
    <code>SSLCertificateSocketFactory</code> and <code>HostnameVerifier</code> class uses, and
    <code>File.setReadable()</code> and <code>File.setWritable()</code> calls. It also detects
    invalid manifest resource lookups, especially for resources that vary by configuration.
    </li>
    <li>Fixed a number of stability issues.
    </li>
  </ul>
  </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=""/>Android Studio v1.4.1</a> <em>(October 2015)</em>
  </p>
  <div class="toggle-content-toggleme">
    <p>Fixes and enhancements:</p>
  <ul>
    <li>Fixed a Gradle model caching issue that could lead to excessive Gradle syncing when the IDE
    was restarted.
    </li>
    <li>Fixed a native debugging deadlock issue.
    </li>
    <li>Fixed an issue blocking users of the Subversion 1.9 version control system.
    </li>
    <li>Fixed a <em>Device Chooser</em> dialog problem where after connecting a device that was
    unauthorized you could no longer select the emulator. <a href="http://b.android.com/189658">Issue: 189658</a>
    </li>
    <li>Fixed incorrect translation error reporting for locales that have a region qualifier and a
    translation in the region (but not in the base locale). <a href="http://b.android.com/188577">Issue: 188577</a>
    </li>
    <li>Fixed a deadlock issue in the Theme Editor related to its interaction with the Layout
    Editor. <a href="http://b.android.com/188070">Issue: 188070</a>
    </li>
    <li>Fixed a Theme Editor reload and edit conflict causing attributes to not properly update.
    <a href="http://b.android.com/187726">Issue: 187726</a>
    </li>
    <li>Improved Theme Editor performance.
    </li>
    <li>Fixed an issue where the <code>android:required</code> attribute was ignored in the manifest.
    <a href="http://b.android.com/187665">Issue: 187665</a>
    </li>
  </ul>
</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=""/>Android Studio v1.4.0</a> <em>(September 2015)</em>
  </p>
  <div class="toggle-content-toggleme">
    <p>Fixes and enhancements:</p>
  <ul>
    <li>Added the <a href="{@docRoot}tools/help/vector-asset-studio.html">Vector Asset Studio</a>
      tool for importing vector graphics, such as material icons
      and SVG files. To use this tool, in the Android view of the Project window, right-click the
      <strong>res</strong> folder and select <strong>New</strong> &gt; <strong>Vector Asset</strong>.
    </li>
    <li>Added new Android Monitor functions, GPU and Network. To use these monitors, click
      <strong>Android Monitor</strong> at the bottom of the main window. The Android Device Monitor
      can't be running at the same time as Android Monitor.
    </li>
    <li>Added an early preview of the new Theme Editor. To use this feature, select
      <strong>Tools</strong> &gt; <strong>Android</strong> &gt; <strong>Theme Editor</strong>.
    </li>
    <li>Updated the Android templates for the Design Support Library. Templates now include support
      for the Material Design specification, as well as the <code>appcompat</code> Support Library
      for backwards compatibility.
    </li>
  </ul>
  </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=""/>Android Studio v1.3.2</a> <em>(August 2015)</em>
  </p>
  <div class="toggle-content-toggleme">
    <p>Fixes and enhancements:</p>
    <ul>
      <li>Added support for Android 6.0 (API level 23), including new icons and AVD Manager
        support for creating devices with new screen densities.</li>
      <li>Fixed an exception that was occuring during update checks.
        <a href="http://b.android.com/183068">Issue: 183068</a></li>
      <li>Fixed problem where unresolved view coordinates could cause the layout editor to crash.
        <a href="http://b.android.com/178690">Issue: 178690</a></li>
      <li>Fixed issue with invalid resource type warnings.
        <a href="http://b.android.com/182433">Issue: 182433</a></li>
      <li>Fixed lint check that was incorrectly flagging resources as private.
        <a href="http://b.android.com/183120">Issue: 183120</a></li>
    </ul>
  </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=""/>Android Studio v1.3.1</a> <em>(August 2015)</em>
  </p>
  <div class="toggle-content-toggleme">
    <p>Fixes and enhancements:</p>
    <ul>
      <li>Fixed support for creating an Android Wear Android Virtual Device (AVD) on Windows. </li>
      <li>Updated the <em>Project Wizard</em> to use the entered project name.  </li>
      <li>Added support to allow the Android SDK to be stored in a read-only directory.  </li>
      <li>Updated Android Plugin for Gradle version to 1.3.0. </li>
      <li>Fixed issues with launching a debug session from the Android Debug Bridge (adb) Unix
        shell.  </li>
      <li>Fixed the Java package renaming message to show the correct package name. </li>
    </ul>
  </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=""/>Android Studio v1.3.0</a> <em>(July 2015)</em>
  </p>
  <div class="toggle-content-toggleme">
    <p>Fixes and enhancements:</p>
    <ul>
      <li>Added options to enable
        <a href="{@docRoot}tools/studio/studio-features.html#dev-services">developer services</a>,
        such as <a href="https://developers.google.com/admob/">AdMob</a> and
        <a href="{@docRoot}distribute/analyze/start.html">Analytics</a>, in your app from within
        Android Studio. </li>
      <li>Added additional <a href="{@docRoot}tools/debugging/annotations.html">annotations</a>,
        such as <code>@RequiresPermission</code>, <code>@CheckResults</code>, and
        <code>@MainThread</code>. </li>
      <li>Added the capability to generate Java heap dumps and analyze thread allocations from the
        <a href="{@docRoot}tools/studio/index.html#mem-cpu">Memory Monitor</a>. You can also
        convert Android-specific HPROF binary format files to standard HPROF format from within
        Android Studio. </li>
      <li>Integrated the <a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a>
        into Android Studio to simplify package and tools access and provide update notifications.
        <p class="note"><strong>Note:</strong> The standalone SDK Manager is still available from
        the command line, but is recommended for use only with standalone SDK
        installations. </p> </li>
      <li>Added the <code>finger</code> command in the emulator console to simulate
        <a href="{@docRoot}tools/studio/studio-features.html#finger-print">fingerprint</a>
        authentication.  </li>
      <li>Added a <code>&lt;public&gt;</code> resource declaration to designate library
         resources as
         <a href="{@docRoot}tools/studio/studio-features.html#private-res">public and private</a>
         resources.
         <p class="note"><strong>Note:</strong> Requires
         <a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plugin for Gradle</a>
         version 1.3 or higher. </p> </li>
      <li>Added <a href="{@docRoot}tools/data-binding/guide.html">data binding</a> support to
        create declarative layouts that bind your application logic to layout elements. </li>
      <li>Added support for a separate
        <a href="{@docRoot}tools/studio/studio-features.html#test-module">test APK module</a>
        to build test APKs in Android Studio.  </li>
      <li>Updated the <a href="{@docRoot}tools/help/avd-manager.html">AVD Manager</a> with HAXM
        optimizations and improved notifications. </li>
      <li>Added 64-bit ARM and MIPS emulator support for
        <a class="external-link" href="http://wiki.qemu.org/Main_Page">QEMU</a> 2.1. </li>
      <li>Simplified the resolution of <a href="{@docRoot}tools/help/lint.html">lint</a> warnings
        by adding quick fixes, such as the automatic generation of
        <a href="{@docRoot}reference/android/os/Parcelable.html">Parcelable</a>
        implementation.</li>
      <li>Added <a href="{@docRoot}sdk/installing/studio-tips.html#live-templates">live template</a>
        support for quick insertion of code snippets. </li>
    </ul>
  </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=""/>Android Studio v1.2.2</a> <em>(June 2015)</em>
  </p>
  <div class="toggle-content-toggleme">
    <p>Fixes and enhancements:</p>
    <ul>
      <li>Fixed build issues that were blocking builds from completing. </li>
    </ul>
  </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=""/>Android Studio v1.2.1</a> <em>(May 2015)</em>
  </p>
  <div class="toggle-content-toggleme">
    <p>Fixes and enhancements:</p>
    <ul>
      <li>Fixed minor performance and feature issues. </li>
    </ul>
  </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=""/>Android Studio v1.2.0</a> <em>(April 2015)</em>
  </p>

  <div class="toggle-content-toggleme">
    <p>Fixes and enhancements:</p>
    <ul>
      <li>Updated the Android runtime window to include the
        <a href="{@docRoot}tools/studio/index.html#mem-cpu">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/styles/disclosure_down.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/styles/disclosure_down.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/styles/disclosure_down.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/styles/disclosure_down.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/styles/disclosure_down.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/styles/disclosure_down.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/styles/disclosure_down.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/styles/disclosure_down.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/styles/disclosure_down.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/styles/disclosure_down.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/styles/disclosure_down.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/styles/disclosure_down.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 -->



