page.title=Download an Archived Android SDK
excludeFromSuggestions=true
hide_license_footer=true

@jd:body

<script type="text/javascript">
  function verify() {
    document.getElementById('download-button').disabled =
!document.getElementById('checkbox').checked;
  }
  function submit() {
    var location = window.location.href;
    if (location.indexOf('?v=') != -1) {
      var filename = location.substring(location.indexOf('=')+1,location.length);
      if (document.getElementById('checkbox').checked) {
        document.location = "https://dl.google.com/android/" + filename;
      }
      document.getElementById('click-download').setAttribute("href", "https://dl.google.com/android/"
+ filename);
      $("#terms-form").hide(500);
      $("#next-steps").show(500);
      document.getElementById('checkbox').disabled=true;
      document.getElementById('download-button').disabled=true;
    } else {
      alert("You have not selected an SDK version. Please return to the SDK Archives page");
    }
  }
</script>

<div id="terms-form">
    <p>Please carefully review the Android SDK License Agreement before downloading the SDK.
The License Agreement constitutes a contract between you and Google with respect to your use of the
SDK.</p>
    <p class="note"><strong>Note:</strong> You must agree to this license agreement in order to
download one of the archived SDKs, because these SDK packages contain Google software (whereas, the
<a href="http://developer.android.com/sdk/index.html">current SDK</a> packages do not require a
license agreement, because they contain only the open sourced SDK tools).</p>

  <iframe id="terms" style="border:1px solid #888;margin:0 0 1em;height:400px;width:100%;"
src="terms_body.html">
  </iframe>

  <p>
    <input type="checkbox" id="checkbox" onclick="verify()" />
    <label for="checkbox">I agree to the terms of the Android SDK License Agreement.</label>
  </p>
  <p>
    <input type="submit" value="Download" id="download-button" disabled="disabled"
onclick="submit()" />
  </p>
  <p>
  <script language="javascript">
    var loc = window.location.href;
    if (loc.indexOf('?v=') != -1) {
      var filename = loc.substring(loc.indexOf('=')+1,loc.length);
      document.write("File: " + filename);
    }
  </script>
  </p>
</div><!-- end terms-form -->

<noscript>
  <p><strong>Please enable Javascript in your browser in order to agree to the terms and download
the SDK.</strong></p>
</noscript>

<div class="special" id="next-steps" style="display:none">
  <p>Your download should be underway. If not, <a id="click-download">click here to start the
download</a>.</p>
  <p>Beware that you've just downloaded a very old version of the Android SDK, which is not
recommended. We no longer maintain documentation about how to install these archived SDKs nor
support the tools contained within.</p>
  <p>We recommend that you instead download the latest <a
href="http://developer.android.com/sdk/index.html">Android SDK starter package</a>, which includes
the latest SDK tools and allows you to develop against any version of the Android platform, back to
Android 1.1.</p>
</div>

<script type="text/javascript">
  var loc = window.location.href;
  var filename = loc.substring(loc.indexOf('=')+1,loc.length);
  version = filename.substring(filename.indexOf('.')-1,filename.lastIndexOf('.'));
  $(".addVersionPath").each(function(i) {
    var oldHref = $(this).attr("href");
    $(this).attr({href: "/sdk/" + version + "/" + oldHref});
  });
</script>





