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 = "http://dl.google.com/android/" + filename;
      }
      document.getElementById('click-download').setAttribute("href", "http://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>





