page.title=Install Android Studio
excludeFromSuggestions=true

page.tags=sdk tools

@jd:body

<style>
.instruction-select {
  float:right;
  background: #f7f7f7;
  padding: 15px;
  margin: -15px 0 20px 40px;
}
</style>

<div class="instruction-select">
<p><strong>Instructions for</strong></p>
<select id="instructions-option" onchange="showInstructions(this.value)" style="padding:4px">
  <option value="windows">Windows</option>
  <option value="mac">Mac</option>
  <option value="linux">Linux</option>
</select>
</div>

<p>Setting up Android Studio takes just a few clicks.</p>

<p>While the <a href="{@docRoot}sdk/index.html">Android Studio download</a>
completes, verify which version of the JDK you have:
open a command line and type <code>javac -version</code>. If the JDK
is not available or the version is lower than 1.8, download the <a href=
"http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html"
class="external-link">Java SE Development Kit 8</a>.</p>


<div id="system-windows" style="display:none">

<p>To install Android Studio on Windows, proceed as follows:</p>
<ol>
  <li>Launch the <code>.exe</code> file you downloaded.</li>
  <li>Follow the setup wizard to install Android Studio and any necessary SDK tools.

  <p>On some Windows systems, the launcher script does not find where the JDK is installed.
    If you encounter this problem,
    you need to set an environment variable indicating the correct location.</p>
    <p>Select <strong>Start menu > Computer > System Properties >
    Advanced System Properties</strong>. Then open <strong>Advanced tab > Environment
    Variables</strong> and add a new system variable <code>JAVA_HOME</code> that points to
    your JDK folder, for example <code>C:\Program Files\Java\jdk1.8.0_77</code>.</p>
  </p>
  </li>
</ol>

<p>That's it!
The following video shows each step of the recommended setup procedure.</p>

<video controls style="margin:20px 0" onclick="this.play()">
  <source src="https://storage.googleapis.com/androiddevelopers/videos/studio-install-windows.mp4" type="video/mp4">
</video>

<p>As new tools and other APIs become available, Android Studio tells you
with a pop-up, or you can check for updates by clicking <strong>Help &gt;
Check for Update</strong>.</p>


</div>
<!-- end windows -->



<!-- #### MAC INSTRUCTIONS #### -->

<div id="system-mac" style="display:none">

<p>There are, however, known stability issues in Android Studio on Mac
when using JDK 1.8. Until these issues are resolved, you can improve stability
by downgrading your JDK to an older version (but no lower than JDK 1.6).</p>

<p>To install Android Studio on your Mac, proceed as follows:</p>

<ol>
  <li>Launch the Android Studio DMG file.</li>
  <li>Drag and drop Android Studio into the Applications folder, then launch
    Android Studio.</li>
  <li>Select whether you want to import previous Android Studio settings,
    then click <strong>OK</strong>.</li>
  <li>The Android Studio Setup Wizard guides you though the rest of the
    setup, which includes downloading Android SDK components
    that are required for development.</li>
</ol>

<p>That's it!
The following video shows each step of the recommended setup procedure.</p>

<video controls style="margin:20px 0" onclick="this.play()">
  <source src="https://storage.googleapis.com/androiddevelopers/videos/studio-install-mac.mp4" type="video/mp4">
</video>

<p>
As new tools and other APIs become available, Android Studio tells you
with a pop-up, or you can check for updates by clicking <strong>Android Studio
&gt; Check for Updates</strong>.</p>

</div>
<!-- end mac -->



<!-- #### LINUX INSTRUCTIONS #### -->

<div id="system-linux" style="display:none">


<p>To install Android Studio on Linux, proceed as follows:</p>

<ol>
  <li>Unpack the <code>.zip</code> file you downloaded to an
      appropriate location for your applications, such as within
      <code>/usr/local/</code> for your user profile, or <code>/opt/</code>
      for shared users.
  <li>To launch Android Studio, open a terminal,
    navigate to the <code>android-studio/bin/</code> directory,
   and execute <code>studio.sh</code>.
    <p><strong>Tip:</strong>
    Add <code>android-studio/bin/</code> to your <code>PATH</code> environment
    variable so you can start Android Studio from any directory.</p>
  </li>
  <li>Select whether you want to import previous Android Studio settings
    or not, then click <strong>OK</strong>.</li>
  <li>The Android Studio Setup Wizard guides you though the rest of the
    setup, which includes downloading Android SDK components
    that are required for development.</li>
  </li>
</ol>

<div class="note">
<p><strong>Note:</strong>
If you are running a 64-bit version of Ubuntu, you need to install some 32-bit
libraries with the following command:</p>
<pre>sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6</pre>
<p>If you are running 64-bit Fedora, the command is:</p>
<pre>sudo yum install zlib.i686 ncurses-libs.i686 bzip2-libs.i686</pre>
</div>

<p>That's it!
The following video shows each step of the recommended setup procedure.</p>

<video controls style="margin:20px 0" onclick="this.play()">
  <source src="https://storage.googleapis.com/androiddevelopers/videos/studio-install-linux.mp4" type="video/mp4">
</video>

<p>As new tools and other APIs become available, Android Studio tells you
with a pop-up, or you can check for updates by clicking <strong>Help &gt;
Check for Update</strong>.</p>

</div><!-- end linux -->

<p class="note"><strong>Note:</strong>
If you want to develop apps with the N Preview SDK, you must use
the preview version of Android Studio 2.1. For more information, see the
<a href="{@docRoot}preview/setup-sdk.html">N Preview setup guide</a>.</p>



<h2>Start building apps</h2>

<div class="cols" style="padding:10px 0">
<div class="col-2of6">
<img src="{@docRoot}images/tools/studio/ic_devices_grey.png"
  style="width:100%;background:#eee;margin:0" />
<h3>Build your first app</h3>
<p>Get started quickly and learn the basics of Android by following
the guide to <strong><a href="{@docRoot}training/basics/firstapp/index.html"
>Building Your First App</a></strong>.</p>

</div>
<div class="col-2of6">
<img src="{@docRoot}images/tools/studio/ic_school_grey.png"
  style="width:100%;background:#eee;margin:0" />
<h3>Learn with Udacity</h3>
<p>Ramp up on Android with interactive video training in the
<strong><a href="https://www.udacity.com/course/developing-android-apps--ud853">Android Fundamentals Udacity course</a></strong>.</p>

</div>
<div class="col-2of6">
<img src="{@docRoot}images/tools/studio/ic_explore_grey.png"
  style="width:100%;background:#eee;margin:0" />
<h3>Explore Studio</h3>
<p>Discover powerful Android Studio features and developer strategies in the
<strong><a href="{@docRoot}tools/studio/index.html">Android Studio Introduction</a></strong>.</p>

</div>
</div><!-- end cols -->


<script>
/** Show the appropriate instructions for user **/
function showInstructions(system) {
  $("[id^=system-]").hide(); // hide all of them first
  if (system == "linux") {
    $("#system-linux").show();
  } else if (system == "mac") {
    $("#system-mac").show();
  } else {
    $("#system-windows").show();
  }
  $("select#instructions-option").val(system);
}

// Get operating system based on the user agent, default windows
var os = "windows";
if (navigator.appVersion.indexOf("Linux")!=-1) {
  os = "linux";
} else if (navigator.appVersion.indexOf("Mac")!=-1) {
  os = "mac";
}
showInstructions(os);
</script>
