page.title=Download Android Studio and SDK Tools
page.tags=sdk, android studio
page.template=sdk
header.hide=1
page.metaDescription=Download the official Android IDE and developer tools to build apps for Android phones, tablets, wearables, TVs, and more.

studio.version=1.1.0

studio.linux_bundle_download=android-studio-ide-135.1740770-linux.zip
studio.linux_bundle_bytes=259336386
studio.linux_bundle_checksum=e8d166559c50a484f83ebfec6731cc0e3f259208

studio.mac_bundle_download=android-studio-ide-135.1740770-mac.dmg
studio.mac_bundle_bytes=261303345
studio.mac_bundle_checksum=f9745d0fec1eefd498f6160a2d6a1b5247d4cda3

studio.win_bundle_exe_download=android-studio-bundle-135.1740770-windows.exe
studio.win_bundle_exe_bytes=856233768
studio.win_bundle_exe_checksum=7484b9989d2914e1de30995fbaa97a271a514b3f

studio.win_notools_exe_download=android-studio-ide-135.1740770-windows.exe
studio.win_notools_exe_bytes=242135128
studio.win_notools_exe_checksum=5ea77661cd2300cea09e8e34f4a2219a0813911f

studio.win_bundle_download=android-studio-ide-135.1740770-windows.zip
studio.win_bundle_bytes=261667054
studio.win_bundle_checksum=e903f17cc6a57c7e3d460c4555386e3e65c6b4eb



sdk.linux_download=android-sdk_r24.0.2-linux.tgz
sdk.linux_bytes=140097024
sdk.linux_checksum=b6fd75e8b06b0028c2427e6da7d8a09d8f956a86

sdk.mac_download=android-sdk_r24.0.2-macosx.zip
sdk.mac_bytes=87262823
sdk.mac_checksum=3ab5e0ab0db5e7c45de9da7ff525dee6cfa97455

sdk.win_download=android-sdk_r24.0.2-windows.zip
sdk.win_bytes=139473113
sdk.win_checksum=51269c8336f936fc9b9538f9b9ca236b78fb4e4b

sdk.win_installer=installer_r24.0.2-windows.exe
sdk.win_installer_bytes=91428280
sdk.win_installer_checksum=edac14e1541e97d68821fa3a709b4ea8c659e676






@jd:body

<style type="text/css">
  .offline {display:none;}
  a.download-bundle-button {display:block;}
  h2.feature {
    padding-top:30px;
    margin-top:0;
    clear:both;
  }
  .feature-blurb {
  margin:0px; font-size:16px; font-weight:300;
  padding:40px 0 0 0;
  }

  .landing-button.green {
    font-size:16px;
    background-color:#90c653;
    padding:8px 10px 10px;
    margin:0;
    width:206px;
    text-align:center;
  }

  .landing-button.green:hover {
    background-color:#85b84f;
  }

  .landing-button .small {
    font-size: 12px;
    font-weight: normal;
    line-height: 12px;
    display: block;
  }

  h1.studio-logo {
    width:226px;
    height:78px;
    display:block;
    padding:0;
    white-space: nowrap;
    text-indent: -10000px;
    font-size:0px;
    background: url(../images/tools/studio-logo.png);
    background-image: -webkit-image-set(url(../images/tools/studio-logo.png) 1x, url(../images/tools/studio-logo_2x.png) 2x);
    background-size: 226px 78px;
  }

</style>





<div style="position:relative;">


<div class="wrap" id="tos" style="display:none;width:inherit;height:650px">
<div class="col-13" style="margin:0;">&nbsp;</div><!-- provides top margin for content -->

<h1 id="tos-header" style="margin-top:0">Download</h1>

<p class="sdk-terms-intro">Before installing Android Studio or the standalone SDK tools,
you must agree to the following terms and conditions.</p>

<div class="sdk-terms" onfocus="this.blur()">
<h2 class="norule">Terms and Conditions</h2>
This is the Android Software Development Kit License Agreement

