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.1.2-linux.tgz
sdk.linux_bytes=168121693
sdk.linux_checksum=68980e4a26cca0182abb1032abffbb72a1240c51

sdk.mac_download=android-sdk_r24.1.2-macosx.zip
sdk.mac_bytes=89151287
sdk.mac_checksum=00e43ff1557e8cba7da53e4f64f3a34498048256

sdk.win_download=android-sdk_r24.1.2-windows.zip
sdk.win_bytes=159778618
sdk.win_checksum=704f6c874373b98e061fe2e7eb34f9fcb907a341

sdk.win_installer=installer_r24.1.2-windows.exe
sdk.win_installer_bytes=111364285
sdk.win_installer_checksum=e0ec864efa0e7449db2d7ed069c03b1f4d36f0cd






@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 -->
