sdkpage.cs revision c6d9cdce8dd8088fe5d438a6febe4227bb21325f
1<?cs include:"doctype.cs" ?>
2<?cs include:"macros.cs" ?>
3<?cs include:"../../../../frameworks/base/docs/html/sdk/sdk_vars.cs" ?>
4<html<?cs if:devsite ?> devsite<?cs /if ?>>
5<?cs if:sdk.redirect ?>
6  <head>
7    <title>Redirecting...</title>
8    <meta http-equiv="refresh" content="0;url=<?cs var:toroot ?>sdk/<?cs
9      if:sdk.redirect.path ?><?cs var:sdk.redirect.path ?><?cs
10      else ?>index.html<?cs /if ?>">
11  </head>
12<?cs else ?>
13  <?cs include:"head_tag.cs" ?>
14<?cs /if ?>
15<body class="gc-documentation
16  <?cs if:(guide||develop||training||reference||tools||sdk) ?>develop<?cs
17  elif:design ?>design<?cs
18  elif:distribute ?>distribute<?cs
19  /if ?>" itemscope itemtype="http://schema.org/CreativeWork">
20  <a name="top"></a>
21<?cs include:"header.cs" ?>
22
23
24<div <?cs if:fullpage
25?><?cs else
26?>class="col-13" id="doc-col"<?cs /if ?> >
27
28<?cs if:sdk.redirect ?>
29
30<div class="g-unit">
31  <div id="jd-content">
32    <p>Redirecting to
33    <a href="<?cs var:toroot ?>sdk/<?cs
34      if:sdk.redirect.path ?><?cs var:sdk.redirect.path ?><?cs
35      else ?>index.html<?cs /if ?>"><?cs
36      if:sdk.redirect.path ?><?cs var:sdk.redirect.path ?><?cs
37      else ?>Download the SDK<?cs /if ?>
38    </a> ...</p>
39
40<?cs else ?>
41<?cs # else, if NOT redirect ...
42#
43#
44# The following is for SDK/NDK pages
45#
46#
47?>
48
49<?cs if:(header.hide||devsite)?><?cs else ?>
50<h1 itemprop="name"><?cs var:page.title ?></h1>
51<?cs /if ?>
52  <div id="jd-content" itemprop="description">
53
54<?cs if:sdk.not_latest_version ?>
55  <div class="special">
56    <p><strong>This is NOT the current Android SDK release.</strong></p>
57    <p><a href="/sdk/index.html">Download the current Android SDK</a></p>
58  </div>
59<?cs /if ?>
60
61
62<?cs if:ndk ?>
63<?cs #
64#
65#
66#
67#
68#
69#
70# the following is for the NDK
71#
72# (nested in if/else redirect)
73#
74#
75#
76#
77?>
78
79  <table class="download" id="download-table">
80    <tr>
81      <th>Platform</th>
82      <th>Package</th>
83      <th style="white-space:nowrap">Size (Bytes)</th>
84      <th>SHA1 Checksum</th>
85  </tr>
86  <tr>
87    <td>Windows 32-bit</td>
88    <td>
89  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
90     href="http://dl.google.com/android/repository/<?cs var:ndk.win32_download ?>"><?cs var:ndk.win32_download ?></a>
91    </td>
92    <td><?cs var:ndk.win32_bytes ?></td>
93    <td><?cs var:ndk.win32_checksum ?></td>
94  </tr>
95 <!-- <tr>
96   <td>
97  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
98     href="http://dl.google.com/android/ndk/<?cs var:ndk.win32.legacy_download ?>"><?cs var:ndk.win32.legacy_download ?></a>
99    </td>
100    <td><?cs var:ndk.win32.legacy_bytes ?></td>
101    <td><?cs var:ndk.win32.legacy_checksum ?></td>
102  </tr> -->
103  <tr>
104    <td>Windows 64-bit</td>
105    <td>
106  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
107     href="http://dl.google.com/android/repository/<?cs var:ndk.win64_download ?>"><?cs var:ndk.win64_download ?></a>
108    </td>
109    <td><?cs var:ndk.win64_bytes ?></td>
110    <td><?cs var:ndk.win64_checksum ?></td>
111  </tr>
112 <!--  <tr>
113    <td>
114  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
115     href="http://dl.google.com/android/repository/<?cs var:ndk.win64.legacy_download ?>"><?cs var:ndk.win64.legacy_download ?></a>
116    </td>
117    <td><?cs var:ndk.win64.legacy_bytes ?></td>
118    <td><?cs var:ndk.win64.legacy_checksum ?></td>
119  </tr> -->
120<!--   (this item is deprecated)
121  <tr>
122    <td>Mac OS X 32-bit</td>
123    <td>
124  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
125     href="http://dl.google.com/android/repository/<?cs var:ndk.mac32_download ?>"><?cs var:ndk.mac32_download ?></a>
126    </td>
127    <td><?cs var:ndk.mac32_bytes ?></td>
128    <td><?cs var:ndk.mac32_checksum ?></td>
129  </tr> -->
130 <!-- (this item is deprecated)
131  <tr>
132    <td>
133  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
134     href="http://dl.google.com/android/repository/<?cs var:ndk.mac32.legacy_download ?>"><?cs var:ndk.mac32.legacy_download ?></a>
135    </td>
136    <td><?cs var:ndk.mac32.legacy_bytes ?></td>
137    <td><?cs var:ndk.mac32.legacy_checksum ?></td>
138  </tr> -->
139    <td>Mac OS X 64-bit</td>
140    <td>
141  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
142     href="http://dl.google.com/android/repository/<?cs var:ndk.mac64_download ?>"><?cs var:ndk.mac64_download ?></a>
143    </td>
144    <td><?cs var:ndk.mac64_bytes ?></td>
145    <td><?cs var:ndk.mac64_checksum ?></td>
146  </tr>
147 <!--  <tr>
148    <td>
149  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
150     href="http://dl.google.com/android/repository/<?cs var:ndk.mac64.legacy_download ?>"><?cs var:ndk.mac64.legacy_download ?></a>
151    </td>
152    <td><?cs var:ndk.mac64.legacy_bytes ?></td>
153    <td><?cs var:ndk.mac64.legacy_checksum ?></td>
154  </tr> -->
155 <!--  <tr>
156    <td>
157  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
158     href="http://dl.google.com/android/repository/<?cs var:ndk.linux32.legacy_download ?>"><?cs var:ndk.linux32.legacy_download ?></a>
159    </td>
160    <td><?cs var:ndk.linux32.legacy_bytes ?></td>
161    <td><?cs var:ndk.linux32.legacy_checksum ?></td>
162  </tr> -->
163  <tr>
164    <td>Linux 64-bit (x86)</td>
165    <td>
166  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
167     href="http://dl.google.com/android/repository/<?cs var:ndk.linux64_download ?>"><?cs var:ndk.linux64_download ?></a>
168    </td>
169    <td><?cs var:ndk.linux64_bytes ?></td>
170    <td><?cs var:ndk.linux64_checksum ?></td>
171  </tr>
172  <!--  <tr>
173    <td>
174  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
175     href="http://dl.google.com/android/repository/<?cs var:ndk.linux64.legacy_download ?>"><?cs var:ndk.linux64.legacy_download ?></a>
176    </td>
177    <td><?cs var:ndk.linux64.legacy_bytes ?></td>
178    <td><?cs var:ndk.linux64.legacy_checksum ?></td>
179  </tr> -->
180
181  </table>
182
183  <?cs ########  HERE IS THE JD DOC CONTENT ######### ?>
184  <?cs call:tag_list(root.descr) ?>
185
186
187<?cs ########  The NDK version of the download script ######### ?>
188<script>
189  function onDownload(link) {
190
191    $("#downloadForRealz").html("Download " + $(link).text());
192    $("#downloadForRealz").attr('href',$(link).attr('href'));
193
194    return false;
195  }
196
197
198  function onAgreeChecked() {
199    if ($("input#agree").is(":checked")) {
200      $("a#downloadForRealz").removeClass('disabled');
201    } else {
202      $("a#downloadForRealz").addClass('disabled');
203    }
204  }
205
206
207  function onDownloadForRealz(link) {
208    if ($("input#agree").is(':checked')) {
209      $("div.sdk-terms").slideUp();
210      $("h2#tos-header").text('Now downloading...');
211      $(".sdk-terms-intro").text('Your download is in progress.');
212      $("#sdk-terms-form").fadeOut('slow', function() {
213        setTimeout(function() {
214          // close the dialog
215          $('#ndk_tos').trigger('modal-close');
216          // reload to refresh the tos or optionally forward the user
217           location.reload();
218        }, 3000);
219      });
220      ga('send', 'event', 'SDK', 'NDK tools', $("#downloadForRealz").html());
221      return true;
222    } else {
223      return false;
224    }
225  }
226
227
228  $(window).hashchange( function(){
229    if (location.hash == "") {
230      location.reload();
231    }
232  });
233
234</script>
235
236  <?cs else ?>
237<?cs # end if NDK ...
238#
239#
240#
241#
242#
243#
244# the following is for the SDK
245#
246# (nested in if/else redirect and if/else NDK)
247#
248#
249#
250#
251?>
252  <?cs if:android.whichdoc == "online" ?>
253
254
255<?cs ########  HERE IS THE JD DOC CONTENT FOR ONLINE ######### ?>
256<?cs call:tag_list(root.descr) ?>
257
258
259<section id="downloads" class="dac-section dac-small">
260<div class="wrap">
261
262<h2 class="norule">Start using Android Studio today</h2>
263
264<p>Android Studio includes all the tools you need to build apps for Android.</p>
265
266<div style="float:left;margin-right:40px;width:auto;">
267<p>
268  <a class="landing-button green download-bundle-button"
269    data-modal-toggle="studio_tos">Download Android Studio 2.0<br>
270  <span class="small"></span></a>
271</p>
272</div>
273
274<div style="float:left;width:auto;margin-bottom:40px">
275<ul class="nolist" style="text-transform: uppercase;margin:8px 0">
276<li>Version: <?cs var:studio.version ?></li>
277<li>Release date: <?cs var:studio.release.date ?></li>
278</ul>
279</div>
280
281
282
283<h4 style="clear:left;margin-top:40px">Select a different platform</h4>
284
285  <table class="download">
286    <tr>
287      <th>Platform</th>
288      <th>Android Studio package</th>
289      <th>Size</th>
290      <th>SHA-1 checksum</th>
291  </tr>
292  <tr>
293    <td rowspan="3">Windows</td>
294    <td>
295  <a onclick="return onDownload(this,false,true)" id="win-bundle" data-modal-toggle="studio_tos"
296    href="https://dl.google.com/dl/android/studio/install/<?cs var:studio.version ?>/<?cs var:studio.win_bundle_exe_download ?>"
297    ><?cs var:studio.win_bundle_exe_download ?></a><br>
298    Includes Android SDK <b>(recommended)</b>
299    </td>
300    <td id="win-bundle-size"><?cs call:size_in_mb(studio.win_bundle_exe_bytes) ?> MB
301      <br>(<?cs var:studio.win_bundle_exe_bytes ?> bytes)</td>
302    <td><?cs var:studio.win_bundle_exe_checksum ?></td>
303  </tr>
304  <tr>
305    <!-- blank TD from Windows rowspan -->
306    <td>
307  <a onclick="return onDownload(this,false,true)" id="win-bundle-notools" data-modal-toggle="studio_tos"
308    href="https://dl.google.com/dl/android/studio/install/<?cs var:studio.version ?>/<?cs var:studio.win_notools_exe_download ?>"
309    ><?cs var:studio.win_notools_exe_download ?></a><br>
310    No Android SDK
311    </td>
312    <td><?cs call:size_in_mb(studio.win_notools_exe_bytes) ?> MB
313      <br>(<?cs var:studio.win_notools_exe_bytes ?> bytes)</td>
314    <td><?cs var:studio.win_notools_exe_checksum ?></td>
315  </tr>
316  <tr>
317    <!-- blank TD from Windows rowspan -->
318    <td>
319  <a onclick="return onDownload(this,false,true)" id="win-bundle-zip" data-modal-toggle="studio_tos"
320    href="https://dl.google.com/dl/android/studio/ide-zips/<?cs var:studio.version ?>/<?cs var:studio.win_bundle_download ?>"
321    ><?cs var:studio.win_bundle_download ?></a><br>
322    No Android SDK, no installer
323    </td>
324    <td><?cs call:size_in_mb(studio.win_bundle_bytes) ?> MB
325      <br>(<?cs var:studio.win_bundle_bytes ?> bytes)</td>
326    <td><?cs var:studio.win_bundle_checksum ?></td>
327  </tr>
328  <tr>
329    <td><nobr>Mac OS X</nobr></td>
330    <td>
331  <a onclick="return onDownload(this,false,true)" id="mac-bundle" data-modal-toggle="studio_tos"
332    href="https://dl.google.com/dl/android/studio/install/<?cs var:studio.version ?>/<?cs var:studio.mac_bundle_download ?>"
333    ><?cs var:studio.mac_bundle_download ?></a>
334    </td>
335    <td id="mac-bundle-size"><?cs call:size_in_mb(studio.mac_bundle_bytes) ?> MB
336      <br>(<?cs var:studio.mac_bundle_bytes ?> bytes)</td>
337    <td><?cs var:studio.mac_bundle_checksum ?></td>
338  </tr>
339  <tr>
340    <td>Linux</td>
341    <td>
342  <a onclick="return onDownload(this,false,true)" id="linux-bundle" data-modal-toggle="studio_tos"
343    href="https://dl.google.com/dl/android/studio/ide-zips/<?cs var:studio.version ?>/<?cs var:studio.linux_bundle_download ?>"
344    ><?cs var:studio.linux_bundle_download ?></a>
345    </td>
346    <td id="linux-bundle-size"><?cs call:size_in_mb(studio.linux_bundle_bytes) ?> MB
347      <br>(<?cs var:studio.linux_bundle_bytes ?> bytes)</td>
348    <td><?cs var:studio.linux_bundle_checksum ?></td>
349  </tr>
350  </table>
351
352
353
354<h4 class="norule" style="margin-top:40px">Get just the command line tools</h4>
355
356<p>If you do not need Android Studio, you can download the basic Android
357command line tools below.</p>
358
359  <table class="download">
360    <tr>
361      <th>Platform</th>
362      <th>SDK tools package</th>
363      <th>Size</th>
364      <th>SHA-1 checksum</th>
365  </tr>
366  <tr>
367    <td rowspan="2">Windows</td>
368    <td>
369  <a onclick="return onDownload(this)" id="win-tools" data-modal-toggle="studio_tos"
370    href="//dl.google.com/android/<?cs
371var:sdk.win_installer
372?>"><?cs var:sdk.win_installer ?></a><br>
373    </td>
374    <td><?cs call:size_in_mb(sdk.win_installer_bytes) ?> MB
375      <br>(<?cs var:sdk.win_installer_bytes ?> bytes)</td>
376    <td><?cs var:sdk.win_installer_checksum ?></td>
377  </tr>
378  <tr>
379    <!-- blank TD from Windows rowspan -->
380    <td>
381  <a onclick="return onDownload(this)" id="win-tools2" data-modal-toggle="studio_tos"
382    href="//dl.google.com/android/<?cs var:sdk.win_download
383?>"><?cs var:sdk.win_download ?></a><br>
384    No installer
385    </td>
386    <td><?cs call:size_in_mb(sdk.win_bytes) ?> MB
387      <br>(<?cs var:sdk.win_bytes ?> bytes)</td>
388    <td><?cs var:sdk.win_checksum ?></td>
389  </tr>
390  <tr>
391    <td><nobr>Mac OS X</nobr></td>
392    <td>
393  <a onclick="return onDownload(this)" id="mac-tools" data-modal-toggle="studio_tos"
394    href="//dl.google.com/android/<?cs
395var:sdk.mac_download
396?>"><?cs var:sdk.mac_download ?></a>
397    </td>
398    <td><?cs call:size_in_mb(sdk.mac_bytes) ?> MB
399      <br>(<?cs var:sdk.mac_bytes ?> bytes)</td>
400    <td><?cs var:sdk.mac_checksum ?></td>
401  </tr>
402  <tr>
403    <td>Linux</td>
404    <td>
405  <a onclick="return onDownload(this)" id="linux-tools" data-modal-toggle="studio_tos"
406    href="//dl.google.com/android/<?cs
407var:sdk.linux_download
408?>"><?cs var:sdk.linux_download ?></a>
409    </td>
410    <td><?cs call:size_in_mb(sdk.linux_bytes) ?> MB
411      <br>(<?cs var:sdk.linux_bytes ?> bytes)</td>
412    <td><?cs var:sdk.linux_checksum ?></td>
413  </tr>
414  </table>
415  <p>
416Also see the <a href="<?cs var:toroot ?>tools/sdk/tools-notes.html">SDK
417tools release notes</a>.</p>
418
419  </div><!-- end wrap -->
420  </section>
421
422
423<?cs ########  The Android Studio version of the download script ######### ?>
424<script>
425  var os;
426  var bundlename;
427  var $toolslink;
428
429  if (navigator.appVersion.indexOf("Mobile")!=-1) {
430    // Do nothing for any "mobile" user agent
431  } else if (navigator.appVersion.indexOf("Win")!=-1) {
432    os = "Windows";
433    bundlename = '#win-bundle';
434    $toolslink = $('#win-tools');
435  } else if (navigator.appVersion.indexOf("Mac")!=-1) {
436    os = "Mac";
437    bundlename = '#mac-bundle';
438    $toolslink = $('#mac-tools');
439  } else if (navigator.appVersion.indexOf("Linux")!=-1 && navigator.appVersion.indexOf("Android")==-1) {
440    os = "Linux";
441    bundlename = '#linux-bundle';
442    $toolslink = $('#linux-tools');
443  }
444
445  if (os != undefined) {
446    $('#not-supported').hide();
447
448    /* set up primary Android Studio download button */
449    idname = bundlename + "-size";
450    sizeMB = $(idname).text().split(' MB')[0];
451    $('.download-bundle-button > .small').html(" for " + os + " <em>(" + sizeMB + " MB)</em>");
452    $('.download-bundle-button').click(function() { onDownload(this,true,true);}).attr('href', bundlename);
453  }
454
455
456  function onDownload(link, button, bundle) {
457
458    /* set text for download button */
459    if (button) {
460      $("#downloadForRealz").html($(link).text());
461    } else {
462      $("#downloadForRealz").html("Download " + $(link).text());
463    }
464
465    $("#downloadForRealz").attr('bundle', bundle);
466    if (bundle && !button) {
467      $("a#downloadForRealz").attr("name", "#" + $(link).attr('id'));
468    } else {
469      $("h2#tos-header").text('Download the Android SDK Tools');
470      $("a#downloadForRealz").attr("name", $(link).attr('href'));
471    }
472
473    return false;
474  }
475
476
477  function onAgreeChecked() {
478    /* verify that the TOS is agreed */
479    if ($("input#agree").is(":checked")) {
480
481      /* if downloading the bundle */
482      if ($("#downloadForRealz").attr('bundle')) {
483        /* construct the name of the link we want */
484        linkId = $("a#downloadForRealz").attr("name");
485        /* set the real url for download */
486        $("a#downloadForRealz").attr("href", $(linkId).attr("href"));
487      } else {
488        $("a#downloadForRealz").attr("href", $("a#downloadForRealz").attr("name"));
489      }
490
491      /* reveal the download button */
492      $("a#downloadForRealz").removeClass('disabled');
493    } else {
494      $("a#downloadForRealz").addClass('disabled');
495    }
496  }
497
498  function onDownloadForRealz(link) {
499    if ($("input#agree").is(':checked')) {
500      $("div.sdk-terms").slideUp();
501      if ($("#downloadForRealz").attr('bundle') == 'true') {
502        $("h2#tos-header").text('Now downloading Android Studio!');
503        $(".sdk-terms-intro").text('Redirecting to the install instructions...');
504        $("#sdk-terms-form").slideUp(function() {
505          setTimeout(function() {
506            window.location = "/sdk/installing/index.html";
507          }, 2000);
508        });
509      } else {
510        $("h2#tos-header").text('Now downloading the Android SDK Tools!');
511        $(".sdk-terms-intro").html("<p>Because you've chosen to download " +
512          "only the Android SDK tools (and not Android Studio), there are no " +
513          "setup procedures to follow.</p><p>For information about how to " +
514          "keep your SDK tools up to date, refer to the " +
515          "<a href='/tools/help/sdk-manager.html'>SDK Manager</a> guide.</p>");
516        $("#sdk-terms-form").slideUp();
517      }
518      ga('send', 'event', 'SDK', 'IDE and Tools', $("#downloadForRealz").html());
519      return true;
520    } else {
521      return false;
522    }
523  }
524
525  $(window).hashchange( function(){
526    if (location.hash == "") {
527      location.reload();
528    }
529  });
530
531</script>
532
533
534
535
536<?cs # THIS DIV WAS OPENED IN INDEX.JD ?>
537
538
539
540
541  <?cs else ?> <?cs # end if online ?>
542
543    <?cs if:sdk.preview ?><?cs # it's preview offline docs ?>
544      <p>Welcome developers! We are pleased to provide you with a preview SDK for the upcoming
545    Android 3.0 release, to give you a head-start on developing applications for it.
546    </p>
547
548      <p>See the <a
549    href="<?cs var:toroot ?>sdk/preview/start.html">Getting Started</a> document for more information
550    about how to set up the preview SDK and get started.</p>
551    <style type="text/css">
552    .non-preview { display:none; }
553    </style>
554
555    <?cs else ?><?cs # it's normal offline docs ?>
556
557      <?cs ########  HERE IS THE JD DOC CONTENT FOR OFFLINE ######### ?>
558      <?cs call:tag_list(root.descr) ?>
559      <style type="text/css">
560        body .offline { display:block; }
561        body .online { display:none; }
562      </style>
563      <script>
564        $('.reqs').show();
565      </script>
566    <?cs /if ?>
567
568  <?cs /if ?> <?cs # end if/else online ?>
569
570<?cs /if ?> <?cs # end if/else NDK ?>
571
572<?cs /if ?> <?cs # end if/else redirect ?>
573
574
575</div><!-- end jd-content -->
576
577<?cs if:!sdk.redirect && !devsite ?>
578<?cs include:"footer.cs" ?>
579<?cs /if ?>
580
581</div><!-- end g-unit -->
582
583<?cs include:"trailer.cs" ?>
584<?cs if:!devsite ?>
585<script src="https://developer.android.com/ytblogger_lists_unified.js?v=17" type="text/javascript"></script>
586<script src="/jd_lists_unified.js?v=17" type="text/javascript"></script>
587<script src="/jd_extras.js?v=17" type="text/javascript"></script>
588<script src="/jd_collections.js?v=17" type="text/javascript"></script>
589<script src="/jd_tag_helpers.js?v=17" type="text/javascript"></script>
590<?cs /if ?><!--end !devsite -->
591
592
593<!-- Start of Tag -->
594<script type="text/javascript">
595var axel = Math.random() + "";
596var a = axel * 10000000000000;
597document.write('<iframe src="https://2507573.fls.doubleclick.net/activityi;src=2507573;type=other026;cat=googl348;ord=' + a + '?" width="1" height="1" frameborder="0" style="display:none"></iframe>');
598</script>
599<noscript>
600<iframe src="https://2507573.fls.doubleclick.net/activityi;src=2507573;type=other026;cat=googl348;ord=1?" width="1" height="1" frameborder="0" style="display:none"></iframe>
601</noscript>
602<!-- End of Tag -->
603</body>
604</html>
605