1<?cs include:"doctype.cs" ?>
2<?cs include:"macros.cs" ?>
3<html<?cs if:devsite ?> devsite<?cs /if ?>>
4<?cs if:sdk.redirect ?>
5  <head>
6    <title>Redirecting...</title>
7    <meta http-equiv="refresh" content="0;url=<?cs var:toroot ?>sdk/<?cs
8      if:sdk.redirect.path ?><?cs var:sdk.redirect.path ?><?cs
9      else ?>index.html<?cs /if ?>">
10  </head>
11<?cs else ?>
12  <?cs include:"head_tag.cs" ?>
13<?cs /if ?>
14<body class="gc-documentation
15  <?cs if:(guide||develop||training||reference||tools||sdk) ?>develop<?cs
16  elif:design ?>design<?cs
17  elif:distribute ?>distribute<?cs
18  /if ?>" itemscope itemtype="http://schema.org/CreativeWork">
19  <a name="top"></a>
20<?cs include:"header.cs" ?>
21
22
23<div <?cs if:fullpage
24?><?cs else
25?>class="col-13" id="doc-col"<?cs /if ?> >
26
27<?cs if:sdk.redirect ?>
28
29<div class="g-unit">
30  <div id="jd-content">
31    <p>Redirecting to
32    <a href="<?cs var:toroot ?>sdk/<?cs
33      if:sdk.redirect.path ?><?cs var:sdk.redirect.path ?><?cs
34      else ?>index.html<?cs /if ?>"><?cs
35      if:sdk.redirect.path ?><?cs var:sdk.redirect.path ?><?cs
36      else ?>Download the SDK<?cs /if ?>
37    </a> ...</p>
38
39<?cs else ?>
40<?cs # else, if NOT redirect ...
41#
42#
43# The following is for SDK/NDK pages
44#
45#
46?>
47
48<?cs if:header.hide ?><?cs else ?>
49<h1 itemprop="name"><?cs var:page.title ?></h1>
50<?cs /if ?>
51  <div id="jd-content" itemprop="description">
52
53<?cs if:sdk.not_latest_version ?>
54  <div class="special">
55    <p><strong>This is NOT the current Android SDK release.</strong></p>
56    <p><a href="/sdk/index.html">Download the current Android SDK</a></p>
57  </div>
58<?cs /if ?>
59
60
61<?cs if:ndk ?>
62<?cs #
63#
64#
65#
66#
67#
68#
69# the following is for the NDK
70#
71# (nested in if/else redirect)
72#
73#
74#
75#
76?>
77
78  <table class="download" id="download-table">
79    <tr>
80      <th>Platform</th>
81      <th>Package</th>
82      <th style="white-space:nowrap">Size (Bytes)</th>
83      <th>MD5 Checksum</th>
84  </tr>
85  <tr>
86    <td rowspan="2" style="white-space:nowrap">Windows 32-bit</td>
87    <td>
88  <a onClick="return onDownload(this)"
89     href="http://dl.google.com/android/ndk/<?cs var:ndk.win32_download ?>"><?cs var:ndk.win32_download ?></a>
90    </td>
91    <td><?cs var:ndk.win32_bytes ?></td>
92    <td><?cs var:ndk.win32_checksum ?></td>
93  </tr>
94  <tr>
95    <td>
96  <a onClick="return onDownload(this)"
97     href="http://dl.google.com/android/ndk/<?cs var:ndk.win32.legacy_download ?>"><?cs var:ndk.win32.legacy_download ?></a>
98    </td>
99    <td><?cs var:ndk.win32.legacy_bytes ?></td>
100    <td><?cs var:ndk.win32.legacy_checksum ?></td>
101  </tr>
102  <tr>
103    <td rowspan="2" style="white-space:nowrap">Windows 64-bit</td>
104    <td>
105  <a onClick="return onDownload(this)"
106     href="http://dl.google.com/android/ndk/<?cs var:ndk.win64_download ?>"><?cs var:ndk.win64_download ?></a>
107    </td>
108    <td><?cs var:ndk.win64_bytes ?></td>
109    <td><?cs var:ndk.win64_checksum ?></td>
110  </tr>
111  <tr>
112    <td>
113  <a onClick="return onDownload(this)"
114     href="http://dl.google.com/android/ndk/<?cs var:ndk.win64.legacy_download ?>"><?cs var:ndk.win64.legacy_download ?></a>
115    </td>
116    <td><?cs var:ndk.win64.legacy_bytes ?></td>
117    <td><?cs var:ndk.win64.legacy_checksum ?></td>
118  </tr>
119  <tr>
120    <td rowspan="2" style="white-space:nowrap">Mac OS X 32-bit</td>
121    <td>
122  <a onClick="return onDownload(this)"
123     href="http://dl.google.com/android/ndk/<?cs var:ndk.mac32_download ?>"><?cs var:ndk.mac32_download ?></a>
124    </td>
125    <td><?cs var:ndk.mac32_bytes ?></td>
126    <td><?cs var:ndk.mac32_checksum ?></td>
127  </tr>
128  <tr>
129    <td>
130  <a onClick="return onDownload(this)"
131     href="http://dl.google.com/android/ndk/<?cs var:ndk.mac32.legacy_download ?>"><?cs var:ndk.mac32.legacy_download ?></a>
132    </td>
133    <td><?cs var:ndk.mac32.legacy_bytes ?></td>
134    <td><?cs var:ndk.mac32.legacy_checksum ?></td>
135  </tr>
136  <tr>
137    <td rowspan="2"  style="white-space:nowrap">Mac OS X 64-bit</td>
138    <td>
139  <a onClick="return onDownload(this)"
140     href="http://dl.google.com/android/ndk/<?cs var:ndk.mac64_download ?>"><?cs var:ndk.mac64_download ?></a>
141    </td>
142    <td><?cs var:ndk.mac64_bytes ?></td>
143    <td><?cs var:ndk.mac64_checksum ?></td>
144  </tr>
145  <tr>
146    <td>
147  <a onClick="return onDownload(this)"
148     href="http://dl.google.com/android/ndk/<?cs var:ndk.mac64.legacy_download ?>"><?cs var:ndk.mac64.legacy_download ?></a>
149    </td>
150    <td><?cs var:ndk.mac64.legacy_bytes ?></td>
151    <td><?cs var:ndk.mac64.legacy_checksum ?></td>
152  </tr>
153
154  <tr>
155    <td rowspan="2" style="white-space:nowrap">Linux 32-bit (x86)</td>
156    <td>
157  <a onClick="return onDownload(this)"
158     href="http://dl.google.com/android/ndk/<?cs var:ndk.linux32_download ?>"><?cs var:ndk.linux32_download ?></a>
159    </td>
160    <td><?cs var:ndk.linux32_bytes ?></td>
161    <td><?cs var:ndk.linux32_checksum ?></td>
162  </tr>
163  <tr>
164    <td>
165  <a onClick="return onDownload(this)"
166     href="http://dl.google.com/android/ndk/<?cs var:ndk.linux32.legacy_download ?>"><?cs var:ndk.linux32.legacy_download ?></a>
167    </td>
168    <td><?cs var:ndk.linux32.legacy_bytes ?></td>
169    <td><?cs var:ndk.linux32.legacy_checksum ?></td>
170  </tr>
171  <tr>
172    <td rowspan="2" style="white-space:nowrap">Linux 64-bit (x86)</td>
173    <td>
174  <a onClick="return onDownload(this)"
175     href="http://dl.google.com/android/ndk/<?cs var:ndk.linux64_download ?>"><?cs var:ndk.linux64_download ?></a>
176    </td>
177    <td><?cs var:ndk.linux64_bytes ?></td>
178    <td><?cs var:ndk.linux64_checksum ?></td>
179  </tr>
180  <tr>
181    <td>
182  <a onClick="return onDownload(this)"
183     href="http://dl.google.com/android/ndk/<?cs var:ndk.linux64.legacy_download ?>"><?cs var:ndk.linux64.legacy_download ?></a>
184    </td>
185    <td><?cs var:ndk.linux64.legacy_bytes ?></td>
186    <td><?cs var:ndk.linux64.legacy_checksum ?></td>
187  </tr>
188  </table>
189
190  <?cs ########  HERE IS THE JD DOC CONTENT ######### ?>
191  <?cs call:tag_list(root.descr) ?>
192
193
194
195<script>
196  function onDownload(link) {
197
198    $("#downloadForRealz").html("Download " + $(link).text());
199    $("#downloadForRealz").attr('href',$(link).attr('href'));
200
201    $("#tos").fadeIn('slow');
202
203    location.hash = "download";
204    return false;
205  }
206
207
208  function onAgreeChecked() {
209    if ($("input#agree").is(":checked")) {
210      $("a#downloadForRealz").removeClass('disabled');
211    } else {
212      $("a#downloadForRealz").addClass('disabled');
213    }
214  }
215
216  function onDownloadNdkForRealz(link) {
217    if ($("input#agree").is(':checked')) {
218      $("#tos").fadeOut('slow');
219
220      $('html, body').animate({
221          scrollTop: $("#Installing").offset().top
222        }, 800, function() {
223          $("#Installing").click();
224      });
225
226      return true;
227    } else {
228      $("label#agreeLabel").parent().stop().animate({color: "#258AAF"}, 200,
229        function() {$("label#agreeLabel").parent().stop().animate({color: "#222"}, 200)}
230      );
231      return false;
232    }
233  }
234
235  $(window).hashchange( function(){
236    if (location.hash == "") {
237      location.reload();
238    }
239  });
240
241</script>
242
243  <?cs else ?>
244<?cs # end if NDK ...
245#
246#
247#
248#
249#
250#
251# the following is for the SDK
252#
253# (nested in if/else redirect and if/else NDK)
254#
255#
256#
257#
258?>
259  <?cs if:android.whichdoc == "online" ?>
260
261
262<?cs ########  HERE IS THE JD DOC CONTENT FOR ONLINE ######### ?>
263<?cs call:tag_list(root.descr) ?>
264
265
266
267
268<h4><a href='' class="expandable"
269  onclick="toggleExpandable(this,'.pax');hideExpandable('.myide,.reqs');return false;"
270  >DOWNLOAD FOR OTHER PLATFORMS</a></h4>
271
272
273<div class="pax col-13 online" style="display:none;margin:0;">
274
275
276<p class="table-caption"><strong>ADT Bundle</strong></p>
277  <table class="download">
278    <tr>
279      <th>Platform</th>
280      <th>Package</th>
281      <th>Size</th>
282      <th>MD5 Checksum</th>
283  </tr>
284  <tr>
285    <td>Windows 32-bit</td>
286    <td>
287  <a onClick="return onDownload(this)" id="win-bundle32"
288     href="http://dl.google.com/android/adt/<?cs var:sdk.win32_bundle_download ?>"><?cs var:sdk.win32_bundle_download ?></a>
289    </td>
290    <td><?cs var:sdk.win32_bundle_bytes ?> bytes</td>
291    <td><?cs var:sdk.win32_bundle_checksum ?></td>
292  </tr>
293  <tr>
294    <td>Windows 64-bit</td>
295    <td>
296  <a onClick="return onDownload(this)" id="win-bundle64"
297     href="http://dl.google.com/android/adt/<?cs var:sdk.win64_bundle_download ?>"><?cs var:sdk.win64_bundle_download ?></a>
298    </td>
299    <td><?cs var:sdk.win64_bundle_bytes ?> bytes</td>
300    <td><?cs var:sdk.win64_bundle_checksum ?></td>
301  </tr>
302  <tr>
303    <td><nobr>Mac OS X 64-bit</nobr></td>
304    <td>
305  <a onClick="return onDownload(this)" id="mac-bundle64"
306     href="http://dl.google.com/android/adt/<?cs var:sdk.mac64_bundle_download ?>"><?cs var:sdk.mac64_bundle_download ?></a>
307    </td>
308    <td><?cs var:sdk.mac64_bundle_bytes ?> bytes</td>
309    <td><?cs var:sdk.mac64_bundle_checksum ?></td>
310  </tr>
311  <tr>
312    <td>Linux 32-bit</td>
313    <td>
314  <a onClick="return onDownload(this)" id="linux-bundle32"
315     href="http://dl.google.com/android/adt/<?cs var:sdk.linux32_bundle_download ?>"><?cs var:sdk.linux32_bundle_download ?></a>
316    </td>
317    <td><?cs var:sdk.linux32_bundle_bytes ?> bytes</td>
318    <td><?cs var:sdk.linux32_bundle_checksum ?></td>
319  </tr>
320  <tr>
321    <td>Linux 64-bit</td>
322    <td>
323  <a onClick="return onDownload(this)" id="linux-bundle64"
324     href="http://dl.google.com/android/adt/<?cs var:sdk.linux64_bundle_download ?>"><?cs var:sdk.linux64_bundle_download ?></a>
325    </td>
326    <td><?cs var:sdk.linux64_bundle_bytes ?> bytes</td>
327    <td><?cs var:sdk.linux64_bundle_checksum ?></td>
328  </tr>
329  </table>
330
331
332<p class="table-caption"><strong>SDK Tools Only</strong></p>
333  <table class="download">
334    <tr>
335      <th>Platform</th>
336      <th>Package</th>
337      <th>Size</th>
338      <th>MD5 Checksum</th>
339  </tr>
340  <tr>
341    <td rowspan="2">Windows<br>32 &amp; 64-bit</td>
342    <td>
343  <a onclick="return onDownload(this)" href="http://dl.google.com/android/<?cs var:sdk.win_download
344?>"><?cs var:sdk.win_download ?></a>
345    </td>
346    <td><?cs var:sdk.win_bytes ?> bytes</td>
347    <td><?cs var:sdk.win_checksum ?></td>
348  </tr>
349  <tr>
350    <!-- blank TD from Windows rowspan -->
351    <td>
352  <a onclick="return onDownload(this)" id="win-tools" href="http://dl.google.com/android/<?cs
353var:sdk.win_installer
354?>"><?cs var:sdk.win_installer ?></a> (Recommended)
355    </td>
356    <td><?cs var:sdk.win_installer_bytes ?> bytes</td>
357    <td><?cs var:sdk.win_installer_checksum ?></td>
358  </tr>
359  <tr>
360    <td><nobr>Mac OS X</nobr><br>32 &amp; 64-bit</td>
361    <td>
362  <a onclick="return onDownload(this)" id="mac-tools" href="http://dl.google.com/android/<?cs
363var:sdk.mac_download
364?>"><?cs var:sdk.mac_download ?></a>
365    </td>
366    <td><?cs var:sdk.mac_bytes ?> bytes</td>
367    <td><?cs var:sdk.mac_checksum ?></td>
368  </tr>
369  <tr>
370    <td>Linux<br>32 &amp; 64-bit</td>
371    <td>
372  <a onclick="return onDownload(this)" id="linux-tools" href="http://dl.google.com/android/<?cs
373var:sdk.linux_download
374?>"><?cs var:sdk.linux_download ?></a>
375    </td>
376    <td><?cs var:sdk.linux_bytes ?> bytes</td>
377    <td><?cs var:sdk.linux_checksum ?></td>
378  </tr>
379  </table>
380
381</div><!-- end pax -->
382
383
384
385</div><!-- end col-13 for lower-half content -->
386
387
388
389
390<script>
391  if (location.hash == "#Requirements") {
392    $('.reqs').show();
393  } else if (location.hash == "#ExistingIDE") {
394	 $('.ide').show();
395  }
396
397  var os;
398  var bundlename;
399  var $toolslink;
400
401  if (navigator.appVersion.indexOf("Win")!=-1) {
402    os = "Windows";
403    bundlename = '#win-bundle';
404    $toolslink = $('#win-tools');
405  } else if (navigator.appVersion.indexOf("Mac")!=-1) {
406    os = "Mac";
407    bundlename = '#mac-bundle';
408    $toolslink = $('#mac-tools');
409  } else if (navigator.appVersion.indexOf("Linux")!=-1) {
410    os = "Linux";
411    bundlename = '#linux-bundle';
412    $toolslink = $('#linux-tools');
413  }
414
415  if (os) {
416    $('#not-supported').hide();
417
418    /* set up primary adt download button */
419    $('#download-bundle-button').show();
420    $('#download-bundle-button').append("Download the SDK <br/><span class='small'>ADT Bundle for " + os + "</span>");
421    $('#download-bundle-button').click(function() {return onDownload(this,true,true);}).attr('href', bundlename);
422
423    /* set up sdk tools only button */
424    $('#download-tools-button').show();
425    $('#download-tools-button').append("Download the SDK Tools for " + os);
426    $('#download-tools-button').click(function() {return onDownload(this,true);}).attr('href', $toolslink.attr('href'));
427  } else {
428    $('.pax').show();
429  }
430
431
432  function onDownload(link, button, bundle) {
433
434    /* set text for download button */
435    if (button) {
436      $("#downloadForRealz").html($(link).text());
437    } else {
438      $("#downloadForRealz").html("Download " + $(link).text());
439    }
440
441    /* if it's a bundle, show the 32/64-bit picker */
442    if (bundle) {
443      $("#downloadForRealz").attr('bundle','true');
444      if ($("#downloadForRealz").text().indexOf("Mac") == -1) {
445        $("p#bitpicker").show();
446      } else {
447        /* mac is always 64 bit, so set it checked */
448        $("p#bitpicker input[value=64]").attr('checked', true);
449      }
450      /* save link name until the bit version is chosen */
451      $("#downloadForRealz").attr('name',$(link).attr('href'));
452    } else {
453      /* if not using bundle, set download button to ignore bitpicker and set url */
454      $("#downloadForRealz").attr('bundle','false');
455      $("#downloadForRealz").attr('href',$(link).attr('href'));
456      /* set picker checked as a fake default */
457      $("p#bitpicker input[value=64]").attr('checked', true);
458      $("a#next-link").html("Setting Up an Existing IDE").attr('href',toRoot + 'sdk/installing/index.html');
459    }
460
461    $("#tos").fadeIn('fast');
462    $("#landing").fadeOut('fast');
463
464    location.hash = "download";
465    return false;
466  }
467
468
469  function onAgreeChecked() {
470    /* verify that the TOS is agreed and a bit version is chosen */
471    if ($("input#agree").is(":checked") && $("#bitpicker input:checked").length) {
472
473      /* if downloading the bundle */
474      if ($("#downloadForRealz").attr('bundle')) {
475        /* construct the name of the link we want based on the bit version */
476        linkId = $("a#downloadForRealz").attr("name") + $("#bitpicker input:checked").val();
477        /* set the real url for download */
478        $("a#downloadForRealz").attr("href", $(linkId).attr("href"));
479      }
480
481      /* reveal the download button */
482      $("a#downloadForRealz").removeClass('disabled');
483    } else {
484      $("a#downloadForRealz").addClass('disabled');
485    }
486  }
487
488  function onDownloadForRealz(link) {
489    if ($("input#agree").is(':checked') && $("#bitpicker input:checked").length) {
490      $("div.sdk-terms").slideUp();
491      $("#sdk-terms-form,.sdk-terms-intro").fadeOut('slow');
492      $("#next-steps").fadeIn('slow');
493      $("h1#tos-header").text('Get Ready to Code!');
494      return true;
495    } else {
496      $("label#agreeLabel,#bitpicker input").parent().stop().animate({color: "#258AAF"}, 200,
497        function() {$("label#agreeLabel,#bitpicker input").parent().stop().animate({color: "#222"}, 200)}
498      );
499      return false;
500    }
501  }
502
503  $(window).hashchange( function(){
504    if (location.hash == "") {
505      location.reload();
506    }
507  });
508
509</script>
510
511
512
513</div><!-- end the wrapper used for relative/absolute positions  -->
514<?cs # THIS DIV WAS OPENED IN INDEX.JD ?>
515
516
517
518
519  <?cs else ?> <?cs # end if online ?>
520
521    <?cs if:sdk.preview ?><?cs # it's preview offline docs ?>
522      <p>Welcome developers! We are pleased to provide you with a preview SDK for the upcoming
523    Android 3.0 release, to give you a head-start on developing applications for it.
524    </p>
525
526      <p>See the <a
527    href="<?cs var:toroot ?>sdk/preview/start.html">Getting Started</a> document for more information
528    about how to set up the preview SDK and get started.</p>
529    <style type="text/css">
530    .non-preview { display:none; }
531    </style>
532
533    <?cs else ?><?cs # it's normal offline docs ?>
534
535      <?cs ########  HERE IS THE JD DOC CONTENT FOR OFFLINE ######### ?>
536      <?cs call:tag_list(root.descr) ?>
537      <style type="text/css">
538        body .offline { display:block; }
539        body .online { display:none; }
540      </style>
541      <script>
542        $('.reqs').show();
543      </script>
544    <?cs /if ?>
545
546  <?cs /if ?> <?cs # end if/else online ?>
547
548<?cs /if ?> <?cs # end if/else NDK ?>
549
550<?cs /if ?> <?cs # end if/else redirect ?>
551
552
553</div><!-- end jd-content -->
554
555<?cs if:!sdk.redirect ?>
556<?cs include:"footer.cs" ?>
557<?cs /if ?>
558
559</div><!-- end g-unit -->
560
561<?cs include:"trailer.cs" ?>
562
563</body>
564</html>
565
566
567
568