<h3>1. Introduction</h3>
1.1 The Android Software Development Kit (referred to in this License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of this License Agreement. This License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.

1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.

1.3 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.


<h3>2. Accepting this License Agreement</h3>
2.1 In order to use the SDK, you must first agree to this License Agreement. You may not use the SDK if you do not accept this License Agreement.

2.2 By clicking to accept, you hereby agree to the terms of this License Agreement.

2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries including the country in which you are resident or from which you use the SDK.

2.4 If you are agreeing to be bound by this License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to this License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.


<h3>3. SDK License from Google</h3>
3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable and non-exclusive license to use the SDK solely to develop applications to run on the Android platform.

3.2 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.

3.3 You may not use the SDK for any purpose not expressly permitted by this License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.

3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK.

3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not this License Agreement.

3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.

3.7 Nothing in this License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.

3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.


<h3>4. Use of the SDK by You</h3>
4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under this License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.

4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) this License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).

4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.

4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.

4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.

4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under this License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.


<h3>5. Your Developer Credentials</h3>
5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.


<h3>6. Privacy and Information</h3>
6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.

6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.


<h3>7. Third Party Applications</h3>
7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.

7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.

7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, this License Agreement does not affect your legal relationship with these third parties.


<h3>8. Using Android APIs</h3>
8.1 Google Data APIs

8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.

8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.


<h3>9. Terminating this License Agreement</h3>
9.1 This License Agreement will continue to apply until terminated by either you or Google as set out below.

9.2 If you want to terminate this License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.

