page.title=Android SDK
page.template=sdk
header.hide=1
page.metaDescription=Download the official Android SDK to develop apps for Android-powered devices.

sdk.win32_bundle_download=adt-bundle-windows-x86.zip
sdk.win32_bundle_bytes=418030942
sdk.win32_bundle_checksum=ce32861d8f7c93ff6ff6971bd99d228e

sdk.win64_bundle_download=adt-bundle-windows-x86_64.zip
sdk.win64_bundle_bytes=418155677
sdk.win64_bundle_checksum=f09aa4557bd1dc2703fde95dcdd6b92e

sdk.mac64_bundle_download=adt-bundle-mac-x86_64.zip
sdk.mac64_bundle_bytes=383216991
sdk.mac64_bundle_checksum=ea6c074ee30c426c503dab5c225a5076

sdk.linux32_bundle_download=adt-bundle-linux-x86.zip
sdk.linux32_bundle_bytes=411205048
sdk.linux32_bundle_checksum=e64594cd339b8d9a400b9d16c616b3c3

sdk.linux64_bundle_download=adt-bundle-linux-x86_64.zip
sdk.linux64_bundle_bytes=411478695
sdk.linux64_bundle_checksum=582bfc9083ff4cbcfacc8223bd8c3be1



sdk.win_installer=installer_r21.0.1-windows.exe
sdk.win_installer_bytes=76520869
sdk.win_installer_checksum=e2012262471a2583d4a559b15fcf45ff

sdk.win_download=android-sdk_r21.0.1-windows.zip
sdk.win_bytes=99107847
sdk.win_checksum=613568d774c3bf25c5d24db16601af83

sdk.mac_download=android-sdk_r21.0.1-macosx.zip
sdk.mac_bytes=65804128
sdk.mac_checksum=30401c43a014cd5d6ec9d0c62854a1d9

sdk.linux_download=android-sdk_r21.0.1-linux.tgz
sdk.linux_bytes=91394975
sdk.linux_checksum=eaa5a8d76d692d1d027f2bbcee019644





@jd:body

<style type="text/css">
  .offline {display:none;}
</style>




<div style="position:relative;height:660px;">


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

<h1 id="tos-header" style="margin-top:0">Get the Android SDK</h1>



<p class="sdk-terms-intro">Before installing the Android SDK, 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>Now that you've downloaded the Android SDK, you don't need to return here
  for SDK updates. The SDK tools allow you to
  install additional packages and future updates from the SDK Manager.</p>
  <p>For instructions about setting up your Android SDK for the first time,
  read <a id="next-link" href="{@docRoot}sdk/installing/bundle.html">Setting
  Up the ADT Bundle</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 id="bitpicker" style="display:none">
  <input id="32" onclick="onAgreeChecked()" type="radio" name="bit" value="32">
    <label for="32">32-bit</label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  <input id="64" onclick="onAgreeChecked()" type="radio" name="bit" value="64">
    <label for="64">64-bit</label>
</p>
<p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
</div>



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



<div class="wrap" id="landing">

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

<div class="col-6" style="margin-left:0">

<h1 style="margin-top:0">Get the Android SDK</h1>


<p>The Android SDK provides you the API libraries and developer tools necessary to build, test,
  and debug apps for Android.</p>

<p>If you're a new Android developer, we recommend you download the ADT Bundle
to quickly start developing apps. It includes the essential
Android SDK components and a version of the Eclipse IDE with built-in
<b>ADT (Android Developer Tools)</b> to
streamline your Android app development.</p>

<p>With a single download, the ADT Bundle
includes everything you need to begin developing apps:</p>
<ul>
<li>Eclipse + ADT plugin</li>
<li>Android SDK Tools</li>
<li>Android Platform-tools</li>
<li>The latest Android platform</li>
<li>The latest Android system image for the emulator</li>
</ul>


<!-- this appears when viewing the offline docs -->
<p class="offline">
To get the ADT Bundle or stand-alone SDK Tools, please visit the web site at <a
href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a>
</p>

</div>



<div class="col-7" style="margin-right:0;">
  <img src="{@docRoot}images/sdk-cube.png" alt="" height=264 />

<!-- this appears when viewing the online docs -->
<div class="online">

<a class="big button subtitle" id="download-bundle-button"
href="" style="display:none;width:265px;margin:0 auto;display:block" ></a>

<p id="not-supported">Choose the SDK package for your OS from the table below.</p>

</div>
<!-- end online -->

</div><!-- end col-7 -->





<!-- alternative SDK options -->
<div class="col-13" style="margin:0;">

<p>If you prefer to use an existing version of Eclipse or another IDE,
you can instead take a more customized approach to installing
the Android SDK. See the following instructions.</p>


<h4 id="ExistingIDE"><a href='' class="expandable"
  onclick="toggleExpandable(this,'.myide');hideExpandable('.pax,.reqs');return false;"
  >USE AN EXISTING IDE</a></h4>

<div class="col-13 myide" style="margin:0 0 15px;display:none;">

<p>If you already have an IDE you want to use for Android app development,
setting up a new SDK requires that you download the SDK Tools, then
select additional Android SDK packages to install (such as the Android platform
and system image). If you'll be using an existing version of Eclipse, then you can add
the ADT plugin to it.</p>
  <p>
<a class="button subtitle" id="download-tools-button" href="" style="display:none" ></a>
  </p>


</div>





<h4 id="Requirements"><a href='' class="expandable"
  onclick="toggleExpandable(this,'.reqs');hideExpandable('.pax,.myide');return false;"
  >SYSTEM REQUIREMENTS</a></h4>

<div class="col-6 reqs" style="margin:0 0 15px;display:none;">
<h5>Operating Systems</h5>
<ul>
  <li>Windows XP (32-bit), Vista (32- or 64-bit), or Windows 7 (32- or 64-bit)</li>
  <li>Mac OS X 10.5.8 or later (x86 only)</li>
  <li>Linux (tested on Ubuntu Linux, Lucid Lynx)
    <ul>
      <li>GNU C Library (glibc) 2.7 or later is required.</li>
      <li>On Ubuntu Linux, version 8.04 or later is required.</li>
      <li>64-bit distributions must be capable of running 32-bit applications.</li>
    </ul>
  </li>
</ul>
</div>

<div class="col-6 reqs" style="margin:0 0 15px 20px;display:none;">
<h5>Eclipse IDE</h5>
    <ul>
      <li><a href="http://eclipse.org/mobile/">Eclipse</a> 3.6.2 (Helios) or greater
<p class="note"><strong>Note:</strong> Eclipse 3.5 (Galileo) is no longer
supported with the latest version of ADT.</p></li>
      <li>Eclipse <a href="http://www.eclipse.org/jdt">JDT</a> plugin (included
in most Eclipse IDE packages) </li>
      <li><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">JDK 6</a>
        (JRE alone is not sufficient)</li>
      <li><a href="{@docRoot}tools/sdk/eclipse-adt.html">Android Development Tools plugin</a>
(recommended)</li>
      <li><strong>Not</strong> compatible with GNU Compiler for Java (gcj)</li>
    </ul>


<h5>Other development environments</h5>
    <ul>
      <li><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">JDK 6</a>
        (JRE alone is not sufficient)</li>
      <li><a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later</li>
      <li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
    </ul>

<p class="note"><strong>Note:</strong> Some Linux distributions may include JDK 1.4 or Gnu Compiler
for Java, both of which are <em>not</em> supported for Android development. </p>
</div><!-- end col-7 reqs -->