9.3 Google may at any time, terminate this License Agreement with you if:
(A) you have breached any provision of this License Agreement; or
(B) Google is required to do so by law; or
(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.

9.4 When this License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst this License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.


<h3>10. DISCLAIMER OF WARRANTIES</h3>
10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.

10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.

10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.


<h3>11. LIMITATION OF LIABILITY</h3>
11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.


<h3>12. Indemnification</h3>
12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with this License Agreement.


<h3>13. Changes to the License Agreement</h3>
13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.


<h3>14. General Legal Terms</h3>
14.1 This License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.

14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in this License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.

14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of this License Agreement is invalid, then that provision will be removed from this License Agreement without affecting the rest of this License Agreement. The remaining provisions of this License Agreement will continue to be valid and enforceable.

14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to this License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of this License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to this License Agreement.

14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.

14.6 The rights granted in this License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under this License Agreement without the prior written approval of the other party.

14.7 This License Agreement, and your relationship with Google under this License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from this License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.


<em>November 13, 2012</em>
</div>





<div id="next-steps" style="display:none;position:absolute;width:inherit">
  <p>You're just a few steps away from building apps for Android!</p>
  <p>In a moment, you'll be redirected to
  <a id="next-link" href="{@docRoot}sdk/installing/index.html">Installing the Android SDK</a>.</p>

</div><!-- end next-steps -->



<div id="sdk-terms-form">
<p>
<input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
<label id="agreeLabel" for="agree">I have read and agree with the above terms and conditions</label>
</p>
<p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
</div>


</div><!-- end TOS -->






<div id="landing">

<div class="col-13">&nbsp;</div><!-- provides top margin for content -->

<img src="{@docRoot}images/tools/studio-hero.png"
srcset="{@docRoot}images/tools/studio-hero_2x.png 2x, {@docRoot}images/tools/studio-hero.png 1x"
width="760" height="400" alt="" style="margin-bottom:80px" />

<div style="color: #fff; width:226px; height:0; overflow:visible; position:absolute; top:40px; left:25px">

<h1 class="studio-logo" style="margin:0 0 35px !important">Android Studio</h1>

<p style="font-size: 16px; color:#bbb; position: absolute;left: 297px; top: 5px; display: block;
width: 400px;text-align: center;">The official Android IDE</p>

<ul style="font-size:12px">
<li>Android Studio IDE</li>
<li>Android SDK tools</li>
<li>Android 5.0 (Lollipop) Platform</li>
<li>Android 5.0 emulator system image with Google APIs</li>
</ul>


<a class="online landing-button green download-bundle-button" style="margin-top:30px;"
href="#Other" >Download Android Studio</a>

<!-- this appears when viewing the offline docs -->
<p class="offline">
To get Android Studio or stand-alone SDK tools, visit <a
href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a>
</p>

<ul style="margin-top:50px;color:#444">
  <li><a href="#Requirements">System Requirements</a></li>
  <li><a href="#Other">Other Download Options</a></li>
  <li><a href="{@docRoot}sdk/installing/migrate.html">Migrating to Android Studio</a></li>
  <li><a href="https://docs.google.com/a/google.com/forms/d/1mjsyfzv3HAnDY-_Kfj-3QJKdpuksyMFs9e73CRwmT6Q/viewform"
target="_blank">Take a Survey</a></li>
</ul>

</div>




<h2 class="feature norule" >Intelligent code editor</h2>

<div class="col-9" style="margin:0 20px 0 0">
  <img src="{@docRoot}images/tools/studio-hero-code.png"
srcset="{@docRoot}images/tools/studio-hero-code_2x.png 2x, {@docRoot}images/tools/studio-hero-code.png 1x" width="520" />
</div><!-- end col-9 (left column) -->

<div class="col-4 feature-blurb">
  <p>At the core of Android Studio is an intelligent code editor capable of advanced
  code completion, refactoring, and code analysis.</p>
  <p>The powerful code editor helps you be a more productive Android app developer.</p>
</div>





<h2 class="feature norule">Code templates and GitHub integration</h2>

<div class="col-9" style="margin:0 20px 0 0">
  <img src="{@docRoot}images/tools/studio-hero-import.png"
srcset="{@docRoot}images/tools/studio-hero-import_2x.png 2x, {@docRoot}images/tools/studio-hero-import.png 1x" width="520" />
</div><!-- end col-9 (left column) -->

<div class="col-4 feature-blurb">
  <p>New project wizards make it easier than ever to start a new project.</p>

  <p>Start projects using template code for patterns such as navigation drawer and view pagers,
  and even import Google code samples from GitHub.</p>
</div>




<h2 class="feature norule">Multi-screen app development</h2>

<div class="col-9" style="margin:0 20px 0 0">
  <img src="{@docRoot}images/tools/studio-hero-screens.png"
srcset="{@docRoot}images/tools/studio-hero-screens_2x.png 2x, {@docRoot}images/tools/studio-hero-screens.png 1x" width="520" />
</div><!-- end col-9 (left column) -->

<div class="col-4 feature-blurb">
  <p>Build apps for Android phones, tablets, Android Wear,
  Android TV, Android Auto and Google Glass.</p>
  <p>With the new Android Project View and module support in Android Studio, it's easier
  to manage app projects and resources.
</div>




<h2 class="feature norule">Virtual devices for all shapes and sizes</h2>

<div class="col-9" style="margin:0 20px 0 0">
  <img src="{@docRoot}images/tools/studio-hero-avds.png"
srcset="{@docRoot}images/tools/studio-hero-avds_2x.png 2x, {@docRoot}images/tools/studio-hero-avds.png 1x" width="520" />
</div><!-- end col-9 (left column) -->

<div class="col-4 feature-blurb">
  <p>Android Studio comes pre-configured with an optimized emulator image.</p>
  <p>The updated and streamlined Virtual Device Manager provides
  pre-defined device profiles for common Android devices.</p>
</div>




<h2 class="feature norule">
Android builds evolved, with Gradle</h2>

<div class="col-9" style="margin:0 20px 0 0">
  <img src="{@docRoot}images/tools/studio-hero-gradle.png"
srcset="{@docRoot}images/tools/studio-hero-gradle_2x.png 2x, {@docRoot}images/tools/studio-hero-gradle.png 1x" width="520" />
</div><!-- end col-9 (left column) -->

<div class="col-4 feature-blurb">
  <p>Create multiple APKs for your Android app with different features using the same project.</p>
  <p>Manage app dependencies with Maven.</p>
  <p>Build APKs from Android Studio or the command line.</p>
</div>




<h2 class="feature norule">More about Android Studio</h2>
<div style="background:#424242;padding:30px; color:#fff;margin:0 0 15px;">

<a class="online landing-button green download-bundle-button"
style="margin:0 0 40px 60px;float:right"
href="" >Download Android Studio</a>

  <ul>
  <li>Built on IntelliJ IDEA Community Edition, the popular Java IDE by JetBrains.</li>
  <li>Flexible Gradle-based build system.</li>
  <li>Build variants and multiple APK generation.</li>
  <li>Expanded template support for Google Services and various device types.</li>
  <li>Rich layout editor with support for theme editing.</li>
  <li>Lint tools to catch performance, usability, version compatibility, and other problems.</li>
  <li>ProGuard and app-signing capabilities.</li>
  <li>Built-in support for Google Cloud Platform, making it easy to integrate Google Cloud
  Messaging and App Engine.</li>
  </ul>

<p style="margin:0">
For more details about features available in Android Studio,
read the guide to <a href="{@docRoot}tools/studio/index.html"
  >Android Studio Basics</a>.</p>
</div>


<p>If you have been using Eclipse with ADT, be aware that Android Studio is now the official IDE
for Android, so you should migrate to Android Studio to receive all the
latest IDE updates. For help moving projects,
see <a href="{@docRoot}sdk/installing/migrate.html">Migrating to Android
Studio</a>.</p>







<h2 id="Requirements">System Requirements</h2>

<h3>Windows</h3>

<ul>
<li>Microsoft&reg;  Windows&reg;  8/7/Vista/2003 (32 or 64-bit)</li>
<li>2 GB RAM minimum, 4 GB RAM recommended</li>
<li>400 MB hard disk space</li>
<li>At least 1 GB for Android SDK, emulator system images, and caches</li>
<li>1280 x 800  minimum screen resolution</li>
<li>Java Development Kit (JDK) 7 </li>
<li>Optional for accelerated emulator: Intel® processor with support for Intel® VT-x, Intel® EM64T
(Intel® 64), and Execute Disable (XD) Bit functionality</li>
</ul>


<h3>Mac OS X</h3>

<ul>
<li>Mac&reg;  OS X&reg;  10.8.5 or higher, up to 10.9 (Mavericks)</li>
<li>2 GB RAM minimum, 4 GB RAM recommended</li>
<li>400 MB hard disk space</li>
<li>At least 1 GB for Android SDK, emulator system images, and caches</li>
<li>1280 x 800 minimum screen resolution</li>
<li>Java Runtime Environment (JRE) 6</li>
<li>Java Development Kit (JDK) 7</li>
<li>Optional for accelerated emulator: Intel® processor with support for Intel® VT-x, Intel® EM64T
(Intel® 64), and Execute Disable (XD) Bit functionality</li>
</ul>

<p>On Mac OS, run Android Studio with Java Runtime Environment (JRE) 6 for optimized font
rendering. You can then configure your project to use Java Development Kit (JDK) 6 or JDK 7.</p>



<h3>Linux</h3>

<ul>
<li>GNOME or KDE desktop</li>
<li>GNU C Library (glibc) 2.15 or later</li>
<li>2 GB RAM minimum, 4 GB RAM recommended</li>
<li>400 MB hard disk space</li>
<li>At least 1 GB for Android SDK, emulator system images, and caches</li>
<li>1280 x 800 minimum screen resolution</li>
<li>Oracle&reg;  Java Development Kit (JDK) 7 </li>
</ul>
<p>Tested on Ubuntu&reg;  14.04, Trusty Tahr (64-bit distribution capable of running
32-bit applications).</p>




<h2 id="Other" style="clear:left">Other Download Options</h2>

<!-- alternative SDK options follows -->
