diff --git a/docs/downloads/design/Android_Navigation_Drawer_Icon_20130516.zip b/docs/downloads/design/Android_Navigation_Drawer_Icon_20130516.zip
new file mode 100644
index 0000000..852df7d
--- /dev/null
+++ b/docs/downloads/design/Android_Navigation_Drawer_Icon_20130516.zip
Binary files differ
diff --git a/docs/downloads/training/NavigationDrawer.zip b/docs/downloads/training/NavigationDrawer.zip
new file mode 100644
index 0000000..3375a5c
--- /dev/null
+++ b/docs/downloads/training/NavigationDrawer.zip
Binary files differ
diff --git a/docs/html/_redirects.yaml b/docs/html/_redirects.yaml
index c70084c..27cedcb 100644
--- a/docs/html/_redirects.yaml
+++ b/docs/html/_redirects.yaml
@@ -107,6 +107,21 @@
 - from: /guide/topics/connectivity/usb/adk.html
   to: /tools/adk/index.html
 
+- from: /tools/workflow/publishing/versioning.html
+  to: /tools/publishing/versioning.html
+
+- from: /tools/workflow/publishing/publishing.html
+  to: /tools/publishing/publishing_overview.html
+
+- from: /tools/workflow/publishing_overview.html
+  to: /tools/publishing/publishing_overview.html
+
+- from: /tools/workflow/publishing/publishing_overview.html
+  to: /tools/publishing/publishing_overview.html
+
+- from: /tools/workflow/app-signing.html
+  to: /tools/publishing/app-signing.html
+
 - from: /tools/adk/aoa.html
   to: http://source.android.com/tech/accessories/aoap/aoa.html
 
@@ -204,6 +219,21 @@
 - from: /guide/tutorials/...
   to: /resources/tutorials/...
 
+# move ui docs to design
+
+- from: /guide/practices/ui_guidelines/index.html
+  to: /design/index.html
+
+- from: /guide/practices/ui_guidelines/icon_design.*
+  to: /design/style/iconography.html
+
+- from: /guide/practices/ui_guidelines/activity_task_design.html
+  to: /design/patterns/app-structure.html
+
+- from: /guide/practices/ui_guidelines/menu_design.html
+  to: /design/patterns/actionbar.html
+
+
 # ------------------- RESOURCES -------------------
 
 - from: /resources/dashboard/...
@@ -340,8 +370,8 @@
 - from: /deviceart
   to: http://developer.android.com/distribute/promote/device-art.html
 
-- from: /edu
-  to: /distribute/googleplay/edu/index.html
-
 - from: /edu/signup
   to: https://services.google.com/fb/forms/playedu
+
+- from: /edu
+  to: /distribute/googleplay/edu/index.html
diff --git a/docs/html/about/dashboards/index.jd b/docs/html/about/dashboards/index.jd
index 6956634..880d7e9 100644
--- a/docs/html/about/dashboards/index.jd
+++ b/docs/html/about/dashboards/index.jd
@@ -57,7 +57,7 @@
 </div>
 
 
-<p style="clear:both"><em>Data collected during a 14-day period ending on May 1, 2013.
+<p style="clear:both"><em>Data collected during a 14-day period ending on July 8, 2013.
 <br/>Any versions with less than 0.1% distribution are not shown.</em>
 </p>
 
@@ -83,7 +83,7 @@
 </div>
 
 
-<p style="clear:both"><em>Data collected during a 14-day period ending on May 1, 2013
+<p style="clear:both"><em>Data collected during a 14-day period ending on July 8, 2013
 <br/>Any screen configurations with less than 0.1% distribution are not shown.</em></p>
 
 
@@ -130,7 +130,7 @@
 
 
 
-<p style="clear:both"><em>Data collected during a 14-day period ending on May 1, 2013</em></p>
+<p style="clear:both"><em>Data collected during a 14-day period ending on July 8, 2013</em></p>
 
 
 
@@ -148,7 +148,7 @@
 var VERSION_DATA =
 [
   {
-    "chart": "//chart.googleapis.com/chart?chs=500x250&cht=p&chf=bg%2Cs%2C00000000&chd=t%3A1.8%2C3.7%2C38.5%2C0.1%2C27.5%2C28.4&chco=c4df9b%2C6fad0c&chl=Eclair%7CFroyo%7CGingerbread%7CHoneycomb%7CIce%20Cream%20Sandwich%7CJelly%20Bean",
+    "chart": "//chart.googleapis.com/chart?chl=Eclair%7CFroyo%7CGingerbread%7CHoneycomb%7CIce%20Cream%20Sandwich%7CJelly%20Bean&chco=c4df9b%2C6fad0c&chd=t%3A1.5%2C3.1%2C34.1%2C0.1%2C23.3%2C37.9&chf=bg%2Cs%2C00000000&chs=500x250&cht=p",
     "data": [
       {
         "api": 4,
@@ -158,22 +158,17 @@
       {
         "api": 7,
         "name": "Eclair",
-        "perc": "1.7"
+        "perc": "1.4"
       },
       {
         "api": 8,
         "name": "Froyo",
-        "perc": "3.7"
-      },
-      {
-        "api": 9,
-        "name": "Gingerbread",
-        "perc": "0.1"
+        "perc": "3.1"
       },
       {
         "api": 10,
         "name": "Gingerbread",
-        "perc": "38.4"
+        "perc": "34.1"
       },
       {
         "api": 13,
@@ -183,17 +178,17 @@
       {
         "api": 15,
         "name": "Ice Cream Sandwich",
-        "perc": "27.5"
+        "perc": "23.3"
       },
       {
         "api": 16,
         "name": "Jelly Bean",
-        "perc": "26.1"
+        "perc": "32.3"
       },
       {
         "api": 17,
         "name": "Jelly Bean",
-        "perc": "2.3"
+        "perc": "5.6"
       }
     ]
   }
@@ -205,35 +200,34 @@
 
 var SCREEN_DATA =
 [
-
   {
     "data": {
       "Large": {
         "hdpi": "0.4",
         "ldpi": "0.6",
-        "mdpi": "2.9",
+        "mdpi": "3.2",
         "tvdpi": "1.0",
-        "xhdpi": "0.7"
+        "xhdpi": "0.5"
       },
       "Normal": {
-        "hdpi": "37.3",
+        "hdpi": "34.9",
         "ldpi": "0.1",
-        "mdpi": "16.1",
-        "xhdpi": "24.9",
-        "xxhdpi": "1.3"
+        "mdpi": "16.0",
+        "xhdpi": "24.0",
+        "xxhdpi": "4.9"
       },
       "Small": {
-        "ldpi": "9.8"
+        "hdpi": "0.1",
+        "ldpi": "9.9"
       },
       "Xlarge": {
-        "hdpi": "0.1",
-        "ldpi": "0.2",
-        "mdpi": "4.5",
+        "hdpi": "0.2",
+        "mdpi": "4.1",
         "xhdpi": "0.1"
       }
     },
-    "densitychart": "//chart.googleapis.com/chart?chs=400x250&cht=p&chf=bg%2Cs%2C00000000&chd=t%3A10.7%2C23.5%2C1.0%2C37.8%2C25.7%2C1.3&chco=c4df9b%2C6fad0c&chl=ldpi%7Cmdpi%7Ctvdpi%7Chdpi%7Cxhdpi%7Cxxhdpi",
-    "layoutchart": "//chart.googleapis.com/chart?chs=400x250&cht=p&chf=bg%2Cs%2C00000000&chd=t%3A4.9%2C5.6%2C79.7%2C9.8&chco=c4df9b%2C6fad0c&chl=Xlarge%7CLarge%7CNormal%7CSmall"
+    "densitychart": "//chart.googleapis.com/chart?chl=ldpi%7Cmdpi%7Ctvdpi%7Chdpi%7Cxhdpi%7Cxxhdpi&chco=c4df9b%2C6fad0c&chd=t%3A10.7%2C23.3%2C1.0%2C35.6%2C24.6%2C4.9&chf=bg%2Cs%2C00000000&chs=400x250&cht=p",
+    "layoutchart": "//chart.googleapis.com/chart?chl=Xlarge%7CLarge%7CNormal%7CSmall&chco=c4df9b%2C6fad0c&chd=t%3A4.4%2C5.7%2C79.9%2C10.1&chf=bg%2Cs%2C00000000&chs=400x250&cht=p"
   }
 ];
 
diff --git a/docs/html/about/index.jd b/docs/html/about/index.jd
index 0b72701..1573cc3 100644
--- a/docs/html/about/index.jd
+++ b/docs/html/about/index.jd
@@ -1,4 +1,5 @@
 page.title=Android, the world's most popular mobile platform
+excludeFromSuggestions=true
 walkthru=0
 header.hide=0
 
diff --git a/docs/html/about/start.jd b/docs/html/about/start.jd
index fbe70e3..727c975 100644
--- a/docs/html/about/start.jd
+++ b/docs/html/about/start.jd
@@ -1,4 +1,5 @@
 page.title=Get Started
+excludeFromSuggestions=true
 walkthru=0
 
 @jd:body
diff --git a/docs/html/about/versions/jelly-bean.jd b/docs/html/about/versions/jelly-bean.jd
index 71957be..5812f3d 100644
--- a/docs/html/about/versions/jelly-bean.jd
+++ b/docs/html/about/versions/jelly-bean.jd
@@ -5,7 +5,14 @@
 tab2.link=#android-41
 
 @jd:body
-
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
 
 <style>
 #android-41 {display:none;}
diff --git a/docs/html/channels/io2013.jd b/docs/html/channels/io2013.jd
new file mode 100644
index 0000000..b2bde31
--- /dev/null
+++ b/docs/html/channels/io2013.jd
@@ -0,0 +1,354 @@
+fullpage=true
+page.title=Google I/O 13
+@jd:body
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
+
+<style>
+#ioplayer-frame {
+  z-index:10;
+  width:703px;
+  height:396px;
+  margin:0;
+  position:relative;
+}
+
+#noplayer-message {
+  position:absolute;
+  top:50%;left:0;
+  width:100%;
+  z-index:-1;
+  text-align:center;
+  display:none;
+}
+
+h1 {
+  font-weight:100;
+  font-size:40px;
+  line-height:30px;
+  margin:30px 0 10px 0px;
+  color:#000;
+}
+
+h2 {
+  font-weight:100;
+  font-size:30px;
+  line-height:30px;
+  margin:12px 0 10px 0px;
+  color:#000;
+  float:left;
+  display:block;
+}
+
+.col-4 h2 {
+  margin-top:40px;
+}
+
+ul.videos {
+  list-style:none;
+  margin:0;
+  width:auto;
+}
+ul.videos li {
+  display:block;
+  float:left;
+  position:relative;
+  margin:0 2px 2px 0;
+  background-repeat:no-repeat !important;
+  background-size:320px auto;
+  background-position:10% 50%;
+  z-index:1; /* IE: the description is 2 */
+}
+ul.videos li a {
+  color:#fff !important;
+  display:block;
+  margin:0;
+  padding:8px 12px;
+  width:209px;
+  height:134px;
+  box-shadow:inset 500px 500px 999px rgba(000, 000, 000, 0.2);
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, rgba(0,0,0,0.8)), color-stop(1, transparent));
+  background-image: -webkit-linear-gradient(top, rgba(0,0,0,0.8), transparent);
+  background-image: -moz-linear-gradient(top, rgba(0,0,0,0.8), transparent);
+  background-image: -o-linear-gradient(top, rgba(0,0,0,0.8), transparent);
+  background-image: linear-gradient(to bottom, rgba(0,0,0,0.8), transparent);
+  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cc000000', endColorstr='#00ffffff',GradientType=0 ); /* IE6-9 */
+}
+ul.videos.featured li {
+  margin:0 0 2px;
+}
+ul.videos.featured li a {
+  margin:0;
+  height:115px;
+}
+ul.videos li a:hover {
+  box-shadow:inset 500px 500px 999px rgba(255,255,255, 0.6);
+}
+ul.videos li h4 {
+  text-shadow:1px 1px 0 rgba(0,0,0,0.8);
+  font-size:18px;
+  line-height:22px;
+  color:#fff;
+  margin:0;
+  height:100%; /* IE: to fill clickable area */
+}
+
+ul.videos li .description-frame {
+  display:none;
+  z-index:2; /* IE: the li is 1 */
+}
+ul.videos li a:hover .description-frame {
+  display:block;
+  position:absolute;
+  top:80px;
+  left:8px;
+  z-index:99;
+}
+ul.videos .description {
+  background:#fff;
+  width:200px;
+  padding:8px;
+  -webkit-border-radius:1px;
+  -moz-border-radius:1px;
+  border-radius:1px;
+  -moz-box-shadow: 0 2px 3px 2px rgba(000,000,000, 0.4);
+  -webkit-box-shadow: 0 2px 3px 2px rgba(000,000,000, 0.4);
+  box-shadow: 0 2px 3px 2px rgba(000,000,000, 0.4);
+  font-size:11px;
+  line-height:12px;
+  color:#000;
+  overflow:hidden;
+}
+ul.videos .arrow-up {
+  position:absolute;
+  left:15px;
+  top:-11px;
+  width:0;
+  height:0;
+  border-bottom:12px solid #fff;
+  border-left:12px solid transparent;
+  border-right:12px solid transparent;
+}
+ul.videos .arrow-down {
+  position:absolute;
+  left:15px;
+  bottom:-11px;
+  width:0;
+  height:0;
+  border-top:12px solid #fff;
+  border-left:12px solid transparent;
+  border-right:12px solid transparent;
+}
+
+ul.videos span.tag {
+  font-size:.9em;
+  font-weight:normal;
+  display: block;
+  position: absolute;
+  bottom: 0;
+  color: #fff;
+  left: 0;
+  padding: 4px;
+  border-top-right-radius:4px;
+  text-transform:uppercase;
+  text-shadow: none;
+}
+ul.videos span.tag.design {
+  background-color:rgba(51, 181, 229, .7);
+  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cc33b5e5', endColorstr='#cc33b5e5',GradientType=0 ); /* IE6-9 */
+}
+ul.videos span.tag.develop {
+  background-color:rgba(255, 136, 0, .7);
+  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ccff8800', endColorstr='#ccff8800',GradientType=0 ); /* IE6-9 */
+}
+ul.videos span.tag.distribute {
+  background-color:rgba(153, 204, 0, .7);
+  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cc99cc00', endColorstr='#cc99cc00',GradientType=0 ); /* IE6-9 */
+}
+
+</style>
+
+
+
+
+
+
+
+<div class="wrap">
+
+  <div class="col-12" style="width:704px;margin:0">
+    <h1>Android @ Google I/O 13</h1>
+    <div id="ioplayer-frame">
+      <div id="noplayer-message">
+        <!-- busted flash player message -->
+        Your video is supposed to appear here.<br/>
+        Make sure you have the <a href="//get.adobe.com/flashplayer/" target="_blank">Flash&reg; Player</a>.
+      </div>
+      <div id="player"><!-- Youtube embeds here... actually replaces this div --></div>
+    </div>
+  </div>
+
+  <div class="col-4" style="margin:0;width:234px;padding:0 0 0 2px">
+    <h2 class="norule">Most Popular</h2>
+    <ul class="videos featured" id="playlist2">
+    </ul>
+  </div>
+</div>
+
+<div class="wrap">
+
+    <div style="position:absolute;width:940px;text-align:right">
+      <a href="//www.youtube.com/AndroidDevelopers" target="_blank">
+      More on YouTube
+        <img src="//www.youtube.com/favicon.ico" style="border:0;width:16px;height:16px;vertical-align:middle;margin:0 2px 3px 2px">
+      </a>
+    </div>
+  <div style="width:944px;overflow:hidden;padding:0 0 20px">
+    <h2 class="norule">All Videos</h2>
+    <ul class="videos" id="playlist1" style="clear:left">
+      <span id="videos-design"></span>
+      <span id="videos-develop"></span>
+      <span id="videos-distribute"></span>
+    </ul>
+  </div>
+
+</div>
+
+<br class="clearfix"/>
+
+      
+      
+      
+      
+      
+      
+      
+      
+      
+
+<script src="//swfobject.googlecode.com/svn/trunk/swfobject/swfobject.js" type="text/javascript"></script>
+<script type="text/javascript">
+
+/* Load a video into the player box.
+ * @param id        The YouTube video ID
+ * @param title     The video title to display in the player box (character escaped)
+ * @param autoplay  Whether to automatically play the video
+ */
+function loadVideo(id, title, autoplay) {
+  var url = '//www.youtube.com/v/' + id + '&rel=1&border=0&fs=1' + (autoplay?'&autoplay=1':'');
+  swfobject.embedSWF(url, 'player', '704', '397', '9.0.0', false, false, {allowfullscreen: 'true'});
+  $('body,html').animate({ scrollTop: 0 }, "slow");
+  setTimeout(function(){$('#noplayer-message').show()}, 2000);
+}
+
+
+function buildPlaylistDesign(data) {
+  buildPlaylist(data, $('ul#playlist1 #videos-design'), "design");
+}
+
+function buildPlaylistDevelop(data) {
+  buildPlaylist(data, $('ul#playlist1 #videos-develop'), "develop");
+}
+
+function buildPlaylistDistribute(data) {
+  buildPlaylist(data, $('ul#playlist1 #videos-distribute'), "distribute");
+}
+
+function buildPlaylist2(data) {
+  buildPlaylist(data, $('ul#playlist2'));
+}
+
+function buildPlaylist(data, ul, tag) {
+
+  var MAX_DESC_LENGTH = 200; // the length at which we will trim the description
+  var feed = data.feed;
+  var entries = feed.entry || [];
+  var playlistId = feed.yt$playlistId.$t;
+
+  // Loop through each entry (each video) and add it to the '#DevelopersLive' list
+  for (var i = 0; i < entries.length; i++) {
+    var entry = entries[i];
+    var title = entry.title.$t;
+    var id = entry.media$group.yt$videoid.$t;
+    // get 180x320 thumbnail
+    var thumbs = entry.media$group.media$thumbnail;
+    var thumbUrl;
+    for (var j = 0; j < thumbs.length; j++) {
+      if (thumbs[j].yt$name == "hqdefault") {
+        thumbUrl = thumbs[j].url;
+      }
+    }
+
+    // chop out the google io title
+    title = title.substr(title.indexOf("-") + 1, title.length);
+
+    var fullDescription = entry.media$group.media$description.$t;
+    var playerUrl = entry.media$group.media$content[0].url;
+    var shortDescription = fullDescription.substr(0, MAX_DESC_LENGTH);
+    // further shorten description if there's a url (remove it)
+    var httpindex = shortDescription.indexOf("http://");
+    if (httpindex != -1) {
+      shortDescription = shortDescription.substring(0,httpindex);
+    }
+    shortDescription += shortDescription.length == MAX_DESC_LENGTH ? "..." : ""; // add ellipsis if we've chopped the description
+
+    var a = $('<a href="#" id="' + id + '" '
+          + 'onclick="loadVideo(\'' + id + '\',\'' + escape(title) + '\',true); return false;" />');
+    var pShortDescription = $('<div class="description-frame"><div class="arrow-up"></div>'
+          + '<div class="description">' + shortDescription + '</div></div>');
+    var h4Title = "<h4>" + title + "</h4>";
+    var li = $('<li style="background-image:url(\'' + thumbUrl +'\')" />');
+
+    li.append(a);
+    a.append(h4Title).append(pShortDescription);
+
+    if (tag !== undefined) {
+      var $tag = $('<span class="tag ' + tag + '">' + tag + '</span>');
+      a.append($tag);
+    }
+
+    ul.append(li);
+
+
+    // put the first video in the player 
+    if ((tag == "design") && (i == 0)) {
+      loadVideo(id, escape(title), false);
+    }
+  }
+}
+
+
+/* Request the playlist feeds from YouTube */
+function showDevelopersLivePlaylist() {
+  var playlistId = "PLWz5rJ2EKKc-qVhMuAprIFYFbCotdgJKq"; /* IO 13 - Design */
+  $.getScript("//gdata.youtube.com/feeds/api/playlists/"
+          + playlistId +
+          "?v=2&alt=json-in-script&max-results=50&callback=buildPlaylistDesign&orderby=position");
+
+  playlistId = "PLWz5rJ2EKKc9rkwO9yBosRvkQBJd5utmR"; /* IO 13 - Develop */
+  $.getScript("//gdata.youtube.com/feeds/api/playlists/"
+          + playlistId +
+          "?v=2&alt=json-in-script&max-results=50&callback=buildPlaylistDevelop&orderby=position");
+
+  playlistId = "PLWz5rJ2EKKc-1WjgQqL0B4OQtbLfhMlB2"; /* IO 13 - Distribute */
+  $.getScript("//gdata.youtube.com/feeds/api/playlists/"
+          + playlistId +
+          "?v=2&alt=json-in-script&max-results=50&callback=buildPlaylistDistribute&orderby=position");
+
+
+  playlistId = "PLWz5rJ2EKKc9WGUwq2gQ-coU3fSyexgOx"; /* IO 13 - The Android Sessions */
+  $.getScript("//gdata.youtube.com/feeds/api/playlists/"
+          + playlistId +
+          "?v=2&alt=json-in-script&max-results=3&callback=buildPlaylist2&orderby=viewCount");
+}
+
+showDevelopersLivePlaylist();
+
+
+</script>
\ No newline at end of file
diff --git a/docs/html/design/building-blocks/buttons.jd b/docs/html/design/building-blocks/buttons.jd
index 600ec6c..7957ef8 100644
--- a/docs/html/design/building-blocks/buttons.jd
+++ b/docs/html/design/building-blocks/buttons.jd
@@ -2,6 +2,13 @@
 page.tags="button","input"
 @jd:body
 
+<a class="notice-developers" href="{@docRoot}guide/topics/ui/controls/button.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Buttons</p>
+  </div>
+</a>
+
 <p>A button consists of text and/or an image that clearly communicates what action will occur when the
 user touches it. Android supports two different types of buttons: <em>basic buttons</em> and <em>borderless
 buttons</em>. Both can contain text labels and/or images.</p>
@@ -38,9 +45,3 @@
 
 <img src="{@docRoot}design/media/buttons_borderless.png">
 
-
-<div class="note develop">
-<p><strong>Developer Guide</strong></p>
-  <p>For information about how to build and customize buttons in your app,
-  see the <a href="{@docRoot}guide/topics/ui/controls/button.html">Buttons</a> API guide.</p>
-</div>
diff --git a/docs/html/design/building-blocks/dialogs.jd b/docs/html/design/building-blocks/dialogs.jd
index 2f6ca27..f4bb87e 100644
--- a/docs/html/design/building-blocks/dialogs.jd
+++ b/docs/html/design/building-blocks/dialogs.jd
@@ -2,6 +2,13 @@
 page.tags="dialog","alert","popup","toast"
 @jd:body
 
+<a class="notice-developers" href="{@docRoot}guide/topics/ui/dialogs.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Dialogs</p>
+  </div>
+</a>
+
 <p>Dialogs prompt the user for decisions or additional information required by the app to continue a
 task. Such requests can range from simple Cancel/OK decisions to more complex layouts asking the
 user to adjust settings or enter text.</p>
@@ -123,11 +130,6 @@
   </div>
 </div>
 
-<div class="note develop">
-<p><strong>Developer Guide</strong></p>
-  <p>For information about how to build dialogs in your app,
-  see the <a href="{@docRoot}guide/topics/ui/dialogs.html">Dialogs</a> API guide.</p>
-</div>
 
 <h2 id="popups">Popups</h2>
 
@@ -144,12 +146,19 @@
 <div class="layout-content-row">
   <div class="layout-content-col span-6">
 
-    <div class="vspace size-6"></div>
+    <div class="vspace size-3"></div>
 
 <p>Toasts provide lightweight feedback about an operation in a small popup. For example, navigating
 away from an email before you send it triggers a "Draft saved" toast to let you know that you can
 continue editing later. Toasts automatically disappear after a timeout.</p>
 
+<a class="notice-developers left" href="{@docRoot}guide/topics/ui/notifiers/toasts.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Toasts</p>
+  </div>
+</a>
+
   </div>
   <div class="layout-content-col span-7">
 
@@ -158,9 +167,3 @@
   </div>
 </div>
 
-
-<div class="note develop">
-<p><strong>Developer Guide</strong></p>
-  <p>For information about how to create toasts,
-  see the <a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">Toasts</a> API guide.</p>
-</div>
diff --git a/docs/html/design/building-blocks/grid-lists.jd b/docs/html/design/building-blocks/grid-lists.jd
index 8c82ba9..1a09ef5 100644
--- a/docs/html/design/building-blocks/grid-lists.jd
+++ b/docs/html/design/building-blocks/grid-lists.jd
@@ -4,6 +4,13 @@
 
 <img src="{@docRoot}design/media/gridview_overview.png">
 
+<a class="notice-developers" href="{@docRoot}guide/topics/ui/layout/gridview.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Grid View</p>
+  </div>
+</a>
+
 <p>Grid lists are an alternative to standard list views. They are best suited for showing data sets
 that represent themselves through images. In contrast to simple lists, grid lists may scroll either
 vertically or horizontally.</p>
diff --git a/docs/html/design/building-blocks/lists.jd b/docs/html/design/building-blocks/lists.jd
index 16927a6..5514824 100644
--- a/docs/html/design/building-blocks/lists.jd
+++ b/docs/html/design/building-blocks/lists.jd
@@ -2,6 +2,13 @@
 page.tags="listview","layout"
 @jd:body
 
+<a class="notice-developers" href="{@docRoot}guide/topics/ui/layout/listview.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>List View</p>
+  </div>
+</a>
+
 <p>Lists present multiple line items in a vertical arrangement. They can be used for data selection as
 well as drilldown navigation.</p>
 
diff --git a/docs/html/design/building-blocks/pickers.jd b/docs/html/design/building-blocks/pickers.jd
index 47363d0..6dd72ba 100644
--- a/docs/html/design/building-blocks/pickers.jd
+++ b/docs/html/design/building-blocks/pickers.jd
@@ -2,6 +2,13 @@
 page.tags="datepicker","timepicker"
 @jd:body
 
+<a class="notice-developers" href="{@docRoot}guide/topics/ui/controls/pickers.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Pickers</p>
+  </div>
+</a>
+
 <p>Pickers provide a simple way to select a single value from a set. In addition to touching the
 up/down arrow buttons, it's possible to set the desired value from the keyboard or via a swipe
 gesture.</p>
@@ -31,9 +38,3 @@
 
 <img src="{@docRoot}design/media/picker_datetime.png">
 
-
-<div class="note develop">
-<p><strong>Developer Guide</strong></p>
-  <p>For information about how to create date and time pickers,
-  see the <a href="{@docRoot}guide/topics/ui/controls/pickers.html">Pickers</a> API guide.</p>
-</div>
diff --git a/docs/html/design/building-blocks/spinners.jd b/docs/html/design/building-blocks/spinners.jd
index 3550b0c..c00b639 100644
--- a/docs/html/design/building-blocks/spinners.jd
+++ b/docs/html/design/building-blocks/spinners.jd
@@ -2,6 +2,13 @@
 page.tags="spinner","dropdown"
 @jd:body
 
+<a class="notice-developers" href="{@docRoot}guide/topics/ui/controls/spinner.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Spinners</p>
+  </div>
+</a>
+
 <p>Spinners provide a quick way to select one value from a set. In the default state, a spinner shows
 its currently selected value. Touching the spinner displays a dropdown menu with all other available
 values, from which the user can select a new one.</p>
@@ -37,9 +44,3 @@
   Spinners in the Holo Dark and Holo Light themes, in various states.
 </div>
 
-
-<div class="note develop">
-<p><strong>Developer Guide</strong></p>
-  <p>For information about how to create spinners,
-  see the <a href="{@docRoot}guide/topics/ui/controls/spinner.html">Spinners</a> API guide.</p>
-</div>
diff --git a/docs/html/design/building-blocks/switches.jd b/docs/html/design/building-blocks/switches.jd
index 0b195b9..74cab5a 100644
--- a/docs/html/design/building-blocks/switches.jd
+++ b/docs/html/design/building-blocks/switches.jd
@@ -4,31 +4,53 @@
 
 <p>Switches allow the user to select options. There are three kinds of switches: checkboxes, radio
 buttons, and on/off switches.</p>
+
+
+
 <h2 id="checkboxes">Checkboxes</h2>
 
+<a class="notice-developers" href="{@docRoot}guide/topics/ui/controls/checkbox.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Checkboxes</p>
+  </div>
+</a>
+
 <p>Checkboxes allow the user to select multiple options from a set. Avoid using a single checkbox to
 turn an option off or on. Instead, use an on/off switch.</p>
 
   <img src="{@docRoot}design/media/switches_checkboxes.png">
 
+
+
 <h2 id="radio-buttons">Radio Buttons</h2>
 
+<a class="notice-developers" href="{@docRoot}guide/topics/ui/controls/radiobutton.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Radio Buttons</p>
+  </div>
+</a>
+
 <p>Radio buttons allow the user to select one option from a set. Use radio buttons for exclusive
 selection if you think that the user needs to see all available options side-by-side. Otherwise,
 consider a spinner, which uses less space.</p>
 
   <img src="{@docRoot}design/media/switches_radios.png">
 
+
+
 <h2 id="switches">On/off Switches</h2>
 
+<a class="notice-developers" href="{@docRoot}guide/topics/ui/controls/togglebutton.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Toggle Buttons</p>
+  </div>
+</a>
+
 <p>On/off switches toggle the state of a single settings option.</p>
 
   <img src="{@docRoot}design/media/switches_switches.png">
 
-<div class="note develop">
-<p><strong>Developer Guide</strong></p>
-  <p>For information about how to create these different switches,
-  see the <a href="{@docRoot}guide/topics/ui/controls/checkbox.html">Checkboxes</a>,
-  <a href="{@docRoot}guide/topics/ui/controls/radiobutton.html">Radio Buttons</a>, or
-  <a href="{@docRoot}guide/topics/ui/controls/togglebutton.html">Toggle Buttons</a> API guides.</p>
-</div>
+
diff --git a/docs/html/design/building-blocks/tabs.jd b/docs/html/design/building-blocks/tabs.jd
index 79cc9c7..4778400 100644
--- a/docs/html/design/building-blocks/tabs.jd
+++ b/docs/html/design/building-blocks/tabs.jd
@@ -4,6 +4,13 @@
 
 <img src="{@docRoot}design/media/tabs_overview.png">
 
+<a class="notice-developers" href="{@docRoot}training/implementing-navigation/lateral.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Creating Swipe Views with Tabs</p>
+  </div>
+</a>
+
 <p>Tabs in the action bar make it easy to explore and switch between different views or functional
 aspects of your app, or to browse categorized data sets.</p>
 
@@ -59,9 +66,3 @@
 
 <img src="{@docRoot}design/media/tabs_stacked.png">
 
-
-<div class="note develop">
-<p><strong>Developer Guide</strong></p>
-  <p>For information about how to create tabs,
-  see the <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> API guide.</p>
-</div>
diff --git a/docs/html/design/building-blocks/text-fields.jd b/docs/html/design/building-blocks/text-fields.jd
index 82321f0..383531b 100644
--- a/docs/html/design/building-blocks/text-fields.jd
+++ b/docs/html/design/building-blocks/text-fields.jd
@@ -2,6 +2,13 @@
 page.tags="text","edittext","input"
 @jd:body
 
+<a class="notice-developers" href="{@docRoot}guide/topics/ui/controls/text.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Text Fields</p>
+  </div>
+</a>
+
 <p>Text fields allow the user to type text into your app. They can be either single line or multi-line.
 Touching a text field places the cursor and automatically displays the keyboard. In addition to
 typing, text fields allow for a variety of other activities, such as text selection (cut, copy,
@@ -70,10 +77,3 @@
   </div>
 </div>
 
-
-<div class="note develop">
-<p><strong>Developer Guide</strong></p>
-  <p>For information about how to create text fields, provide auto-complete suggestions,
-  and specify the input mode,
-  see the <a href="{@docRoot}guide/topics/ui/controls/text.html">Text Fields</a> API guide.</p>
-</div>
diff --git a/docs/html/design/design_toc.cs b/docs/html/design/design_toc.cs
index c3020e1..ff465bf 100644
--- a/docs/html/design/design_toc.cs
+++ b/docs/html/design/design_toc.cs
@@ -31,6 +31,7 @@
       <li><a href="<?cs var:toroot ?>design/patterns/app-structure.html">App Structure</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/navigation.html">Navigation</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/actionbar.html">Action Bar</a></li>
+      <li><a href="<?cs var:toroot ?>design/patterns/navigation-drawer.html">Navigation Drawer</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/multi-pane-layouts.html">Multi-pane Layouts</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/swipe-views.html">Swipe Views</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/selection.html">Selection</a></li>
diff --git a/docs/html/design/downloads/index.jd b/docs/html/design/downloads/index.jd
index 00f4467..ab6bb1b 100644
--- a/docs/html/design/downloads/index.jd
+++ b/docs/html/design/downloads/index.jd
@@ -1,5 +1,13 @@
 page.title=Downloads
 @jd:body
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
 
 <div class="layout-content-row">
   <div class="layout-content-col span-9">
diff --git a/docs/html/design/index.jd b/docs/html/design/index.jd
index 1e6b40c..d4ef07f 100644
--- a/docs/html/design/index.jd
+++ b/docs/html/design/index.jd
@@ -2,6 +2,14 @@
 header.hide=1
 footer.hide=1
 @jd:body
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
 
 <style>
 #landing-graphic-container {
diff --git a/docs/html/design/media/actionbar_drawer.png b/docs/html/design/media/actionbar_drawer.png
deleted file mode 100644
index 95e04f5..0000000
--- a/docs/html/design/media/actionbar_drawer.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/design/media/action_bar_pattern_default_tabs.png b/docs/html/design/media/app_structure_default_tabs.png
similarity index 100%
rename from docs/html/design/media/action_bar_pattern_default_tabs.png
rename to docs/html/design/media/app_structure_default_tabs.png
Binary files differ
diff --git a/docs/html/design/media/app_structure_drawer.png b/docs/html/design/media/app_structure_drawer.png
new file mode 100644
index 0000000..560e834
--- /dev/null
+++ b/docs/html/design/media/app_structure_drawer.png
Binary files differ
diff --git a/docs/html/design/media/action_bar_pattern_spinner.png b/docs/html/design/media/app_structure_spinner.png
similarity index 100%
rename from docs/html/design/media/action_bar_pattern_spinner.png
rename to docs/html/design/media/app_structure_spinner.png
Binary files differ
diff --git a/docs/html/design/media/devices_displays_density.png b/docs/html/design/media/devices_displays_density.png
index 7ddad31..4e3cbf6 100644
--- a/docs/html/design/media/devices_displays_density.png
+++ b/docs/html/design/media/devices_displays_density.png
Binary files differ
diff --git a/docs/html/design/media/devices_displays_density@2x.png b/docs/html/design/media/devices_displays_density@2x.png
new file mode 100644
index 0000000..79a46b0
--- /dev/null
+++ b/docs/html/design/media/devices_displays_density@2x.png
Binary files differ
diff --git a/docs/html/design/media/navigation_between_apps_back.png b/docs/html/design/media/navigation_between_apps_back.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/docs/html/design/media/navigation_between_apps_inward.png b/docs/html/design/media/navigation_between_apps_inward.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/docs/html/design/media/navigation_between_apps_up.png b/docs/html/design/media/navigation_between_apps_up.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/docs/html/design/media/navigation_between_siblings_market1.png b/docs/html/design/media/navigation_between_siblings_market1.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/docs/html/design/media/navigation_between_siblings_market2.png b/docs/html/design/media/navigation_between_siblings_market2.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/docs/html/design/media/navigation_drawer_CAB.png b/docs/html/design/media/navigation_drawer_CAB.png
new file mode 100644
index 0000000..9d4a5b56
--- /dev/null
+++ b/docs/html/design/media/navigation_drawer_CAB.png
Binary files differ
diff --git a/docs/html/design/media/navigation_drawer_collapse.png b/docs/html/design/media/navigation_drawer_collapse.png
new file mode 100644
index 0000000..7ca56da
--- /dev/null
+++ b/docs/html/design/media/navigation_drawer_collapse.png
Binary files differ
diff --git a/docs/html/design/media/navigation_drawer_cross_nav.png b/docs/html/design/media/navigation_drawer_cross_nav.png
new file mode 100644
index 0000000..bf8d238
--- /dev/null
+++ b/docs/html/design/media/navigation_drawer_cross_nav.png
Binary files differ
diff --git a/docs/html/design/media/navigation_drawer_first_run.png b/docs/html/design/media/navigation_drawer_first_run.png
new file mode 100644
index 0000000..728f29f
--- /dev/null
+++ b/docs/html/design/media/navigation_drawer_first_run.png
Binary files differ
diff --git a/docs/html/design/media/navigation_drawer_holo_dark_light.png b/docs/html/design/media/navigation_drawer_holo_dark_light.png
new file mode 100644
index 0000000..dcb91ab9
--- /dev/null
+++ b/docs/html/design/media/navigation_drawer_holo_dark_light.png
Binary files differ
diff --git a/docs/html/design/media/navigation_drawer_indicator_big.png b/docs/html/design/media/navigation_drawer_indicator_big.png
new file mode 100644
index 0000000..5faa93b
--- /dev/null
+++ b/docs/html/design/media/navigation_drawer_indicator_big.png
Binary files differ
diff --git a/docs/html/design/media/navigation_drawer_layout.png b/docs/html/design/media/navigation_drawer_layout.png
new file mode 100644
index 0000000..e59b37c
--- /dev/null
+++ b/docs/html/design/media/navigation_drawer_layout.png
Binary files differ
diff --git a/docs/html/design/media/navigation_drawer_nav_and_actions.png b/docs/html/design/media/navigation_drawer_nav_and_actions.png
new file mode 100644
index 0000000..0df04e9
--- /dev/null
+++ b/docs/html/design/media/navigation_drawer_nav_and_actions.png
Binary files differ
diff --git a/docs/html/design/media/navigation_drawer_navigation_hubs.png b/docs/html/design/media/navigation_drawer_navigation_hubs.png
new file mode 100644
index 0000000..9f4b244
--- /dev/null
+++ b/docs/html/design/media/navigation_drawer_navigation_hubs.png
Binary files differ
diff --git a/docs/html/design/media/navigation_drawer_open_from_lower.png b/docs/html/design/media/navigation_drawer_open_from_lower.png
new file mode 100644
index 0000000..ec5f03d
--- /dev/null
+++ b/docs/html/design/media/navigation_drawer_open_from_lower.png
Binary files differ
diff --git a/docs/html/design/media/navigation_drawer_open_overflow.png b/docs/html/design/media/navigation_drawer_open_overflow.png
new file mode 100644
index 0000000..112a414
--- /dev/null
+++ b/docs/html/design/media/navigation_drawer_open_overflow.png
Binary files differ
diff --git a/docs/html/design/media/navigation_drawer_overview.png b/docs/html/design/media/navigation_drawer_overview.png
new file mode 100644
index 0000000..42d21fa
--- /dev/null
+++ b/docs/html/design/media/navigation_drawer_overview.png
Binary files differ
diff --git a/docs/html/design/media/navigation_drawer_peek.png b/docs/html/design/media/navigation_drawer_peek.png
new file mode 100644
index 0000000..c59881e
--- /dev/null
+++ b/docs/html/design/media/navigation_drawer_peek.png
Binary files differ
diff --git a/docs/html/design/media/navigation_drawer_quick_to_top.png b/docs/html/design/media/navigation_drawer_quick_to_top.png
new file mode 100644
index 0000000..0e44915
--- /dev/null
+++ b/docs/html/design/media/navigation_drawer_quick_to_top.png
Binary files differ
diff --git a/docs/html/design/media/navigation_drawer_reset_backstack.png b/docs/html/design/media/navigation_drawer_reset_backstack.png
new file mode 100644
index 0000000..c0c2f61
--- /dev/null
+++ b/docs/html/design/media/navigation_drawer_reset_backstack.png
Binary files differ
diff --git a/docs/html/design/media/navigation_drawer_settings_help.png b/docs/html/design/media/navigation_drawer_settings_help.png
new file mode 100644
index 0000000..ed29971
--- /dev/null
+++ b/docs/html/design/media/navigation_drawer_settings_help.png
Binary files differ
diff --git a/docs/html/design/media/navigation_drawer_titles_icons.png b/docs/html/design/media/navigation_drawer_titles_icons.png
new file mode 100644
index 0000000..b726c9b
--- /dev/null
+++ b/docs/html/design/media/navigation_drawer_titles_icons.png
Binary files differ
diff --git a/docs/html/design/media/navigation_drawer_top_out.png b/docs/html/design/media/navigation_drawer_top_out.png
new file mode 100644
index 0000000..ad92b77
--- /dev/null
+++ b/docs/html/design/media/navigation_drawer_top_out.png
Binary files differ
diff --git a/docs/html/design/patterns/accessibility.jd b/docs/html/design/patterns/accessibility.jd
index 5f46082..16a39d6 100644
--- a/docs/html/design/patterns/accessibility.jd
+++ b/docs/html/design/patterns/accessibility.jd
@@ -2,6 +2,13 @@
 page.tags="accessibility","navigation","input"
 @jd:body
 
+<a class="notice-developers" href="{@docRoot}training/accessibility/index.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Implementing Accessibility</p>
+  </div>
+</a>
+
 <p>One of Android's missions is to organize the world's information and make it universally accessible and useful. Accessibility is the measure of how successfully a product can be used by people with varying abilities. Our mission applies to all users-including people with disabilities such as visual impairment, color deficiency, hearing loss, and limited dexterity.</p>
 <p><a href="https://www.google.com/#hl=en&q=universal+design&fp=1">Universal design</a> is the practice of making products that are inherently accessible to all users, regardless of ability. The Android design patterns were created in accordance with universal design principles, and following them will help your app meet basic usability standards. Adhering to universal design and enabling Android's accessibility tools will make your app as accessible as possible.</p>
 <p>Robust support for accessibility will increase your app's user base. It may also be required for adoption by some organizations.</p>
@@ -71,13 +78,6 @@
 <p>Turn on the TalkBack service in <strong>Settings > Accessibility</strong> and navigate your application using directional controls or eyes-free navigation.</p>
 
 
-<div class="note develop">
-<p><strong>Developer Guide</strong></p>
-  <p>For information about how to properly implement accessibility in your app, see the
-  <a href="{@docRoot}guide/topics/ui/accessibility/index.html">Accessibility</a>
-  API guide.</p>
-</div>
-
 
 <h2>Checklist</h2>
 <ul>
diff --git a/docs/html/design/patterns/actionbar.jd b/docs/html/design/patterns/actionbar.jd
index da9c3c3..6020034 100644
--- a/docs/html/design/patterns/actionbar.jd
+++ b/docs/html/design/patterns/actionbar.jd
@@ -4,6 +4,14 @@
 
 <img src="{@docRoot}design/media/action_bar_pattern_overview.png">
 
+<a class="notice-developers" href="{@docRoot}guide/topics/ui/actionbar.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Action Bar</p>
+  </div>
+</a>
+
+
 <p>The <em>action bar</em> is a dedicated piece of real estate at the top of each screen that is generally persistent throughout the app.</p>
 <p><strong>It provides several key functions</strong>:</p>
 <ul>
@@ -48,7 +56,7 @@
         <p>
 
 If your app displays data in different views, this segment of the action bar allows users to switch
-views. Examples of view-switching controls are drop-down menus or tab controls. 
+views. Examples of view-switching controls are drop-down menus or tab controls. For more information on view-switching, see the <a href="{@docRoot}design/patterns/app-structure.html">App Structure</a> pattern.
 
         </p>
         <p>
@@ -115,132 +123,11 @@
   </div>
 </div>
 
-<h2 id="contextual">Contextual Action Bars</h2>
-
-<p>A <em>contextual action bar (CAB)</em> is a temporary action bar that overlays the app's action bar for the
-duration of a particular sub-task. CABs are most typically used for tasks that involve acting on
-selected data or text.</p>
-
-<img src="{@docRoot}design/media/action_bar_cab.png">
-<div class="figure-caption">
-  Contextual action bar shown in Browser and Gmail
-</div>
-
-<p>The selection CAB appears after a long press on a selectable data item triggers selection mode.</p>
-<p><strong>From here the user can</strong>:</p>
-<ul>
-<li>Select additional elements by touching them.</li>
-<li>Trigger an action from the CAB that applies to all selected data items. The CAB then
-   automatically dismisses itself.</li>
-<li>Dismiss the CAB via the navigation bar's Back button or the CAB's checkmark button. This removes
-   the CAB along with all selection highlights.</li>
-</ul>
-<p>Use CABs whenever you allow the user to select data via long press. You can control the action
-content of a CAB in order to insert the actions you would like the user to be able to perform.</p>
-<p>For more information, refer to the <a href="{@docRoot}design/patterns/selection.html">Selection
-pattern</a>.</p>
-
-<h2 id="elements">View Controls</h2>
-<p>If your app displays data in different views, the action bar has three different controls to allow users to switch between them: tabs, spinners, and drawers.</p>
-
-<h4>Tabs</h4>
-<p><em>Tabs</em> display app views concurrently and make it easy to explore and switch between them. Tabs may be fixed, where all tabs are simultaneously displayed, or may scroll, allowing a larger number of views to be presented.</p>
-
-<img src="{@docRoot}design/media/tabs_youtube.png">
-
-<p><strong>Use tabs if</strong>:</p>
-<ul>
-<li>You expect your app's users to switch views frequently.</li>
-<li>You want the user to be highly aware of the alternate views.</li>
-</ul>
-
-<h4>Fixed tabs</h4>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-<p><em>Fixed tabs</em> are always visible on the screen, and can't be moved out of the way like scrollable
-tabs. Fixed tabs in the main action bar can move to the top bar when the screen orientation changes.</p>
-
-<p>Use fixed tabs to support quick changes between two or three app views. Fixed tabs should always allow the user to navigate between the views by swiping left or right on the content area.</p>
-
-  </div>
-  <div class="layout-content-col span-7">
-
-    <img src="{@docRoot}design/media/action_bar_pattern_default_tabs.png">
-    <div class="figure-caption">
-      Default fixed tabs shown in Holo Dark &amp; Light.
-    </div>
-
-  </div>
-</div>
-
-<h4>Scrollable tabs</h4>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-<p><em>Scrollable tabs</em> always take up the entire width of the bar, with the currently active view item in the center, and therefore need to live in a dedicated bar. Scrollable tabs can themselves be scrolled horizontally to bring more tabs into view.</p>
-<p>Use scrollable tabs if you have a large number of views or if you're unsure how many views will be displayed because your app inserts views dynamically (for example, open chats in a messaging app that the user can navigate between). Scrollable tabs should always allow the user to navigate between the views by swiping left or right on the content area as well as swiping the tabs themselves.</p>
-
-  </div>
-  <div class="layout-content-col span-7">
-
-    <video width="400" class="with-shadow play-on-hover" autoplay>
-      <source src="{@docRoot}design/media/tabs_scrolly.mp4" type="video/mp4">
-      <source src="{@docRoot}design/media/tabs_scrolly.webm" type="video/webm">
-      <source src="{@docRoot}design/media/tabs_scrolly.ogv" type="video/ogg">
-    </video>
-    <div class="figure-caption">
-      Scrolling tabs in the Play Store app.
-      <div class="video-instructions">&nbsp;</div>
-    </div>
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-
-<h4>Spinners</h4>
-<p>A <em>spinner</em> is a drop-down menu that allows users to switch between views of your app. </p>
-<p><strong>Use a spinner in the main action bar if</strong>:</p>
-<ul>
-<li>You don't want to give up the vertical screen real estate for a dedicated tab bar.</li>
-<li>The user is switching between views of the same data set (for example: calendar events viewed by day, week, or month) or data sets of the same type (such as content for two different accounts).</li>
-</ul>
-
-  </div>
-  <div class="layout-content-col span-7">
-
-    <img src="{@docRoot}design/media/action_bar_pattern_spinner.png">
-    <div class="figure-caption">
-      Action bar spinner from Calendar application.
-    </div>
-
-  </div>
-</div>
-
-<h4>Drawers</h4>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-<p>A <em>drawer</em> is a slide-out menu that allows users to switch between views of your app. It can be opened by touching the action bar's app icon (decorated with the Up caret.) Additionally, a drawer can be revealed by an edge swipe from the left of the screen, and dismissed by swiping from the right edge of the drawer. However, because many users will rely on Up navigation to open a drawer, it is only suitable for use at the topmost level of your app's hierarchy.</p>
-
-<p><strong>Open a drawer from the main action bar if</strong>:</p>
-<ul>
-<li>You don't want to give up the vertical screen real estate for a dedicated tab bar.</li>
-<li>You want to provide direct navigation to a number of views within your app which don't have direct relationships between each other.</li>
-</ul>
-
-  </div>
-  <div class="layout-content-col span-7">
-    <img src="{@docRoot}design/media/actionbar_drawer.png">
-  </div>
-</div>
-
-<h2>Action buttons</h2>
+<h2>Action Buttons</h2>
 <p><em>Action buttons</em> on the action bar surface your app's most important activities. Think about which
 buttons will get used most often, and order them accordingly. Depending on available screen real
 estate, the system shows your most important actions as action buttons and moves the rest to the
-action overflow. The action bar and the action overflow should only present actions to the user that
-are available. If an action is unavailable in the current context, hide it. Do not show it as
-disabled.</p>
+action overflow. The action bar should show only those actions that are available to the user. If an action is unavailable in the current context, hide it. Do not show it as disabled.</p>
 
 <img src="{@docRoot}design/media/action_bar_pattern_action_icons.png">
 <div class="figure-caption">
@@ -350,16 +237,32 @@
   The Gallery app's share action provider with extended spinner for additional sharing options.
 </div>
 
+<h2 id="contextual">Contextual Action Bars</h2>
 
-<div class="note develop">
-<p><strong>Developer Guide</strong></p>
-  <p>For information about how to build an action bar
-  see the <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> API guide.
-  For information about contextual action bars, read
-  <a href="{@docRoot}guide/topics/ui/menus.html#context-menu">Creating Contextual Menus</a>.
-  </p>
+<p>A <em>contextual action bar (CAB)</em> is a temporary action bar that overlays the app's action bar for the
+duration of a particular sub-task. CABs are most typically used for tasks that involve acting on
+selected data or text.</p>
+
+<img src="{@docRoot}design/media/action_bar_cab.png">
+<div class="figure-caption">
+  Contextual action bar in Browser and Gmail
 </div>
 
+<p>The selection CAB appears after a long press on a selectable data item triggers selection mode.</p>
+<p><strong>From here the user can</strong>:</p>
+<ul>
+<li>Select additional elements by touching them.</li>
+<li>Trigger an action from the CAB that applies to all selected data items. The CAB then
+   automatically dismisses itself.</li>
+<li>Dismiss the CAB via the navigation bar's Back button or the CAB's checkmark button. This removes
+   the CAB along with all selection highlights.</li>
+</ul>
+<p>Use CABs whenever you allow the user to select data via long press. You can control the action
+content of a CAB in order to insert the actions you would like the user to be able to perform.</p>
+<p>For more information, refer to the <a href="{@docRoot}design/patterns/selection.html">Selection
+pattern</a>.</p>
+
+
 
 <h2 id="checklist">Action Bar Checklist</h2>
 
@@ -374,4 +277,4 @@
 <p>Sometimes it is important to display contextual information for your app that's always visible.
 Examples are the number of unread messages in a messaging inbox view or the Now Playing information
 in a music player. Carefully plan which important information you would like to display and
-structure your action bars accordingly.</p>
+structure your action bars accordingly.</p>
\ No newline at end of file
diff --git a/docs/html/design/patterns/app-structure.jd b/docs/html/design/patterns/app-structure.jd
index 1809ecd..0dc20e2 100644
--- a/docs/html/design/patterns/app-structure.jd
+++ b/docs/html/design/patterns/app-structure.jd
@@ -2,7 +2,7 @@
 page.tags="navigation","layout","tablet"
 @jd:body
 
-<p>Apps come in many varieties that address very different needs. For example:</p>
+    <p>Apps come in many varieties that address very different needs. For example:</p>
 <ul>
 <li>Apps such as Calculator or Camera that are built around a single focused activity handled from a
   single screen</li>
@@ -62,7 +62,7 @@
     <img src="{@docRoot}design/media/app_structure_market.png">
     <div class="figure-caption">
       The Play Store app's start screen primarily allows navigation into the stores for Apps, Music, Books,
-      Movies and Games. It is also enriched with tailored recommendations and promotions that
+      Movies, and Games. It is also enriched with tailored recommendations and promotions that
       surface content of interest to the user. Search is readily available from the action bar.
     </div>
 
@@ -72,40 +72,6 @@
 <div class="layout-content-row">
   <div class="layout-content-col span-5">
 
-<h4>Set up action bars for navigation and actions</h4>
-<p>All screens in your app should display action bars to provide consistent navigation and surface
-important actions.</p>
-<p>At the top level, special considerations apply to the action bar:</p>
-<ul>
-<li>Use the action bar to display your app's icon or title.</li>
-<li>If your top level consists of multiple views, or if switching between data from different user
-  accounts is a significant use case, make sure that it's easy for the user to navigate between them
-  by adding view controls to your action bar.</li>
-<li>If your app allows people to create content, consider making the content accessible right from the
-  top level.</li>
-<li>If your content is searchable, include the Search action in the action bar so people can cut
-  through the navigation hierarchy.</li>
-</ul>
-
-<p>For more discussion, see the <a href="{@docRoot}design/patterns/actionbar.html">Action Bar</a>
-design guide.</p>
-
-  </div>
-  <div class="layout-content-col span-8">
-
-    <img src="{@docRoot}design/media/app_structure_gmail.png">
-    <div class="figure-caption">
-      Email is about productivity, so an efficient, easy-to-skim list with higher data density works
-      well. Navigation supports switching between accounts and recent labels. Icons for creating a
-      new message or searching are prominent in the split action bar at the bottom.
-    </div>
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-5">
-
 <h4>Create an identity for your app</h4>
 <p>Creating an identity for your app goes beyond the action bar. Your app communicates its identity
 through its data, the way that data is arranged, and how people interact with it. Especially for
@@ -124,6 +90,109 @@
   </div>
 </div>
 
+<h4>Set up action bars for navigation and actions</h4>
+
+<div class="layout-content-row">
+  <div class="layout-content-col span-5">
+
+  <p>All screens in your app should display action bars to provide consistent navigation and surface
+important actions.</p>
+    <p>At the top level, special considerations apply to the action bar:</p>
+  <ul>
+    <li>Use the action bar to display your app's icon or title.</li>
+    <li>If your top level consists of multiple views, make sure that it's easy for the user to navigate between them by adding view controls to your action bar.</li>
+    <li>If your app allows people to create content, consider making the content accessible right from the
+  top level.</li>
+        <li>If your content is searchable, include the Search action in the action bar so people can cut
+  through the navigation hierarchy.</li>
+    </ul>
+
+  </div>
+  <div class="layout-content-col span-8">
+
+    <img src="{@docRoot}design/media/app_structure_gmail.png">
+    <div class="figure-caption">
+      Email is about productivity, so an efficient, easy-to-skim list with higher data density works
+      well. Navigation supports switching between accounts and recent labels. Icons for creating a
+      new message or searching are prominent in the split action bar at the bottom.
+    </div>
+
+  </div>
+</div>
+
+<h2 id="top-level-switching">Top Level Switching With View Controls</h2>
+<p>The top level communicates your app’s capabilities by introducing the user to the major functional areas. In many cases the top level will consist of multiple views, and you need to make sure that the user can navigate between them efficiently. Android supports a number of view controls for this task. Use the control that best matches your app's navigation needs:</p>
+
+<h4>Fixed tabs</h4>
+<div class="layout-content-row">
+  <div class="layout-content-col span-6">
+<p><em>Fixed tabs</em> display top-level views concurrently and make it easy to explore and switch between them. They are always visible on the screen, and can't be moved out of the way like scrollable tabs. <em>Fixed tabs</em> should always allow the user to navigate between the views by swiping left or right on the content area.</p>
+<p><strong>Use tabs if</strong>:</p>
+<ul>
+<li>You expect your app's users to switch views frequently.</li>
+<li>You have a limited number of up to three top-level views.</li>
+<li>You want the user to be highly aware of the alternate views.</li>
+</ul>
+
+  </div>
+  <div class="layout-content-col span-7">
+
+    <img src="{@docRoot}design/media/app_structure_default_tabs.png">
+    <div class="figure-caption">
+      Default fixed tabs shown in Holo Dark &amp; Light.
+    </div>
+
+  </div>
+</div>
+
+<div class="layout-content-row">
+  <div class="layout-content-col span-6">
+
+<h4>Spinners</h4>
+<p>A <em>spinner</em> is a drop-down menu that allows users to switch between views of your app. </p>
+<p><strong>Use a spinner in the main action bar if</strong>:</p>
+<ul>
+<li>You don't want to give up the vertical screen real estate for a dedicated tab bar.</li>
+<li>The user is switching between views of the same data set (for example: calendar events viewed by day, week, or month) or data sets of the same type (such as content for two different accounts).</li>
+</ul>
+
+  </div>
+  <div class="layout-content-col span-7">
+
+    <img src="{@docRoot}design/media/app_structure_spinner.png">
+    <div class="figure-caption">
+      Action bar spinner from Calendar application.
+    </div>
+
+  </div>
+</div>
+
+<h4>Navigation drawers</h4>
+<div class="layout-content-row">
+  <div class="layout-content-col span-6">
+<p>A <em>navigation drawer</em> is a slide-out menu that allows users to switch between views of your app. It can hold a large number of items and is accessible from anywhere in your app. Navigation drawers show your app's top-level views, but can also provide navigation to lower-level screens. This makes them particularly suitable for complex apps.</p>
+
+<p><strong>Use navigation drawers if</strong>:</p>
+<ul>
+<li>You don't want to give up the vertical screen real estate for a dedicated tab bar.</li>
+<li>You have a large number of top-level views.</li>
+<li>You want to provide direct access to screens on lower levels.</li>
+<li>You want to provide quick navigation to views which don't have direct relationships between each other.</li>
+<li>You have particularly deep navigation branches.</li>
+</ul>
+
+  </div>
+  <div class="layout-content-col span-7">
+    <img src="{@docRoot}design/media/app_structure_drawer.png">
+    <div class="figure-caption">
+      Navigation drawer from the Shopper app.
+    </div>
+  </div>
+</div>
+
+<h4>Don't mix and match</h4>
+<p>After choosing the best top-level navigation for your app, don't mix and match patterns. For example, if you decide to use tabs for top-level switching, don't add a drawer, even if your navigation branches are deep. In this case, the navigation drawer would simply duplicate the information on the tabs, confusing your users.</p>
+
 <h2 id="categories">Categories</h2>
 
 <p>Generally, the purpose of a deep, data-driven app is to navigate through organizational categories
@@ -275,4 +344,4 @@
 <li>
 <p>Allow for quick navigation between detail items with swipe views.</p>
 </li>
-</ul>
+</ul>
\ No newline at end of file
diff --git a/docs/html/design/patterns/compatibility.jd b/docs/html/design/patterns/compatibility.jd
index 3a56f52..5ca6d8b 100644
--- a/docs/html/design/patterns/compatibility.jd
+++ b/docs/html/design/patterns/compatibility.jd
@@ -2,6 +2,13 @@
 page.tags="support"
 @jd:body
 
+<a class="notice-developers" href="{@docRoot}training/basics/supporting-devices/index.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Supporting Different Devices</p>
+  </div>
+</a>
+
 <p>Significant changes in Android 3.0 included:</p>
 <ul>
 <li>Deprecation of navigation hardware keys (Back, Menu, Search, Home) in favor of handling navigation
diff --git a/docs/html/design/patterns/multi-pane-layouts.jd b/docs/html/design/patterns/multi-pane-layouts.jd
index cbf29cb..06c8189 100644
--- a/docs/html/design/patterns/multi-pane-layouts.jd
+++ b/docs/html/design/patterns/multi-pane-layouts.jd
@@ -2,6 +2,14 @@
 page.tags="tablet","navigation","layout","fragment"
 @jd:body
 
+
+<a class="notice-developers" href="{@docRoot}training/basics/fragments/index.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Building a Dynamic UI with Fragments</p>
+  </div>
+</a>
+
 <p>When writing an app for Android, keep in mind that Android devices come in many different screen
 sizes and types. Make sure that your app consistently provides a balanced and aesthetically pleasing
 layout by adjusting its content to varying screen sizes and orientations.</p>
@@ -88,15 +96,6 @@
 </div>
 
 
-<div class="note develop">
-<p><strong>Developer Guide</strong></p>
-  <p>For information about how to create multi-pane layouts, read
-  see the <a href="{@docRoot}training/basics/fragments/index.html">Building
-  a Dynamic UI with Fragments</a> and
-  <a href="{@docRoot}training/multiscreen/index.html">Designing for Multiple Screens</a>.
-  </p>
-</div>
-
 
 
 <h2 id="checklist">Checklist</h2>
diff --git a/docs/html/design/patterns/navigation-drawer.jd b/docs/html/design/patterns/navigation-drawer.jd
new file mode 100644
index 0000000..bf6609e
--- /dev/null
+++ b/docs/html/design/patterns/navigation-drawer.jd
@@ -0,0 +1,338 @@
+page.title=Navigation Drawer
+page.tags="DrawerLayout","SlidingPaneLayout"
+@jd:body
+
+
+<a class="notice-developers" href="{@docRoot}training/implementing-navigation/nav-drawer.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Creating a Navigation Drawer</p>
+  </div>
+</a>
+
+
+<p>The navigation drawer is a panel that transitions in from the left edge of the screen and
+displays the app’s main navigation options.</p> 
+
+
+<h4>Displaying the navigation drawer</h4>
+
+<p>The user can bring the navigation drawer onto the screen by swiping from the left edge of the
+screen or by touching the application icon on the action bar.</p>
+
+<p>As the navigation drawer expands, it overlays the content but not the action bar. When the
+drawer is fully extended, the action bar adjusts its content by replacing the current action
+bar title with the app name and removing all actions that are contextual to the view underneath
+the navigation drawer. The overflow menu with the standard action items for Settings and Help
+remains visible.</p>
+
+<img src="{@docRoot}design/media/navigation_drawer_overview.png">
+<div class="figure-caption">
+  The user can open the drawer panel by touching the navigation drawer indicator.
+</div>
+
+<p>Because they are transient, navigation drawers make views less cluttered. You can also use
+them at deeper levels in the navigation hierarchy, allowing users to switch to your app's most
+important screens from anywhere in the app.</p>
+
+<img src="{@docRoot}design/media/navigation_drawer_open_from_lower.png">
+<div class="figure-caption">
+  Open the drawer from anywhere in your app by swiping from the left edge of the screen.
+</div>
+
+
+<h4>Dismissing the navigation drawer</h4>
+
+<p> When the navigation drawer is expanded, the user can dismiss it in one of four ways: </p>
+<ul>
+  <li>Touching the content outside the navigation drawer</li>
+  <li>Swiping to the left anywhere on the screen (including edge swipe from right)</li>
+  <li>Touching the app icon/title in the action bar</li>
+  <li>Pressing Back</li>
+</ul>
+
+
+<h2 id="WhenToUse"> When to Use the Navigation Drawer </h2>
+
+<p> The navigation drawer is not a general replacement for top-level navigation via spinners
+or tabs. The structure of your app should guide your choice of which pattern to use for
+top-level switching. For more information on top-level switching mechanisms, see the
+<a href="{@docRoot}design/patterns/app-structure.html">Application Structure</a> design pattern.</p>
+<p> Here are some examples of where navigation drawers work best:</p>
+
+<h4>More than 3 top-level views</h4>
+<p> Navigation drawers are great for displaying a large number of navigation targets
+concurrently. Use the navigation drawer if you have more than 3 unique top-level views.
+If not, use fixed tabs for top-level organization to ease discovery and interaction.</p>
+
+<h4>Cross-navigation from lower levels</h4>
+<p> If your app requires cross-navigating between lower-level screens, consider using the
+navigation drawer. Because it is accessible from anywhere in the app, the drawer enables
+efficient navigation from lower-level screens to other important places in your app.</p>
+
+<img src="{@docRoot}design/media/navigation_drawer_cross_nav.png">
+<div class="figure-caption">
+  The navigation drawer makes cross-navigation at lower levels possible.
+</div>
+
+
+<h4>Deep navigation branches</h4>
+<p> If you have particularly deep branches, navigating to the top-level of your app can become
+repetitive and cumbersome with Up and Back alone. Since navigation drawers are accessible from
+anywhere in the app, navigation up to the top level is faster and more efficient.</p>
+
+<img src="{@docRoot}design/media/navigation_drawer_quick_to_top.png">
+<div class="figure-caption">
+  The navigation drawer allows for quick jumps to the top-level of your app, removing the need
+  for repetitive Back or Up sequences.
+</div>
+
+
+<h2 id="Hubs">Navigation Hubs</h2>
+
+<p>The navigation drawer is a reflection of your app’s structure and displays its major
+navigation hubs. Think of navigation hubs as those places in your app that a user will want
+to visit frequently or use as a jumping-off point to other parts of the app. 
+At a minimum, the navigation hubs are the top-level views, since they correspond to your app’s
+major functional areas.</p>
+<p> If your app’s structure is deep, you can add screens from lower levels that your users will
+likely visit often and make those navigation hubs as well.</p>
+
+<img src="{@docRoot}design/media/navigation_drawer_navigation_hubs.png">
+<div class="figure-caption">
+  The navigation drawer contains all of your app's navigation hubs. Include your top level
+  screens as well as important lower-level screens.
+</div>
+
+<div class="layout-content-row">
+  <div class="layout-content-col span-8">
+  <p> To facilitate access to the navigation drawer on navigation hubs, all screens that
+  correspond to an entry in your navigation drawer should show the navigation drawer indicator
+  next to the application icon in the action bar. Touching the app icon causes the navigation
+  drawer to slide in from the left. </p>
+  <p> All other lower-level screens show the traditional Up indicator next to the application
+  icon. The drawer is still accessible with an edge-swipe, but is not featured in the action bar.</p>
+  </div>
+  <div class="layout-content-col span-5">
+    <img src="{@docRoot}design/media/navigation_drawer_indicator_big.png">
+    <div class="figure-caption">
+    App icon with navigation drawer indicator.
+  </div>
+  </div>
+</div>
+
+
+<h2 id="Content">Content of the Navigation Drawer</h2>
+
+<p> Keep the content of the navigation drawer focused on app navigation. Expose the navigation
+hubs of your app as list items inside the navigation drawer - one item per row. 
+    
+<div class="layout-content-row">
+  <div class="layout-content-col span-8">
+  <h4>Titles, icons, and counters</h4>
+  <p> You can structure navigation targets by adding titles. The titles are not interactive,
+  but just organize navigation targets into functional topics. If you have many navigation
+  targets, use titles to orient the user within the drawer.</p>
+  <p> Navigation targets can have optional leading icons as well as trailing counters. Use
+  the counters to inform users about a changed state of data in the corresponding view.</p>
+  </div>
+  <div class="layout-content-col span-5">
+  <img src="{@docRoot}design/media/navigation_drawer_titles_icons.png">
+  <div class="figure-caption">
+    Use titles and icons to organize your drawer. 
+  </div>
+  </div>
+</div>
+
+<div class="layout-content-row">
+  <div class="layout-content-col span-8">
+  <img src="{@docRoot}design/media/navigation_drawer_collapse.png">
+  <div class="figure-caption">
+    Collapsible navigation items are split. Use the left side for navigation and the right
+    to collapse and expand items. 
+    </div>
+  </div>
+  <div class="layout-content-col span-5">
+  <h4>Collapsible navigation items</h4>
+  <p>If you have many views with some subordinate to others, consider collapsing them into one
+  expandable item to conserve space. 
+  The parent in the navigation drawer then turns into a split item. The left side allows
+  navigation to the parent item’s view, and the right side collapses or expands the list of
+  child items. </p>
+  <p> At launch, the initial state of the collapsible items is up to you. As a rule, all
+  top-level view entries of the navigation drawer should be visible. If you have many collapsible
+  items, consider collapsing all items to allow the user to see the top-level views in their
+  entirety.</p>
+  <p> When the user opens the drawer from a lower-level screen, expand the associated branch
+  of the top-level view to give a stronger sense of place and highlight navigation opportunities
+  close to the user’s current
+  location in the app.</p>
+  </div>
+</div>
+
+
+<h2 id="ActionBar">Navigation Drawers and Action Bars</h2>
+
+<p> When the user expands the navigation drawer, the task focus switches to selecting an item
+from the drawer. Because the drawer does not overlay the action bar, users may not realize that
+the items in the action bar do not pertain to the navigation drawer. </p>
+<p> To reduce confusion, adjust the content of the action bar to the following, once the drawer
+is fully expanded:</p>
+<ul>
+  <li>App icon</li>
+  <li>App name</li>
+  <li>Remove actions from the action bar that are contextual to the underlying view (such as
+  Create new, Refresh). You may retain actions with global scope, such as “Search”.</li>
+  <li>Overflow menu with expected navigation targets, such as Settings and Help.</li>
+</ul>
+
+<img src="{@docRoot}design/media/navigation_drawer_open_overflow.png">
+<div class="figure-caption">
+  Clean up the action bar when the drawer is fully expanded. Remove actions that are not needed
+  and display your app's name in the title area. 
+</div>
+
+<h4>Actions</h4>
+<div class="layout-content-row">
+  <div class="layout-content-col span-6">
+  <img src="{@docRoot}design/media/navigation_drawer_nav_and_actions.png">
+    <div class="figure-caption">
+    Keep actions on the right side of the action bar and in the overflow
+  </div>
+  </div>
+  <div class="layout-content-col span-6">
+  <p> Don’t place actions in the navigation drawer. Actions belong in the action bar, and the
+  user expects to see them there. Keep in mind that not all applications use the navigation
+  drawer pattern. It may be tempting to expose all your app’s capabilities in a single place,
+  but keep the bigger picture in mind. Place your actions where all apps display them.</p>
+  </div>
+</div>
+<div class="layout-content-row">
+  <div class="layout-content-col span-6">
+  <p> This also applies to common navigation targets, such as access to Help or the app’s
+  Settings. As per style guide convention Help and Settings are always located in the action
+  overflow.</p>
+  </div>
+  <div class="layout-content-col span-6">
+  <img src="{@docRoot}design/media/navigation_drawer_settings_help.png">
+    <div class="figure-caption">
+    Keep Help and Settings in the overflow.
+  </div>
+  </div>
+</div>
+
+
+<h4>Contextual action bars</h4>
+<p> Sometimes the user will be in a state where a contextual action bar (CAB) appears instead
+of the app’s action bar. This typically happens when the user selects text or selects multiple
+items after a press-and-hold gesture. While the CAB is visible, you should still allow the
+user to open the navigation drawer using an edge swipe. However, replace the CAB with the
+standard action bar while the navigation drawer is open. When the user dismisses the drawer,
+re-display the CAB.</p>
+
+<img src="{@docRoot}design/media/navigation_drawer_CAB.png">
+<div class="figure-caption">
+  Hide contextual action bars while the drawer is visible. 
+</div>
+
+<p>If the user navigates away from a view with selected content, deselect the content before
+before navigating to the new view.</p>
+
+
+<h2 id="Interaction">Interaction Details</h2>
+
+<h4>Introduce the user to the drawer at first use</h4>
+<p> Upon first launch of your app, introduce the user to the navigation drawer by
+automatically opening it. This ensures that users know about the navigation drawer and prompts
+them to learn about the structure of your app by exploring its content. Continue showing the
+drawer upon subsequent launches until the user actively expands the navigation drawer manually.
+Once you know that the user understands how to open the drawer, launch the app with the
+navigation drawer closed. </p>
+
+<img src="{@docRoot}design/media/navigation_drawer_first_run.png">
+<div class="figure-caption">
+  At first use, show the navigation drawer automatically to help the user learn the
+  functionality and structure of your app.
+</div>
+
+<h4>Give the user a quick peek</h4>
+<p> If the user touches the very left edge of the screen (within 20 dp from the left), have the
+drawer peek out as soon as the finger makes contact with the display. This promotes accidental
+discovery and provides richer feedback. </p>
+
+<img src="{@docRoot}design/media/navigation_drawer_peek.png">
+<div class="figure-caption">
+  The navigation drawer peeks out when the user touches the very left edge of the screen.
+</div>
+
+<h4>Highlights</h4>
+<p> When you open the navigation drawer from a screen that is represented inside the drawer,
+highlight its entry in the drawer. Vice versa, if you open the drawer from a screen that is
+not listed in the drawer, none of the items of the drawer should be highlighted.</p>
+
+
+<h2 id="ImpactOnNav">Impact of Drawer on Overall App Navigation</h2>
+
+<p>The navigation drawer is an alternative to other top-level navigation patterns. To make apps
+with navigation drawers work consistently with apps that use a tab or spinner pattern, remember
+that all navigation requirements for system Back and Up apply.</p>
+<p>Pay special attention to the following situations:</p>
+
+<h4>System Back at the top level of the app</h4>
+<p>Touching System Back at the app’s top level never opens the navigation drawer. Instead,
+System Back behaves according to the navigation rules for the top level, such as navigating
+to the previous app within the task or navigating to the Home screen.</p>
+
+<img src="{@docRoot}design/media/navigation_drawer_top_out.png">
+<div class="figure-caption">
+  System Back does not show the drawer, but behaves according to the navigation rules for
+  the top level.
+</div>
+
+<h4>System Back after cross navigation to lower hierarchy levels</h4>
+<p>If the user navigates to a lower hierarchy screen from the navigation drawer and the screen
+has a direct parent, then the Back stack is reset and Back points to the target screen’s parent.
+This Back behavior is the same as when a user navigates into an app from a notification.</p>
+
+<img src="{@docRoot}design/media/navigation_drawer_reset_backstack.png">
+<div class="figure-caption">
+  Reset the Back stack if your lower-level navigation target has direct parents.
+</div>
+
+
+<h2 id="Style">Style</h2>
+
+<p>The width of the navigation drawer depends on the content you want to display, but should be
+between a minimum of 240 dp and a maximum of 320 dp. The height of the individual line items
+should not fall below 48 dp. See the layout guideline below for recommendations on padding and
+spacing.</p>
+
+<img src="{@docRoot}design/media/navigation_drawer_layout.png">
+<div class="figure-caption">
+  Layout guidelines for the navigation drawer.
+</div>
+
+
+<p>Pick the drawer background to best match your app’s theme. See the following examples
+for a Holo light and a Holo dark themed drawer.</p>
+
+<img src="{@docRoot}design/media/navigation_drawer_holo_dark_light.png">
+<div class="figure-caption">
+  Navigation drawers in Holo light and Holo dark themed apps.
+</div>
+
+
+<h2 id="Checklist">Navigation Drawer Checklist</h2>
+
+<p>Even if you already support a similar navigation drawer, update your drawer to this
+pattern to make sure that:</p>
+<ul>
+  <li>The action bar remains in place and adjusts its content.</li>
+  <li>Your navigation drawer overlays the content.</li>
+  <li>Any view represented in the drawer has a navigation drawer indicator in its action bar
+  that allows the drawer to be opened by touching the app icon.</li>
+  <li>You take advantage of the new visual drawer transition.</li>
+  <li>Any view not represented in the drawer maintains the traditional Up indicator in its action bar.</li>
+  <li>You stay in sync with the general navigation patterns for Up and Back.</li>
+</ul>
+
diff --git a/docs/html/design/patterns/navigation.jd b/docs/html/design/patterns/navigation.jd
index b717884..4da87b9 100644
--- a/docs/html/design/patterns/navigation.jd
+++ b/docs/html/design/patterns/navigation.jd
@@ -2,6 +2,13 @@
 page.tags="navigation","activity","task"
 @jd:body
 
+<a class="notice-developers" href="{@docRoot}training/implementing-navigation/index.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Implementing Effective Navigation</p>
+  </div>
+</a>
+
 <p>Consistent navigation is an essential component of the overall user experience. Few things frustrate
 users more than basic navigation that behaves in inconsistent and unexpected ways. Android 3.0
 introduced significant changes to the global navigation behavior. Thoughtfully following the
@@ -203,15 +210,3 @@
 <p>When your app registers to handle intents with an activity deep within the app's hierarchy,
 refer to <a href="#into-your-app">Navigation into Your App via Home Screen Widgets and
 Notifications</a> for guidance on how to specify Up navigation.</p>
-
-
-
-<div class="note develop">
-<p><strong>Developer Guide</strong></p>
-  <p>For information about how to build your app with proper Up and Back navigation, read
-  <a href="{@docRoot}training/implementing-navigation/ancestral.html">Implementing
-  Ancestral Navigation</a> and 
-  <a href="{@docRoot}training/implementing-navigation/temporal.html">Implementing
-  Temporal Navigation</a>, respectively.
-  </p>
-</div>
diff --git a/docs/html/design/patterns/notifications.jd b/docs/html/design/patterns/notifications.jd
index 3ae827e..018b7b9 100644
--- a/docs/html/design/patterns/notifications.jd
+++ b/docs/html/design/patterns/notifications.jd
@@ -1,7 +1,13 @@
 page.title=Notifications
-page.tags="notification"
 @jd:body
 
+<a class="notice-developers" href="{@docRoot}training/notify-user/index.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Notifying the User</p>
+  </div>
+</a>
+
 <p>The notification system allows your app to keep the user informed about events, such as new chat messages or a calendar event. Think of notifications as a news channel that alerts the user to important events as they happen or a log that chronicles events while the user is not paying attention.</p>
 
 <h4>New in Jelly Bean</h4>
@@ -258,11 +264,3 @@
   </div>
 </div>
 
-
-
-<div class="note develop">
-<p><strong>Developer Guide</strong></p>
-  <p>For information about how to build notifications, see the
-  <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Notifications</a>
-  API guide.</p>
-</div>
diff --git a/docs/html/design/patterns/selection.jd b/docs/html/design/patterns/selection.jd
index d16e86c..973ffde 100644
--- a/docs/html/design/patterns/selection.jd
+++ b/docs/html/design/patterns/selection.jd
@@ -2,6 +2,13 @@
 page.tags="actionmode","navigation","contextual"
 @jd:body
 
+<a class="notice-developers" href="{@docRoot}guide/topics/ui/menus.html#context-menu">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Menus: Creating Contextual Menus</p>
+  </div>
+</a>
+
 <p>Android 3.0 changed the <em>long press</em> gesture&mdash;that is, a touch that's held in the same position for a moment&mdash;to be the global gesture to select data.. This affects the way you should
 handle multi-select and contextual actions in your apps.</p>
 
diff --git a/docs/html/design/patterns/settings.jd b/docs/html/design/patterns/settings.jd
index 4748e48..fa3e538 100644
--- a/docs/html/design/patterns/settings.jd
+++ b/docs/html/design/patterns/settings.jd
@@ -2,6 +2,13 @@
 page.tags="preferences","sharedpreferences"
 @jd:body
 
+<a class="notice-developers" href="{@docRoot}guide/topics/ui/settings.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Settings</p>
+  </div>
+</a>
+
 <p>Settings is a place in your app where users indicate their preferences for how your app should
 behave. This benefits users because:</p>
 
@@ -681,13 +688,6 @@
 </div>
 
 
-<div class="note develop">
-<p><strong>Developer Guide</strong></p>
-  <p>For information about how to build a settings interface, see the
-  <a href="{@docRoot}guide/topics/ui/settings.html">Settings</a>
-  API guide.</p>
-</div>
-
 
 <h2 id="checklist">Checklist</h2>
 <ul>
diff --git a/docs/html/design/patterns/swipe-views.jd b/docs/html/design/patterns/swipe-views.jd
index f18fc63..630a4b9 100644
--- a/docs/html/design/patterns/swipe-views.jd
+++ b/docs/html/design/patterns/swipe-views.jd
@@ -2,6 +2,13 @@
 page.tags="viewpager","navigation","tabs"
 @jd:body
 
+<a class="notice-developers" href="{@docRoot}training/implementing-navigation/lateral.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Creating Swipe Views with Tabs</p>
+  </div>
+</a>
+
 <p>Efficient navigation is one of the cornerstones of a well-designed app. While apps are generally
 built in a hierarchical fashion, there are instances where horizontal navigation can flatten
 vertical hierarchies and make access to related data items faster and more enjoyable. Swipe views
@@ -79,12 +86,3 @@
   </div>
 </div>
 
-
-<div class="note develop">
-<p><strong>Developer Guide</strong></p>
-  <p>For information about how to create swipe views, read
-  <a href="{@docRoot}training/implementing-navigation/lateral.html">Implementing Lateral Navigation</a>.
-  </p>
-</div>
-
-
diff --git a/docs/html/design/patterns/widgets.jd b/docs/html/design/patterns/widgets.jd
index 3152e91..87ebbb9 100644
--- a/docs/html/design/patterns/widgets.jd
+++ b/docs/html/design/patterns/widgets.jd
@@ -2,6 +2,13 @@
 page.tags="appwidget","home"
 @jd:body
 
+<a class="notice-developers" href="{@docRoot}guide/topics/appwidgets/index.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>App Widgets</p>
+  </div>
+</a>
+
 <p>Widgets are an essential aspect of home screen customization. You can imagine them as "at-a-glance" views of an app's most important data and functionality that is accessible right from the user's home screen. Users can move widgets across their home screen panels, and, if supported, resize them to tailor the amount of information within a widget to their preference.</p>
 
 <h2>Widget types</h2>
@@ -124,13 +131,6 @@
 </div>
 
 
-<div class="note develop">
-<p><strong>Developer Guide</strong></p>
-  <p>For information about how to build widgets for the home screen, see the
-  <a href="{@docRoot}guide/topics/appwidgets/index.html">App Widgets</a>
-  API guide.</p>
-</div>
-
 <h2>Checklist</h2>
 <ul>
   <li>Focus on small portions of glanceable information on your widget. Expand on the information in your app.</li>
diff --git a/docs/html/design/style/devices-displays.jd b/docs/html/design/style/devices-displays.jd
index 18550d9..a8f9d6f 100644
--- a/docs/html/design/style/devices-displays.jd
+++ b/docs/html/design/style/devices-displays.jd
@@ -32,7 +32,7 @@
   </div>
 </div>
 
-  <img src="{@docRoot}design/media/devices_displays_density.png">
+  <img src="{@docRoot}design/media/devices_displays_density@2x.png" alt="" height="160" />
 
 <h4>Strategies</h4>
 <p>So where do you begin when designing for multiple screens? One approach is to work in the base
diff --git a/docs/html/design/style/iconography.jd b/docs/html/design/style/iconography.jd
index 1475e5c..0d2cdbb 100644
--- a/docs/html/design/style/iconography.jd
+++ b/docs/html/design/style/iconography.jd
@@ -4,9 +4,37 @@
 
 <img src="{@docRoot}design/media/iconography_overview.png">
 
+
 <p>An icon is a graphic that takes up a small portion of screen real estate and provides a quick,
 intuitive representation of an action, a status, or an app.</p>
 
+<p>When you design icons for your app, it's important to keep in mind that your
+app may be installed on a variety of devices that offer a range of
+pixel densities, as mentioned in
+<a href="{@docRoot}design/style/devices-displays.html">Devices
+and Displays</a>. But you can make your icons look great on all devices
+by providing each icon in multiple sizes. When your app runs, Android checks the characteristics of
+the device screen and loads the appropriate density-specific assets for your app. </p>
+
+<p>Because you will deliver each icon in multiple sizes to support different densities,
+the design guidelines below
+refer to the icon dimensions in <acronym title="density-independent pixels">dp</acronym>
+units, which are based on the pixel dimensions of a medium-density (MDPI) screen.</p>
+
+<img src="{@docRoot}design/media/devices_displays_density@2x.png" alt="" height="160" />
+
+<p>So, to create an icon for different densities, you should follow the <strong>2:3:4:6 scaling
+ratio</strong> between the four primary densities (medium, high, x-high, and xx-high,
+respectively). For example, consider that the size for a launcher icon is specified to be
+48x48 dp. This means the baseline (MDPI) asset is 48x48 px, and the
+high density (HDPI) asset should be 1.5x the baseline at 72x72 px, and the x-high
+density (XHDPI) asset should be 2x the baseline at 96x96 px, and so on.</p>
+
+<p class="note"><strong>Note:</strong> Android also supports low-density (LDPI) screens,
+but you normally don't need to create custom assets at this size because Android
+effectively down-scales your HDPI assets by 1/2 to match the expected size.</p>
+
+
 
 
 <h2 id="launcher">Launcher</h2>
@@ -338,3 +366,165 @@
   </div>
   <!-- 2 free columns -->
 </div>
+
+
+
+
+
+
+
+
+
+
+<h2 id="DesignTips">Design Tips</h2>
+
+<p>Here are some tips you might find useful as you create icons or other
+drawable assets for your application. These tips assume you are using
+Adobe&reg; Photoshop&reg; or a similar raster and vector image-editing program.</p>
+
+
+
+
+<h3>Use vector shapes where possible</h3>
+
+<p>Many image-editing programs such as Adobe&reg; Photoshop&reg; allow you to use a
+combination of vector shapes and raster layers and effects. When possible,
+use vector shapes so that if the need arises, assets can be scaled up without
+loss of detail and edge crispness.</p>
+
+<p>Using vectors also makes it easy to align edges and corners to pixel
+boundaries at smaller resolutions.</li>
+
+
+
+<h3>Start with large artboards</h3>
+
+<p>Because you will need to create assets for different screen densities,
+it is best to start your icon
+designs on large artboards with dimensions that are multiples of the target icon
+sizes. For example, launcher icons are 48, 72, 96, or 144 pixels wide,
+depending on screen density (mdpi, hdpi, xhdpi, and xxhdpi, respectively). If you
+initially draw launcher icons on an 864x864 artboard, it will be easier and
+cleaner to adjust the icons when you scale the artboard down to the target
+sizes for final asset creation.</p>
+
+
+
+<h3>When scaling, redraw bitmap layers as needed</h3>
+
+<p>If you scaled an image up from a bitmap layer, rather than from a vector
+layer, those layers will need to be redrawn manually to appear crisp at higher
+densities. For example if a 60x60 circle was painted as a bitmap for
+mdpi it will need to be repainted as a 90x90 circle for hdpi.</p>
+
+
+
+<h3>Use common naming conventions for icon assets</h3>
+
+<p>Try to name files so that related assets will group together inside a
+directory when they are sorted alphabetically. In particular, it helps to use a
+common prefix for each icon type. For example:</p>
+
+<table>
+<tr>
+<th>Asset Type</th>
+<th>Prefix</th>
+<th>Example</th>
+</tr>
+<tr>
+<td>Icons</td>
+<td><code>ic_</code></td>
+<td><code>ic_star.png</code></td>
+</tr>
+<tr>
+<td>Launcher icons</td>
+<td><code>ic_launcher</code></td>
+<td><code>ic_launcher_calendar.png</code></td>
+</tr>
+<tr>
+<td>Menu icons and Action Bar icons</td>
+<td><code>ic_menu</code></td>
+<td><code>ic_menu_archive.png</code></td>
+</tr>
+<tr>
+<td>Status bar icons</td>
+<td><code>ic_stat_notify</code></td>
+<td><code>ic_stat_notify_msg.png</code></td>
+</tr>
+<tr>
+<td>Tab icons</td>
+<td><code>ic_tab</code></td>
+<td><code>ic_tab_recent.png</code></td>
+</tr>
+<tr>
+<td>Dialog icons</td>
+<td><code>ic_dialog</code></td>
+<td><code>ic_dialog_info.png</code></td>
+</tr>
+</table>
+
+<p>Note that you are not required to use a shared prefix of any
+type&mdash;doing so is for your convenience only.</p>
+
+
+<h3>Set up a working space that organizes files by density</h3>
+
+<p>Supporting multiple screen densities means you must create multiple versions
+of the same icon. To help keep the multiple copies of files safe and easier to
+find, we recommend creating a directory structure in your working space that
+organizes asset files based on the target density. For example:</p>
+
+<pre>
+art/...
+    mdpi/...
+        _pre_production/...
+            <em>working_file</em>.psd
+        <em>finished_asset</em>.png
+    hdpi/...
+        _pre_production/...
+            <em>working_file</em>.psd
+        <em>finished_asset</em>.png
+    xhdpi/...
+        _pre_production/...
+            <em>working_file</em>.psd
+        <em>finished_asset</em>.png</pre>
+    xxhdpi/...
+        _pre_production/...
+            <em>working_file</em>.psd
+        <em>finished_asset</em>.png</pre>
+
+<p>Because the structure in your working space is similar to that of the application, you
+can quickly determine which assets should be copied to each
+resources directory. Separating assets by density also helps you detect any
+variances in filenames across densities, which is important because
+corresponding assets for different densities must share the same filename.</p>
+
+<p>For comparison, here's the resources directory structure of a typical
+application: </p>
+
+<pre>res/...
+    drawable-ldpi/...
+        <em>finished_asset</em>.png
+    drawable-mdpi/...
+        <em>finished_asset</em>.png
+    drawable-hdpi/...
+        <em>finished_asset</em>.png
+    drawable-xhdpi/...
+        <em>finished_asset</em>.png
+</pre>
+
+<p>For more information about how to save resources in the application project,
+see <a href="{@docRoot}guide/topics/resources/providing-resources.html">Providing Resources</a>.
+</p>
+
+
+<h3>Remove unnecessary metadata from final assets</h3>
+
+<p>Although the Android SDK tools will automatically compress PNGs when packaging
+application resources into the application binary, a good practice is to remove
+unnecessary headers and metadata from your PNG assets. Tools such as <a
+href="http://optipng.sourceforge.net/">OptiPNG</a> or <a
+href="http://pmt.sourceforge.net/pngcrush/">Pngcrush</a> can ensure that this
+metadata is removed and that your image asset file sizes are optimized.</p>
+
+
diff --git a/docs/html/design/style/metrics-grids.jd b/docs/html/design/style/metrics-grids.jd
index 3116ff6d..0a99a2f 100644
--- a/docs/html/design/style/metrics-grids.jd
+++ b/docs/html/design/style/metrics-grids.jd
@@ -4,15 +4,28 @@
 
 <p>Devices vary not only in physical size, but also in screen density (<acronym title="Dots per
 inch">DPI</acronym>). To simplify the way you design for multiple screens, think of each device as
-falling into a particular size bucket and density bucket. The size buckets are <em>handset</em> (smaller than
-600<acronym title="Density-independent pixels. One dp is one pixel on a 160 dpi
-screen.">dp</acronym>) and <em>tablet</em> (larger than or equal 600dp). The density buckets are <acronym
+falling into a particular size bucket and density bucket:</p>
+<ul>
+ <li>The size buckets are <em>handset</em> (smaller than
+600<acronym title="Density-independent pixels: One dp is one pixel on a 160 dpi (mdpi)
+screen.">dp</acronym>) and <em>tablet</em> (larger than or equal 600dp).</li>
+ <li>The density buckets are <acronym
 title="Low density (120 dpi)">LDPI</acronym>, <acronym title="Medium density (160
-dpi)">MDPI</acronym>, <acronym title="High density (240 dpi)">HDPI</acronym>, and <acronym title
-="Extra-high density (320 dpi)">XHDPI</acronym>. Optimize your application's UI by designing
+dpi)">MDPI</acronym>, <acronym title="High density (240 dpi)">HDPI</acronym>, <acronym title
+="Extra-high density (320 dpi)">XHDPI</acronym>, and <acronym title
+="Extra-extra!-high density (480 dpi)">XXHDPI</acronym>.</li>
+</ul>
+
+<p>Optimize your application's UI by designing
 alternative layouts for some of the different size buckets, and provide alternative bitmap images
 for different density buckets.</p>
 
+<p>Because it's important that you design and implement your layouts for multiple densities,
+the guidelines below and throught the documentation
+refer to layout dimensions with <acronym title="Density-independent pixels: One dp is one pixel
+on a 160 dpi (mdpi) screen.">dp</acronym> measurements instead of pixels.</p>
+
+
 <div class="layout-content-row">
   <div class="layout-content-col span-8">
 
@@ -30,6 +43,7 @@
   </div>
 </div>
 
+
 <h2 id="48dp-rhythm">48dp Rhythm</h2>
 
 <p>Touchable UI components are generally laid out along 48dp units.</p>
diff --git a/docs/html/develop/index.jd b/docs/html/develop/index.jd
index 0cb2635..f96e868 100644
--- a/docs/html/develop/index.jd
+++ b/docs/html/develop/index.jd
@@ -4,6 +4,14 @@
 carousel=1
 tabbedList=1
 @jd:body
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
 
 <style>
 #noplayer-message {
@@ -33,19 +41,35 @@
 
               <li class="item carousel-home">
                  <div class="col-8">
+                   <img src="{@docRoot}images/google/gps-location.png"
+class="play no-shadow no-transform" style="margin:0 0 0 70px;height:230px;width:340px" />
+                 </div>
+                <div class="content-right col-6" style="width:350px">
+                  <h2>New Location APIs from Google</h2>
+                  <p>The latest version of Google Play services includes new APIs that provide more
+                  efficient and immediate user location data on devices running Android 2.2
+                  and higher. Features include geofencing APIs, user activity recognition, and
+                  power-efficient location updates.</p>
+                  <p><a
+href="{@docRoot}google/play-services/location.html" class="button">Read more</a></p>
+                </div>
+              </li>
+
+              <li class="item carousel-home">
+                 <div class="col-8">
                    <img src="{@docRoot}images/google/gps-plus-signin-hero.jpg"
 class="play no-shadow no-transform" style="margin:0 0 0 40px;max-height:250px;height:250px;
                                            max-width:409px;width:409px" />
                  </div>
                 <div class="content-right col-6" style="width:350px">
-                  <h2>Google+ Sign-in for your Android Apps</h2>
-                  <p>Google+ Sign-In is an easy, trusted way to sign a user into your app,
-                  and get more Android installs when people visit your website.
-                  When users sign in with Google on the web, they have the option to instantly
-                  install your Android app without ever leaving your website.</p>
+                  <h2>New Cross-Platform Single Sign On</h2>
+                  <p>Google+ Sign-In is an easy, trusted way to sign a user into your app.
+                  Now it's even more seamless. A user can sign in to your app on one device and
+                  pick it up on another&mdash;without signing in again. Best of all, it's built
+                  into Google+ Sign-in, so there's no change needed in your app.</p>
                   <p><a
 href="{@docRoot}google/play-services/plus.html" class="button">Read more</a></p>
-                </div>            
+                </div>
               </li>
 
               <li class="item carousel-home">
@@ -92,19 +116,6 @@
 more</a></p>
                    </div>                
                 </li>
-               <li class="item carousel-home">
-                   <div class="col-8">
-                     <img
-src="//lh4.ggpht.com/-MgN5DnoO5XU/UHYGYzTcAOI/AAAAAAAABs4/jTS7sKkfBcM/s1600/pubsites.png" class="play"></div>
-                   <div class="content-right col-6">
-                   <p class="title-intro">From the blog:</p>
-                   <h2>New Google Play Developer Console</h2>
-                   <p>All developers can now try the <strong>new Google Play Developer Console</strong>. With a streamlined publishing flow, new language options, and new user ratings statistics, you’ll have better tools for delivering great Android apps that delight users.</p>
-                  <p><a
-href="http://android-developers.blogspot.com/2012/10/new-google-play-developer-console.html" class="button">Read
-more</a></p>
-                   </div>                
-                </li>
            </ul>
        </div>
    </div>
@@ -121,6 +132,16 @@
 			<div class="feed-frame">
                                 <!-- DEVELOPER NEWS -->
           <ul>
+            <li><a href="//android-developers.blogspot.com/2013/05/new-ways-to-optimize-your-business-in.html">
+              <div class="feed-image" style="background:url('//4.bp.blogspot.com/-VmHMT66JjxU/UZZdfPUaJsI/AAAAAAAACQc/kDx5-Ep5YRo/s1600/framed_designed-tablets.png') no-repeat 0 0;background-size:180px"></div>
+              <h4>New Ways to Optimize Your Business in Google Play</h4>
+              <p>Many of you have invested in making great tablet experiences for your users, and we want to ensure that that work pays off...</p>
+              </a></li>
+            <li><a href="//android-developers.blogspot.com/2013/05/android-studio-ide-built-for-android.html">
+              <div class="feed-image" style="background:url('//1.bp.blogspot.com/-u5dfSsMOMC0/UZO_5DC_W9I/AAAAAAAACM8/YCMn15HPzpE/s320/Studio_table.png') no-repeat 0 0;background-size:180px"></div>
+              <h4>Android Studio: An IDE built for Android</h4>
+              <p>To develop Android Studio, we cooperated with JetBrains, creators of one of the most advanced Java IDEs available today...</p>
+              </a></li>
             <li><a href="//android-developers.blogspot.com/2013/01/verifying-back-end-calls-from-android.html">
               <div class="feed-image" style="background:url('//lh4.ggpht.com/7z4NItEg-X21zvFGAarKonk-VaysBYthJ30u1JjaQ0-5fjyHNawnmoNeG--4FCACog=w124') no-repeat 0 0"></div>
               <h4>Verifying Back-End Calls from Android Apps</h4>
@@ -131,16 +152,6 @@
               <h4>Daydream: Interactive Screen Savers</h4>
               <p>Daydream is an interactive screen-saver mode introduced in Android 4.2. Learn how to add Daydreams to your apps...</p>
               </a></li>
-            <li><a href="//android-developers.blogspot.com/2012/11/designing-for-tablets-were-here-to-help.html">
-              <div class="feed-image" style="background:url('//developer.android.com/design/media/multipane_expand.png') no-repeat 0 0; background-position:right top;"></div>
-              <h4>Designing for Tablets?</h4>
-              <p>Essential resources for everyone in the app development pipeline—from product managers, to designers, to developers, and QA engineers...</p>
-              </a></li>
-            <li><a href="//android-developers.blogspot.com/2012/12/in-app-billing-version-3.html">
-              <div class="feed-image" style="background:url('//developer.android.com/images/iab-thumb.png') no-repeat 0 0;background-position:center right;"></div>
-              <h4>In-app Billing Version 3 Now Available</h4>
-              <p>A new version of In-app Billing is available that lets you sell digital goods in your app with just a few lines of code...</p>
-              </a></li>
           </ul>
                                 <!-- FEATURED DOCS -->
           <ul>
@@ -265,7 +276,7 @@
   
   if (feed.entry.length > MAX_LIST_LENGTH) {
     // add item to go to youtube for playlist
-    $ulVideos.append('<li class="more"><a href="//www.youtube.com/playlist?list=PL' + playlistId + '">More &raquo;</a></li>');
+    $ulVideos.append('<li class="more"><a href="//www.youtube.com/playlist?list=' + playlistId + '">More &raquo;</a></li>');
   }
 
   $liPlaylist.append($ulVideos);
@@ -315,14 +326,14 @@
   'designinaction' : {
     'ids': ["PLWz5rJ2EKKc8j2B95zGMb8muZvrIy-wcF"]
   },
-  'about' : {
-    'ids': ["PL611F8C5DBF49CEC6"]
+  'bizdevbytes' : {
+    'ids': ["PLWz5rJ2EKKc8-Osr0TuHyTMEhKV0xJ6ql"]
   },
-  'developersstrikeback' : {
-    'ids': ["PLWz5rJ2EKKc8nhhIOieejm1PxYHmPkIPh"]
+  'thisweek' : {
+    'ids': ["PLWz5rJ2EKKc9Wam5jE-9oY8l6RpeAx-XM"]
   },
   'googleio' : {
-    'ids': ["PL4C6BCDE45E05F49E"]
+    'ids': ["PLWz5rJ2EKKc9WGUwq2gQ-coU3fSyexgOx"]
   }
 };
 
@@ -333,7 +344,7 @@
     for (var i in ids) {
       var script = "<script type='text/javascript' src='//gdata.youtube.com/feeds/api/playlists/"
                     + ids[i] +
-                    "?v=2&alt=json-in-script&max-results=50&callback=renderVideoPlaylists&orderby=published'><\/script>";
+                    "?v=2&alt=json-in-script&max-results=50&callback=renderVideoPlaylists&orderby=position'><\/script>";
       $("body").append(script);
     }
   }
@@ -345,7 +356,7 @@
   var playlistId = "PLWz5rJ2EKKc_XOgcRukSoKKjewFJZrKV0"; /* DevBytes */
   var script = "<script type='text/javascript' src='//gdata.youtube.com/feeds/api/playlists/"
                 + playlistId +
-                "?v=2&alt=json-in-script&max-results=10&callback=renderDevelopersLivePlaylist&orderby=reversedPosition'><\/script > ";
+                "?v=2&alt=json-in-script&max-results=10&callback=renderDevelopersLivePlaylist&orderby=position'><\/script > ";
   $("body").append(script);
 }
 
diff --git a/docs/html/distribute/googleplay/index.html b/docs/html/distribute/googleplay/index.html
deleted file mode 100644
index 46a8ce2..0000000
--- a/docs/html/distribute/googleplay/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/distribute/index.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should have been redirected. Please <a
-href="http://developer.android.com/distribute/index.html">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/distribute/googleplay/promote/badges.jd b/docs/html/distribute/googleplay/promote/badges.jd
index 738e76b..93092bf 100644
--- a/docs/html/distribute/googleplay/promote/badges.jd
+++ b/docs/html/distribute/googleplay/promote/badges.jd
@@ -1,5 +1,13 @@
 page.title=Google Play Badges
 @jd:body
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
 
 <p itemprop="description">Google Play badges allow you to promote your app with official branding
 in your online ads, promotional materials, or anywhere else you want a link to your app.</p>
@@ -201,10 +209,8 @@
           onchange="changeBadgeLang()">
     <option title="Afrikaans"
             value="af">Afrikaans</option>
-<!--
     <option title="Arabic"
             value="ar">العربية</option>
--->
     <option title="Belarusian"
             value="be">Беларуская</option>
     <option title="Bulgarian"
diff --git a/docs/html/distribute/googleplay/promote/brand.jd b/docs/html/distribute/googleplay/promote/brand.jd
index 265584f..a047b1f 100644
--- a/docs/html/distribute/googleplay/promote/brand.jd
+++ b/docs/html/distribute/googleplay/promote/brand.jd
@@ -1,6 +1,13 @@
 page.title=Brand Guidelines
 @jd:body
-
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
 
 
 <p>We encourage you to use the Android and Google Play brands with your Android app
diff --git a/docs/html/distribute/googleplay/promote/index.jd b/docs/html/distribute/googleplay/promote/index.jd
index 6882990..14f37c4 100644
--- a/docs/html/distribute/googleplay/promote/index.jd
+++ b/docs/html/distribute/googleplay/promote/index.jd
@@ -3,6 +3,14 @@
 header.hide=0
 footer.hide=0
 @jd:body
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
 
 <!--
 <style>
diff --git a/docs/html/distribute/googleplay/promote/linking.jd b/docs/html/distribute/googleplay/promote/linking.jd
index 4fdc5db..014582a 100644
--- a/docs/html/distribute/googleplay/promote/linking.jd
+++ b/docs/html/distribute/googleplay/promote/linking.jd
@@ -1,5 +1,13 @@
 page.title=Linking to Your Products
 @jd:body
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
 
 <div class="sidebox-wrapper">
 <div class="sidebox">
diff --git a/docs/html/distribute/googleplay/publish/preparing.jd b/docs/html/distribute/googleplay/publish/preparing.jd
index 5593f4f..dd35b25 100644
--- a/docs/html/distribute/googleplay/publish/preparing.jd
+++ b/docs/html/distribute/googleplay/publish/preparing.jd
@@ -1,6 +1,14 @@
 page.title=Launch Checklist
 page.tags="publishing","launch","Google Play", "Developer Console"
 @jd:body
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
 
 <div id="qv-wrapper"><div id="qv">
 <h2>Checklist</h2>
diff --git a/docs/html/distribute/googleplay/quality/core.jd b/docs/html/distribute/googleplay/quality/core.jd
index 9e23bcc..3fd221c 100644
--- a/docs/html/distribute/googleplay/quality/core.jd
+++ b/docs/html/distribute/googleplay/quality/core.jd
@@ -1,5 +1,13 @@
 page.title=Core App Quality Guidelines
 @jd:body
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
 
 <div id="qv-wrapper"><div id="qv">
 <h2>Quality Criteria</h2>
diff --git a/docs/html/distribute/googleplay/quality/index.jd b/docs/html/distribute/googleplay/quality/index.jd
index ef537b1..def42e5 100644
--- a/docs/html/distribute/googleplay/quality/index.jd
+++ b/docs/html/distribute/googleplay/quality/index.jd
@@ -1,5 +1,13 @@
 page.title=App Quality
 @jd:body
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
 
 <p>App quality directly influences the long-term success of your app&mdash;in
 terms of installs, user rating and reviews, engagement, and user retention.
diff --git a/docs/html/distribute/googleplay/quality/tablet.jd b/docs/html/distribute/googleplay/quality/tablet.jd
index f65cf93..c80c3cc 100644
--- a/docs/html/distribute/googleplay/quality/tablet.jd
+++ b/docs/html/distribute/googleplay/quality/tablet.jd
@@ -1,5 +1,13 @@
 page.title=Tablet App Quality Checklist
 @jd:body
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
 
 <div id="qv-wrapper"><div id="qv">
 <h2>Checklist</h2>
@@ -25,9 +33,7 @@
 </ol>
 </div></div>
 
-<p>Before you publish an app on Google Play, it's important to make sure that
-the app meets the basic expectations of tablet users through compelling features
-and an intuitive, well-designed UI. </p>
+<p>Before you publish an app on Google Play, it's important to make sure that the app meets the basic expectations of tablet users through compelling features and an intuitive, well-designed UI. </p>
 
 <p>Tablets are a growing part of the Android installed base that offers new
 opportunities for <a
@@ -258,32 +264,34 @@
 <h2 id="use-tablet-icons">4. Use Icons and other assets that are designed
 for tablet screens</h2>
 
-<p>So that your app looks its best, make sure to use icons and other bitmap
-assets that are created specifically for the densities used by tablet screens.
-Specifically, you should create sets of alternative bitmap drawables for each
-density in the range commonly supported by tablets.</p>
+<p>To ensure your app looks its best, provide icons and other bitmap
+assets for each density in the range commonly supported by tablets. Specifically, you should
+design your icons for the action bar, notifications, and launcher according to the
+<a href="{@docRoot}design/style/iconography.html">Iconography</a> guidelines and
+provide them in multiple densities, so they appear at the appropriate size on all screens
+without blurring or other scaling artifacts.</p>
 
 <p class="table-caption"><strong>Table 1</strong>. Raw asset sizes for icon types.<table>
 <tr>
-<th>Density </th>
-<th colspa>Launcher</th>
+<th>Density</th>
+<th>Launcher</th>
 <th>Action Bar</th>
 <th>Small/Contextual</th>
 <th>Notification</th>
 </tr>
 <tr>
 <td><code>mdpi</code></td>
-<td>48x48px</td>
-<td>32x32px</td>
-<td>16x16px</td>
-<td>24x24px</td>
+<td>48x48 px</td>
+<td>32x32 px</td>
+<td>16x16 px</td>
+<td>24x24 px</td>
 </tr>
 <tr>
 <td><code>hdpi</code></td>
-<td>72x72px</td>
-<td>48x48px</td>
-<td>24x24px</td>
-<td>36x36px</td>
+<td>72x72 px</td>
+<td>48x48 px</td>
+<td>24x24 px</td>
+<td>36x36 px</td>
 </tr>
 <tr>
 <td><code>tvdpi</code></td>
@@ -294,34 +302,42 @@
 </tr>
 <tr>
 <td><code>xhdpi</code></td>
-<td>96x96px</td>
-<td>64x64px</td>
-<td>32x32px</td>
-<td>48x48px</td>
+<td>96x96 px</td>
+<td>64x64 px</td>
+<td>32x32 px</td>
+<td>48x48 px</td>
+</tr>
+<tr>
+<td><code>xxhdpi</code></td>
+<td>144x144 px</td>
+<td>96x96 px</td>
+<td>48x48 px</td>
+<td>74x74 px</td>
 </tr>
 
 </table>
 
-<p>Other points to consider: </p>
+<p>Your app should supply a version of each icon and bitmap asset that's optimized
+for <strong>at least one</strong> the following common tablet screen densities:</p>
 
 <ul>
-<li>Icons in the action bar, notifications, and launcher should be designed
-according to the icon design guidelines and have the same physical size on
-tablets as on phones.</li>
-<li>Use density-specific <a
-href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">
-resource qualifiers</a> to ensure that the proper set of alternative resources
-gets loaded.</li>
+  <li><code>hdpi</code></li>
+  <li><code>xhdpi</code></li>
+  <li><code>xxhdpi</code></li>
 </ul>
 
-<p style="margin-bottom:.5em;">At a minimum, your app should supply sets of
-  custom drawables and assets for common tablet screen densities,
-  tagged with these qualifiers as appropriate:</p>
+<p>Other tips:</p>
 
 <ul>
-  <li><code>hdpi</code>, OR</li>
-  <li><code>xhdpi</code>, OR</li>
-  <li><code>xxhdpi</code></li>
+<li>When possible, use vector shapes for your icon designs so you can scale them
+without loss of detail and edge crispness.</li>
+<li>Use density-specific <a
+href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">
+resource qualifiers</a> to ensure that the proper icons are loaded for each screen density.</li>
+<li>Tablets and other large screen devices often request a launcher icon that is one density
+size larger than the device's actual density, so you should provide your launcher
+icon at the highest density possible. For example, if a tablet has an {@code xhdpi} screen,
+it will request the {@code xxhdpi} version of the launcher icon.</li>
 </ul>
 
 <div class="rel-resources">
@@ -331,8 +347,8 @@
 
   <ul>
     <li>
-      <a href="{@docRoot}design/style/iconography.html">Iconography</a>&mdash; Android
-      Design document that shows how to use various types of icons.
+      <a href="{@docRoot}design/style/iconography.html">Iconography</a>&mdash;
+      Design guidelines and tips about how to create various types of icons.
     </li>
 
     <li>
@@ -822,7 +838,7 @@
 
 <div class="sidebox-wrapper">
 <div class="sidebox">
-<h2 style="line-height:1em;">How to Send Feedback</h2>
+<h2 style="line-height:1em;">How to send feedback</h2>
 
 <p>Please use the link below to send
 feedback or request a manual review of your Optimization Tips.</p>
@@ -830,9 +846,8 @@
 <p>Make sure to read the relevant sections of the Tablet App Quality
 Guidelines prior to sending feedback.</p>
 
-<p><strong><a href="https://support.google.com/googleplay/android-developer/contact/tabletf"
-target="_googleplay" style="white-space:nowrap">Tablet Optimization
-Tips Feedback Form &raquo;</a></strong></p>
+<p><strong><a href="https://support.google.com/googleplay/android-developer/contact/tabletq"
+target="_googleplay" style="white-space:nowrap">Designed for Tablets Contact Form &raquo;</a></strong></p>
 </div>
 </div>
 
@@ -845,13 +860,12 @@
 to visit the Optimization Tips page to see how your app is doing
 against the basic checks.  If there are any issues listed, we
 recommend addressing them in your app and uploading a new binary for
-distribution, if needed.</p>
+distribution, if needed. </p>
 
 <p>If the Optimization Tips page lists "To Do" issues that you feel don't
 apply to your app or affect its quality on tablets, please notify us
-using the <a href="https://support.google.com/googleplay/android-developer/contact/tabletf"
-target="_googleplay" style="white-space:nowrap">Tablet Optimization
-Tips Feedback Form</a>. We
+using the <a href="https://support.google.com/googleplay/android-developer/contact/tabletq"
+target="_googleplay" style="white-space:nowrap">Designed for Tablets Contact Form &raquo;</a>. We
 will review your app and update your Optimization Tips page as
 appropriate.</p>
 
diff --git a/docs/html/distribute/googleplay/spotlight/index.jd b/docs/html/distribute/googleplay/spotlight/index.jd
index b83080e..7004b0a 100644
--- a/docs/html/distribute/googleplay/spotlight/index.jd
+++ b/docs/html/distribute/googleplay/spotlight/index.jd
@@ -3,7 +3,14 @@
 header.hide=0
 
 @jd:body
-
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
 
 <p>Android developers, their apps, and their successes with Android and Google Play. </p>
 
@@ -15,6 +22,35 @@
             margin-bottom:40px;
             margin-top:30px;">
    <div style="padding:0 0 0 29px;">
+        <h4>Developer Story: Colopl</h4>
+          <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px;
+            -moz-border-radius: 5px;
+            border-radius: 5px height:78px;
+            width: 78px;
+            float: left;
+            margin: 17px 20px 9px 0;" 
+            src="//lh3.ggpht.com/sx2ILNaXQYOsHfR91T5tUWGlfXE1FutHCBN02Fll6mi9gIaG6RZCGbeJMtIvOoegCPTh=w124" >
+          <div style="width:700px;">
+          <p style="margin-top:26px;
+                    margin-bottom:12px;">
+          The creators of Kuma The Bear, Japan-based <a href="https://play.google.com/store/apps/developer?id=COLOPL,+Inc." target="_android">Colopl</a>, talk about how Google Play and Android allowed them to grow their business to become one of the most profitable games publishers in APAC to date. </p>
+           </div>
+           <iframe style="float:left;
+             margin-right:24px;
+             margin-top:14px;" width="700" height="394" src=
+             "http://www.youtube.com/embed/CbpoZeQCNe4?HD=1;rel=0;origin=developer.android.com;" frameborder="0" allowfullscreen>
+           </iframe>
+   </div> 
+</div>
+
+<div style="background: #F0F0F0;
+            border-top: 1px solid #DDD;
+            padding: 0px 0 24px 0;
+            overflow: auto;
+            clear:both;
+            margin-bottom:40px;
+            margin-top:30px;">
+   <div style="padding:0 0 0 29px;">
         <h4>Developer Story: redBus.in</h4>
           <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px;
             -moz-border-radius: 5px;
diff --git a/docs/html/distribute/index.jd b/docs/html/distribute/index.jd
index 54f9301..8e7c6e1 100644
--- a/docs/html/distribute/index.jd
+++ b/docs/html/distribute/index.jd
@@ -2,6 +2,14 @@
 header.hide=1
 
 @jd:body
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
     
     
 <div class="marquee">
diff --git a/docs/html/distribute/promote/device-art.jd b/docs/html/distribute/promote/device-art.jd
index 55b846e..58e183c 100644
--- a/docs/html/distribute/promote/device-art.jd
+++ b/docs/html/distribute/promote/device-art.jd
@@ -1,5 +1,13 @@
 page.title=Device Art Generator
 @jd:body
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
 
 <p>The device art generator allows you to quickly wrap your app screenshots in real device artwork.
 This provides better visual context for your app screenshots on your web site or in other
diff --git a/docs/html/google/backup/signup.jd b/docs/html/google/backup/signup.jd
index 70f7de2..f9ad600 100644
--- a/docs/html/google/backup/signup.jd
+++ b/docs/html/google/backup/signup.jd
@@ -1,4 +1,5 @@
 page.title=Register for Android Backup Service
+excludeFromSuggestions=true
 @jd:body
 
 
@@ -225,7 +226,7 @@
     } else if ($("input#agree").is(':checked')
         && packagename.length
         && packagename != DEFAULT_TEXT) {
-      window.location = "https://play.google.com/apps/publish/v2/GetBackupApiKey?p=" +
+      window.location = "https://play.google.com/apps/publish/GetBackupApiKey?p=" +
                       encodeURIComponent(packagename);
     } else {
       $("label#agreeLabel,label#pnameLabel").parent().stop().animate({color: "#258AAF"}, 200,
diff --git a/docs/html/google/backup/terms.jd b/docs/html/google/backup/terms.jd
index decb0d8..e5b00a4 100644
--- a/docs/html/google/backup/terms.jd
+++ b/docs/html/google/backup/terms.jd
@@ -1,4 +1,5 @@
 page.title=Android Backup Service Terms of Service
+excludeFromSuggestions=true
 @jd:body
 
 
diff --git a/docs/html/google/gcm/gcm.jd b/docs/html/google/gcm/gcm.jd
index 3d99a75..4d26e6b 100644
--- a/docs/html/google/gcm/gcm.jd
+++ b/docs/html/google/gcm/gcm.jd
@@ -1,4 +1,4 @@
-page.title=Google Cloud Messaging for Android
+page.title=GCM Architectural Overview
 @jd:body
 
 <div id="qv-wrapper">
diff --git a/docs/html/google/gcm/index.jd b/docs/html/google/gcm/index.jd
index fcb0a58..8f325b8 100644
--- a/docs/html/google/gcm/index.jd
+++ b/docs/html/google/gcm/index.jd
@@ -1,10 +1,11 @@
 page.title=Google Cloud Messaging for Android
+page.tags="gcm"
 header.hide=1
 @jd:body
 
 
 <div class="landing-banner">
-        
+
 <div class="col-5" style="min-height:100px">
   <img src="{@docRoot}images/gcm/gcm-logo.png" />
 </div>
@@ -15,7 +16,7 @@
   Google Cloud Messaging for Android (GCM) is a service that allows you to send data
 from your server to your users' Android-powered device, and also to receive messages from devices on the same connection. The GCM service handles all aspects of queueing of messages and delivery to the target Android application running on the target device. GCM is completely free no matter how big your messaging needs are, and there are no quotas.
 </p>
- 
+
 </div>
 </div>
 
@@ -27,12 +28,12 @@
 message telling your app there is new data to be fetched from the
 server (for instance, a movie uploaded by a friend), or it could be a message containing
 up to 4kb of payload data (so apps like instant messaging can consume the message directly). <a href="{@docRoot}google/gcm/gcm.html">GCM Architectural Overview.</a></p>
-    
+
     <h4>Send "send-to-sync" messages</h4>
-    <p>A send-to-sync (collapsible) message is often a "tickle" that tells a mobile application to sync data from the server. For example, suppose you have an email application. When a user receives new email on the server, the server pings the mobile application with a "New mail" message. This tells the application to sync to the server to pick up the new email. 
+    <p>A send-to-sync (collapsible) message is often a "tickle" that tells a mobile application to sync data from the server. For example, suppose you have an email application. When a user receives new email on the server, the server pings the mobile application with a "New mail" message. This tells the application to sync to the server to pick up the new email.
     <a href="{@docRoot}google/gcm/adv.html#s2s">Send-to-sync messages</a>.</p>
     </a>
-    
+
     <h4>Send messages with payload</h4>
     <p>Unlike a send-to-sync message, every "message with payload" (non-collapsible message) is delivered. The payload the message contains can be up to 4kb.
     <a href="{@docRoot}google/gcm/adv.html#payload">Messages with payload</a>.</p>
@@ -45,7 +46,7 @@
     <p>Streamlined registration makes it simple and fast to add GCM support to your Android app. <a href="{@docRoot}google/gcm/gs.html">Learn more &raquo;</a></p>
     <h4>Upstream messaging over XMPP</h4>
     <p>GCM's Cloud Connection Service (CCS) lets you communicate with Android devices over a persistent XMPP connection. The primary advantages of CCS are speed, and the ability to receive upstream messages (that is, messages from a device to the cloud). You can use the service in tandem with existing GCM APIs. Use <a href="https://services.google.com/fb/forms/gcm/">this form</a> to sign up for CCS. <a href="{@docRoot}google/gcm/ccs.html">Learn more &raquo;</a></p>
-    
+
     <h4>Seamless multi-device messaging</h4>
     <p>Maps a single user to a notification key, which you can then use to send a single message to multiple devices owned by the user. Use <a href="https://services.google.com/fb/forms/gcm/">this form</a> to sign up for User Notifications. <a href="{@docRoot}google/gcm/notifications.html">Learn more &raquo;</a></p>
 
diff --git a/docs/html/google/index.jd b/docs/html/google/index.jd
index 4020cf4..095388e 100644
--- a/docs/html/google/index.jd
+++ b/docs/html/google/index.jd
@@ -1,6 +1,14 @@
 page.title=Google Services
 header.hide=1
 @jd:body
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
 
 <style>
 div.landing-cell,
diff --git a/docs/html/google/play-services/gcm.jd b/docs/html/google/play-services/gcm.jd
index 67b55ea..a9da73f 100644
--- a/docs/html/google/play-services/gcm.jd
+++ b/docs/html/google/play-services/gcm.jd
@@ -1,4 +1,4 @@
-page.title=GCM Extensions for Android
+page.title=GCM Extensions
 page.tags="cloud","push","messaging"
 header.hide=1
 @jd:body
diff --git a/docs/html/google/play-services/location.jd b/docs/html/google/play-services/location.jd
index ddaa890..1cdd247 100644
--- a/docs/html/google/play-services/location.jd
+++ b/docs/html/google/play-services/location.jd
@@ -1,5 +1,5 @@
 page.title=Location APIs
-page.tags="location","geofence", "geofencing", "activity recognition", "activity detection", "gps"
+page.tags="location","geofence", "geofencing", "gps"
 header.hide=1
 @jd:body
 
@@ -93,4 +93,4 @@
     </li>
 </ul>
 </div>
-</div>
\ No newline at end of file
+</div>
diff --git a/docs/html/google/play-services/setup.jd b/docs/html/google/play-services/setup.jd
index a960a18..4d38850 100644
--- a/docs/html/google/play-services/setup.jd
+++ b/docs/html/google/play-services/setup.jd
@@ -1,26 +1,25 @@
 page.title=Setup Google Play Services SDK
 @jd:body
 
-
-<p>
-    The Google Play services SDK is an extension to the Android SDK and is available to you as a
-    downloadable package from the <a href="{@docRoot}tools/help/sdk-manager.html">SDK
-    Manager</a>. The download includes the client library and code samples.
-</p>
     
-<p>
-    To develop using the <a href="{@docRoot}reference/gms-packages.html">Google
-    Play services APIs</a>, you must download the Google Play services SDK.
-    Additionally, you must provide a physical <strong>development device</strong> on
-    which you can run and debug your app. You can develop on any compatible Android
-    device that runs Android 2.2 or higher and includes the Google Play Store.
-    Ideally, you would develop and test the app on a variety of devices, including
-    both phones and tablets. 
-</p>
+<p>To develop an app using the <a href="{@docRoot}reference/gms-packages.html">Google
+Play services APIs</a>, you must download the Google Play services SDK
+from the <a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a>.
+The download includes the client library and code samples.</p>
 
-<p class="note"><strong>Note</strong>: Google Play services is not supported on the
-Android emulator &mdash; to develop using the APIs, you need to provide a development
-device such as an Android phone or tablet.</p>
+<p>To test your app when using the Google Play services SDK, you must use either:</p>
+<ul>
+  <li>A compatible Android
+    device that runs Android 2.2 or higher and includes Google Play Store.</li>
+  <li>The Android emulator with an <a href="{@docRoot}tools/devices/index.html">AVD</a>
+  that runs the Google APIs platform based on Android 4.2.2 or higher.</li>
+</ul>
+
+<p>Ideally, you should develop and test your app on a variety of devices, including
+both phones and tablets.</p>
+
+
+<h2 id="Install">Install the Google Play Services SDK</h2>
 
 <p>To install the Google Play services SDK for development:</p>
 
@@ -35,20 +34,34 @@
   Android SDK, then execute <code>android sdk</code>.</li>
     </ul>
   </li>
-  <li>
-      Scroll to the bottom of the package list, select <b>Extras &gt; Google Play services</b>,
-      and install it.
+  <li>Install the Google Play services SDK.
+    <p>Scroll to the bottom of the package list, expand <b>Extras</b>, select
+    <b>Google Play services</b>, and install it.</p>
       <p>The Google Play services SDK is saved in your Android SDK environment at
-      <code>&lt;android-sdk-folder&gt;/extras/google/google_play_services/</code>.</p>
+      <code>&lt;android-sdk&gt;/extras/google/google_play_services/</code>.</p>
   </li>
-  <li>Copy the <code>&lt;android-sdk-folder&gt;/extras/google/google_play_services/libproject/google-play-services_lib</code>        
-      library project into the source tree where you maintain your Android app projects.
-  <p>If you are using Eclipse, import the library project into your workspace. Click <b>File > Import</b>, select <b>Android > Existing
+  <li>Install a compatible version of the Google APIs platform.
+    <p>If you want to test your app on the emulator, expand the directory for <b>Android 4.2.2
+    (API 17)</b> or a higher version, select <b>Google APIs</b>, and install it. Then create a
+    new <a href="{@docRoot}tools/devices/index.html">AVD</a> with Google APIs as
+    the platform target.</p>
+    <p class="note"><strong>Note:</strong> Only Android 4.2.2 and higher versions of the
+    Google APIs platform include Google Play services.</p>
+  </li>
+  <li>Make a copy of the Google Play services library project.
+    <p>Copy the library project at
+  <code>&lt;android-sdk&gt;/extras/google/google_play_services/libproject/google-play-services_lib/</code>        
+  to the location where you maintain your Android app projects.
+  <p>If you are using Eclipse, import the library project into your workspace.
+  Click <b>File > Import</b>, select <b>Android > Existing
   Android Code into Workspace</b>, and browse to the copy of the library project to import it.</p>
   </li>
 </ol>
 
 
+
+<h2 id="Setup">Set Up a Project with the Library</h2>
+
 <p>To set up a project to use the Google Play services SDK:</p>
 
 <ol>
@@ -58,8 +71,8 @@
       or <a href="{@docRoot}tools/projects/projects-cmdline.html#ReferencingLibraryProject">Referencing a Library Project on the Command Line</a>
       for more information on how to do this.</p>
       <p class="note"><strong>Note:</strong>
-      You should be referencing a copy of the library that you copied to your
-      source tree&mdash;you should not reference the library from the Android SDK directory.</p>
+      You should be referencing a copy of the library that you copied to your development
+      workspace&mdash;you should not reference the library directly from the Android SDK directory.</p>
   </li>
   <li>If you are using <a href="{@docRoot}tools/help/proguard.html">ProGuard</a>, add the following
       lines in the <code>&lt;project_directory&gt;/proguard-project.txt</code> file
@@ -71,7 +84,14 @@
 </pre>
 </ol>
 
-<h2 id="ensure">Ensuring Devices Have the Google Play services APK</h2>
+<p>Once you have the Google Play services library project added to your app project,
+you can begin developing features with the
+<a href="{@docRoot}reference/gms-packages.html">Google Play services APIs</a>.</p>
+
+
+
+<h2 id="ensure">Ensure Devices Have the Google Play services APK</h2>
+
 <p>As described in the <a href="{@docRoot}google/play-services/index.html">Google Play services
 introduction</a>, Google Play delivers service updates for users on
 Android 2.2 through the Google Play Store app. However, updates might not reach
@@ -80,7 +100,7 @@
 <p class="caution">
 <strong>Important:</strong>
     Because it is hard to anticipate the state of each device, you must <em>always</em> check for a
-    compatible Google Play services APK in your app before you access Google Play services
+    compatible Google Play services APK before you access Google Play services
     features.  For many apps, the best time to check is during the
     {@link android.app.Activity#onResume onResume()} method of the main activity.
 </p>
@@ -119,11 +139,9 @@
 
 <p class="note">
 <b>Note:</b>
-<span>
     The Google Play services APK is not visible by searching the Google Play Store. The client
     library provides a deep link into the Google Play Store when it detects that the device has a
     missing or incompatible Google Play services APK.
-</span>
 </p>
 
 <p>
diff --git a/docs/html/google/play/billing/index.jd b/docs/html/google/play/billing/index.jd
index 481a79c..0818514 100755
--- a/docs/html/google/play/billing/index.jd
+++ b/docs/html/google/play/billing/index.jd
@@ -1,5 +1,13 @@
 page.title=Google Play In-app Billing
 @jd:body
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
 
 <p>In-app Billing is a Google Play service that lets you sell digital content from inside
 your applications. You can use the service to sell a wide range of content, including downloadable
diff --git a/docs/html/guide/appendix/media-formats.jd b/docs/html/guide/appendix/media-formats.jd
index feacdc6..069a603 100644
--- a/docs/html/guide/appendix/media-formats.jd
+++ b/docs/html/guide/appendix/media-formats.jd
@@ -1,4 +1,5 @@
-page.title=Android Supported Media Formats
+page.title=Supported Media Formats
+page.tags="video","audio","mpeg","mp4","m4a","mp3","3gp","3gpp","flac","wave","wav"
 @jd:body
 
 <div id="qv-wrapper">
diff --git a/docs/html/guide/components/index.jd b/docs/html/guide/components/index.jd
index 87bae53..6ede873 100644
--- a/docs/html/guide/components/index.jd
+++ b/docs/html/guide/components/index.jd
@@ -4,6 +4,14 @@
 page.landing.image=images/develop/app_components.png
 
 @jd:body
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
 
 <div class="landing-docs">
 
diff --git a/docs/html/guide/faq/commontasks.jd b/docs/html/guide/faq/commontasks.jd
index 7b90de2..086721f 100644
--- a/docs/html/guide/faq/commontasks.jd
+++ b/docs/html/guide/faq/commontasks.jd
@@ -1,6 +1,5 @@
 page.title=Common Tasks and How to Do Them in Android
-parent.title=FAQs, Tips, and How-to
-parent.link=index.html
+excludeFromSuggestions=true
 @jd:body
 
 <ul>
diff --git a/docs/html/guide/faq/framework.jd b/docs/html/guide/faq/framework.jd
index 4a7a3fc..c851e72 100644
--- a/docs/html/guide/faq/framework.jd
+++ b/docs/html/guide/faq/framework.jd
@@ -1,6 +1,5 @@
 page.title=Android Application Framework FAQ
-parent.title=FAQs, Tips, and How-to
-parent.link=index.html
+excludeFromSuggestions=true
 @jd:body
 
 <ul>
diff --git a/docs/html/guide/faq/index.jd b/docs/html/guide/faq/index.jd
index 9a2614b..0c5fb0e 100644
--- a/docs/html/guide/faq/index.jd
+++ b/docs/html/guide/faq/index.jd
@@ -1,4 +1,5 @@
 page.title=Android FAQs
+excludeFromSuggestions=true
 @jd:body
 
 <dl>
diff --git a/docs/html/guide/faq/licensingandoss.jd b/docs/html/guide/faq/licensingandoss.jd
index c267fe81..d1dd9a7 100644
--- a/docs/html/guide/faq/licensingandoss.jd
+++ b/docs/html/guide/faq/licensingandoss.jd
@@ -1,6 +1,5 @@
 page.title=Android Open Source Licensing FAQ
-parent.title=FAQs, Tips, and How-to
-parent.link=index.html
+excludeFromSuggestions=true
 @jd:body
 
 <ul>
diff --git a/docs/html/guide/faq/security.jd b/docs/html/guide/faq/security.jd
index a6e07c8..96fc7f5 100644
--- a/docs/html/guide/faq/security.jd
+++ b/docs/html/guide/faq/security.jd
@@ -1,6 +1,5 @@
 page.title=Android Security FAQ
-parent.title=FAQs, Tips, and How-to
-parent.link=index.html
+excludeFromSuggestions=true
 @jd:body
 
 <ul>
diff --git a/docs/html/guide/faq/troubleshooting.jd b/docs/html/guide/faq/troubleshooting.jd
index f19f5ec..8bb7eeb 100644
--- a/docs/html/guide/faq/troubleshooting.jd
+++ b/docs/html/guide/faq/troubleshooting.jd
@@ -1,6 +1,5 @@
 page.title=Troubleshooting
-parent.title=FAQs, Tips, and How-to
-parent.link=index.html
+excludeFromSuggestions=true
 @jd:body
 
 
diff --git a/docs/html/guide/practices/app-design/accessibility.html b/docs/html/guide/practices/app-design/accessibility.html
deleted file mode 100644
index 0fa7b32..0000000
--- a/docs/html/guide/practices/app-design/accessibility.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh"
-content="0;url=http://developer.android.com/guide/topics/ui/accessibility/index.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should be redirected. Please <a
-href="http://developer.android.com/guide/topics/ui/accessibility/index.html">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_1.html b/docs/html/guide/practices/ui_guidelines/icon_design_1.html
deleted file mode 100644
index 183facf..0000000
--- a/docs/html/guide/practices/ui_guidelines/icon_design_1.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=icon_design.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<a href="icon_design.html">click here</a> if you are not redirected.
-</body>
-</html>
diff --git a/docs/html/guide/topics/index.html b/docs/html/guide/topics/index.html
deleted file mode 100644
index 4881acf..0000000
--- a/docs/html/guide/topics/index.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=../index.html">
-</head>
-<body>
-<a href="../index.html">click here</a> if you are not redirected.
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/guide/topics/location/strategies.jd b/docs/html/guide/topics/location/strategies.jd
index f5f61a0e..f1eb66e 100644
--- a/docs/html/guide/topics/location/strategies.jd
+++ b/docs/html/guide/topics/location/strategies.jd
@@ -1,7 +1,5 @@
 page.title=Location Strategies
 excludeFromSuggestions=true
-page.tags="geolocation","maps","mapview"
-
 @jd:body
 
 <div id="tb-wrapper">
diff --git a/docs/html/guide/topics/media/camera.jd b/docs/html/guide/topics/media/camera.jd
index 8ebb349..e48109a 100644
--- a/docs/html/guide/topics/media/camera.jd
+++ b/docs/html/guide/topics/media/camera.jd
@@ -1,5 +1,5 @@
 page.title=Camera
-page.tags="mediarecorder"
+page.tags="photo","video","picture","mediarecorder"
 @jd:body
 
 <div id="qv-wrapper">
diff --git a/docs/html/guide/topics/ui/sharables/sample_images.zip b/docs/html/guide/topics/ui/sharables/sample_images.zip
deleted file mode 100644
index 007a68a..0000000
--- a/docs/html/guide/topics/ui/sharables/sample_images.zip
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/ar_generic_rgb_wo_45.png b/docs/html/images/brand/ar_generic_rgb_wo_45.png
index bdb0ff6..c403608 100644
--- a/docs/html/images/brand/ar_generic_rgb_wo_45.png
+++ b/docs/html/images/brand/ar_generic_rgb_wo_45.png
Binary files differ
diff --git a/docs/html/images/brand/ar_generic_rgb_wo_60.png b/docs/html/images/brand/ar_generic_rgb_wo_60.png
index ba9fc69..95e31eb 100644
--- a/docs/html/images/brand/ar_generic_rgb_wo_60.png
+++ b/docs/html/images/brand/ar_generic_rgb_wo_60.png
Binary files differ
diff --git a/docs/html/images/home/io-gdl-2013.png b/docs/html/images/home/io-gdl-2013.png
index 78b6820..ec3b4ff 100644
--- a/docs/html/images/home/io-gdl-2013.png
+++ b/docs/html/images/home/io-gdl-2013.png
Binary files differ
diff --git a/docs/html/images/home/io-videos-2013.png b/docs/html/images/home/io-videos-2013.png
new file mode 100644
index 0000000..8655e8f
--- /dev/null
+++ b/docs/html/images/home/io-videos-2013.png
Binary files differ
diff --git a/docs/html/images/tools/studio_error_eventlog.png b/docs/html/images/tools/studio_error_eventlog.png
new file mode 100644
index 0000000..909b285
--- /dev/null
+++ b/docs/html/images/tools/studio_error_eventlog.png
Binary files differ
diff --git a/docs/html/images/tools/studio_error_gradle5.png b/docs/html/images/tools/studio_error_gradle5.png
new file mode 100644
index 0000000..13de607
--- /dev/null
+++ b/docs/html/images/tools/studio_error_gradle5.png
Binary files differ
diff --git a/docs/html/images/tools/studio_error_supportlib.png b/docs/html/images/tools/studio_error_supportlib.png
new file mode 100644
index 0000000..603b54c
--- /dev/null
+++ b/docs/html/images/tools/studio_error_supportlib.png
Binary files differ
diff --git a/docs/html/images/video-Colopl.png b/docs/html/images/video-Colopl.png
new file mode 100644
index 0000000..0ee88c6
--- /dev/null
+++ b/docs/html/images/video-Colopl.png
Binary files differ
diff --git a/docs/html/index.jd b/docs/html/index.jd
index 5cc2fb6..d12b981 100644
--- a/docs/html/index.jd
+++ b/docs/html/index.jd
@@ -3,6 +3,14 @@
 carousel=true
 page.metaDescription=The official site for Android developers. Provides the Android SDK and documentation for app developers and designers.
 @jd:body
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
 
 
 <div class="wrap">
@@ -12,33 +20,19 @@
         <a href="" class="slideshow-next">Next</a>
         <div class="frame">
             <ul>
-                <li class="item carousel-home">
-                    <div class="content-left col-10">
-                    <a href="http://goo.gl/9lM2d">
-                      <img src="{@docRoot}images/home/io-gdl-2013.png" style="margin:60px 0 0">
-                    </a>
-                    </div>
-                    <div class="content-right col-5">
-                    <h1>Google I/O Live Stream</h1>
-                    <p>Watch Android sessions live from Google I/O 2013. Hear about the latest in
-                    Android straight from the source.</p>
-                    <p>Brought to you by
-                    <a href="http://developers.google.com/live">Google Developers Live</a>.</p>
-                    <p><a href="http://goo.gl/9lM2d" class="button">Tune in now</a></p>
-                    </div>
-                </li>
+
                 <li class="item carousel-home">
                     <div class="content-left col-11" style="padding-top:65px;">
                       <script src="//ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
-                      <div style="box-shadow: 3px 10px 18px 1px #999;width:600px;height:338px">
+                      <div style="box-shadow: 3px 10px 18px 1px #999;width:600px;height:336px">
                         <div id="ytapiplayer">
-                          You need Flash player 8+ and JavaScript enabled to view this video.
+                          <a href="http://www.youtube.com/watch?v=CbpoZeQCNe4"><img width=600 src="{@docRoot}images/video-Colopl.png"></a><!--You need Flash player 8+ and JavaScript enabled to view this video. -->
                         </div>
                         <script type="text/javascript">
                             var params = { allowScriptAccess: "always" };
                             var atts = { id: "ytapiplayer" };
-                            swfobject.embedSWF("//www.youtube.com/v/O8i4HUw7JYA?enablejsapi=1&playerapiid=ytplayer&version=3&HD=1;rel=0;showinfo=0;modestbranding;origin=developer.android.com;autohide=1",
-                              "ytapiplayer", "600", "338", "8", null, null, params, atts);
+                            swfobject.embedSWF("//www.youtube.com/v/CbpoZeQCNe4?enablejsapi=1&playerapiid=ytplayer&version=3&HD=1;rel=0;showinfo=0;modestbranding;origin=developer.android.com;autohide=1",
+                              "ytapiplayer", "600", "336", "8", null, null, params, atts);
 
                             // Callback used to pause/resume carousel based on video state
                             function onytplayerStateChange(newState) {              
@@ -66,10 +60,30 @@
                       </div>
                     </div>
                     <div class="content-right col-4">
-                    <h1 style="white-space:nowrap;line-height:1.2em;">Developer Story: <br />redBus.in</h1>
-                    <p>Bangalore-based developers redBus.in talk about how Android is helping them deliver a superior booking and travel experience to millions of daily bus riders in India.</p>
+                    <h1 style="white-space:nowrap;line-height:1.2em;">Developer Story: <br />Colopl</h1>
+                    <p>The creators of Kuma The Bear, Japan-based Colopl, talk about how Google Play and Android allowed them to grow their business to become one of the most profitable games publishers in APAC to date. </p>
                     </div>
                 </li>
+
+                <li class="item carousel-home">
+                    <div class="content-left col-11" style="padding-top:10px;">
+                        <a href="{@docRoot}channels/io2013.html">
+                          <img src="{@docRoot}images/home/io-videos-2013.png" style="margin:60px 0 0;
+                          box-shadow: 3px 10px 18px 1px #999;">
+                        </a>
+                    </div>
+                    <div class="content-right col-4">
+                    <h1>Watch the Android talks from Google I/O</h1>
+                    <p>If you weren't able to attend Google I/O in person or couldn't make it
+                    to all the talks, you can catch up on the action
+                    with all the recordings, brought to you by
+                    <a href="http://developers.google.com/live">Google Developers Live</a>.</p>
+                    <p><a href="{@docRoot}channels/io2013.html" class="button"
+                    >See the Android talks</a></p>
+                    </div>
+                </li>
+
+
                 <li class="item carousel-home">
                     <div class="content-left col-9">
                         <a href="{@docRoot}about/versions/jelly-bean.html"><img src="{@docRoot}images/home/android-jellybean.png" ></a>
diff --git a/docs/html/sdk/1.0_r1/upgrading.jd b/docs/html/sdk/1.0_r1/upgrading.jd
deleted file mode 100644
index d6a7ed5..0000000
--- a/docs/html/sdk/1.0_r1/upgrading.jd
+++ /dev/null
@@ -1,155 +0,0 @@
-page.title=Upgrading the SDK
-sdk.version=1.0_r1
-excludeFromSuggestions=true
-@jd:body
-
-<p>For the current SDK release, see the links under <strong>Current SDK Release</strong> in the side navigation.</p>
-
-<p>This guide will help you migrate your development environment and applications
-to <strong>version 1.0, release 1</strong>, of the Android SDK. Use this guide if you've been developing applications
-on a different version of the Android SDK.</p>
-
-<p>To ensure that your applications are compliant with the Android 1.0 system available 
-on mobile devices, you need to install the new SDK and port your existing Android 
-applications to the updated API. The sections below guide you through the process.</p>
-
-<h2 id="install-new">Install the new SDK</h2>
-
-<p>After unpacking the SDK, you should:</p>
-
-<ul>
-  <li>Wipe your emulator data. <p>Some data formats have changed since the last
-  SDK release, so any previously saved data in your emulator must be removed. Open a console/terminal
-  and navigate to the <code>/tools</code> directory of your SDK. Launch the 
-  emulator with the <code>-wipe-data</code> option. </p>
-  <p>Windows: <code>emulator -wipe-data</code><br/>
-   Mac/Linux: <code>./emulator -wipe-data</code></p>
-  </li>
-  <li>Update your PATH variable (Mac/Linux; optional). <p>If you had previously setup your 
-  PATH variable to point to the SDK tools directory, then you'll need to update it to 
-  point to the new SDK. E.g., for a <code>.bashrc</code> or <code>.bash_profile</code> file:
-  <code>export PATH=$PATH:<em>&lt;your_new_sdk_dir></em>/tools</code></p>
-  </li>
-</ul>
-
-<h2 id="update-plugin">Update your ADT Eclipse Plugin</h2>
-
-<p>If you develop on Eclipse and are using the ADT plugin, follow these steps to install the
-plugin that's required for this version of the SDK.</p>
-
-<table style="font-size:100%">
-<tr><th>Eclipse 3.3 (Europa)</th><th>Eclipse 3.4 (Ganymede)</th></tr>
-<tr>
-<td width="45%">
-<ol>
-    <li><a href="http://dl-ssl.google.com/android/ADT-0.8.0.zip">Download the ADT v0.8.0 zip 
-      file</a> (do not unpack it).</li>
-    <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Software Updates</strong> &gt; <strong>Find
-            and Install...</strong>. </li>
-    <li>In the dialog that appears, select <strong>Search for new features to install</strong> and click 
-      <strong>Next</strong>. </li>
-    <li>Click <strong>New Archive Site...</strong></li>
-    <li>Browse and select the downloaded the zip file.</li>
-    <li>You should now see the new site added to the search list (and checked).
-        Click <strong>Finish</strong>. </li>
-    <li>In the subsequent Search Results dialog box, select the checkbox for
-    <strong>Android Plugin</strong> &gt; <strong>Developer Tools</strong>.
-    This will check both features:  "Android Developer Tools", and "Android
-    Editors". The Android Editors feature is optional, but recommended.  If
-    you choose to install it, you need the WST plugin mentioned earlier in this
-    page. Click <strong>Next</strong>. </li>
-    <li>Read the license agreement and then select <strong>Accept terms of the license agreement</strong>. 
-     Click <strong>Next</strong>. </li>
-    <li>Click <strong>Finish</strong>. </li>
-    <li>The ADT plugin is not signed; you can accept the installation anyway
-        by clicking <strong>Install All</strong>. </li>
-    <li>Restart Eclipse. </li>
-</ol>
-
-</td>
-<td>
-
-<ol>
-    <li><a href="http://dl-ssl.google.com/android/ADT-0.8.0.zip">Download the ADT v0.8.0 zip 
-      file</a> (do not unpack it).</li>
-    <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Software Updates...</strong>.</li>
-    <li>In the dialog that appears, click the <strong>Available Software</strong> tab.</li>
-    <li>Click <strong>Add Site...</strong>, then <strong>Archive...</strong>.</li>
-    <li>Browse and select the downloaded the zip file.</li>
-    <li>Back in the Available Software view, you should see the plugin. Select the checkbox next to 
-      <em>Developer Tools</em>  and click <strong>Install...</strong></li>
-    <li>On the subsequent Install window, "Android Developer Tools", and "Android Editors" should both be checked. 
-    The Android Editors feature is optional, but recommended.  If
-    you choose to install it, you need the WST plugin mentioned earlier in this
-    page. Click <strong>Next</strong>.</li>
-    <li>Accept the license agreement and click <strong>Finish</strong>.</li>
-    <li>Restart Eclipse. </li>
-</ol>
-
-</td>
-</tr>
-</table>
-
-<p>After restart, update your Eclipse preferences to point to the SDK directory:</p>
-    <ol>
-      <li>Select <strong>Window</strong> > <strong>Preferences...</strong> to open the Preferences panel. (Mac OSX: <strong>Eclipse</strong> > <strong>Preferences</strong>)</li>
-      <li>Select <strong>Android</strong> from the left panel.</li>
-      <li>For the SDK Location in the main panel, click <strong>Browse...</strong> and locate the SDK directory.</li>
-      <li>Click <strong>Apply</strong>, then <strong>OK</strong>.</li>
-    </ol>
-
-<h2 id="sign">Set Up Application Signing</h2>
-
-<p>All applications must now be signed before you can install them on the emulator. Both 
-the ADT plugin and the Ant-based build tools support this requirement by signing compiled 
-.apk files with a debug key. To do so, the build tools use the Keytool utility included 
-in the JDK to to create a keystore and a key with a known alias and password. For more 
-information, see "Signing and Publishing Your App" in the documentation included with the SDK.
-
-<p>To support signing, you should first make sure that Keytool is available to the SDK build 
-tools. In most cases, you can tell the SDK build tools how to find Keytool by making sure that 
-your JAVA_HOME environment variable is set and that it references a suitable JDK. Alternatively, 
-you can add the JDK version of Keytool to your PATH variable.</p>
-
-<p>If you are developing on a version of Linux that originally came with Gnu Compiler for Java, 
-make sure that the system is using the JDK version of Keytool, rather than the gcj version. 
-If keytool is already in your PATH, it might be pointing to a symlink at /usr/bin/keytool. 
-In this case, check the symlink target to make sure that it points to the keytool in the JDK.</p>
-
-<p>If you use Ant to build your .apk files (rather than ADT for Eclipse), you must regenerate 
-your build.xml file. To do that, follow these steps:</p>
-<ol>
-  <li>In your Android application project directory, locate and delete the current build.xml file.</li>
-  <li>Run activitycreator, directing output to the folder containing your application project.
-
-<pre>- exec activitycreator --out &lt;project folder&gt; your.activity.YourActivity</pre>
-
-  </li>
-</ol>
-
-<p>Run in this way, activitycreator will not erase or create new Java files (or manifest files), 
-provided the activity and package already exists. It is important that the package and the activity 
-are real. The tool creates a new build.xml file, as well as a new directory called "libs" in which 
-to place 3rd jar files, which are now automatically handled by the Ant script.</p>
-
-<h2 id="migrate">Migrate your applications</h2>
-
-<p>If (and only if) you have written apps in an SDK released previous to
-the Android 1.0 SDK, you will need to migrate your applications. After
-updating your SDK, you may encounter breakages in your code, due to
-framework and API changes. You'll need to update your code to match
-changes in the Android APIs.</p>
-
-<p>One way to start is to open your project in Eclipse and see where the ADT
-identifies errors in your application. You can also look up
-specific changes in the Android APIs in the <em>Overview of Changes</em> and <em>
-API Diffs Report</em>, both available in the documentation included with the
-Android 1.0 SDK package.</p>
-
-<p>If you have additional trouble updating your code, visit the 
-<a href="http://groups.google.com/group/android-developers">Android Developers Group</a>
-to seek help from other Android developers.</p>
-
-<p>If you have modified one of the ApiDemos applications and would like to migrate it 
-to the new SDK, note that you will need to uninstall the version of ApiDemos that comes 
-preinstalled in the emulator.</p>
diff --git a/docs/html/sdk/1.0_r2/upgrading.jd b/docs/html/sdk/1.0_r2/upgrading.jd
deleted file mode 100644
index 243950d..0000000
--- a/docs/html/sdk/1.0_r2/upgrading.jd
+++ /dev/null
@@ -1,155 +0,0 @@
-page.title=Upgrading the SDK
-sdk.version=1.0_r2
-excludeFromSuggestions=true
-@jd:body
-
-<p>For the current SDK release, see the links under <strong>Current SDK Release</strong> in the side navigation.</p>
-
-<p>This guide will help you migrate your development environment and applications
-to <strong>version 1.0, release 2</strong>, of the Android SDK. Use this guide if you've been developing applications
-on a different version of the Android SDK.</p>
-
-<p>To ensure that your applications are compliant with the Android 1.0 system available 
-on mobile devices, you need to install the new SDK and port your existing Android 
-applications to the updated API. The sections below guide you through the process.</p>
-
-<h2 id="install-new">Install the new SDK</h2>
-
-<p>After unpacking the SDK, you should:</p>
-
-<ul>
-  <li>Wipe your emulator data. <p>Some data formats have changed since the last
-  SDK release, so any previously saved data in your emulator must be removed. Open a console/terminal
-  and navigate to the <code>/tools</code> directory of your SDK. Launch the 
-  emulator with the <code>-wipe-data</code> option. </p>
-  <p>Windows: <code>emulator -wipe-data</code><br/>
-   Mac/Linux: <code>./emulator -wipe-data</code></p>
-  </li>
-  <li>Update your PATH variable (Mac/Linux; optional). <p>If you had previously setup your 
-  PATH variable to point to the SDK tools directory, then you'll need to update it to 
-  point to the new SDK. E.g., for a <code>.bashrc</code> or <code>.bash_profile</code> file:
-  <code>export PATH=$PATH:<em>&lt;your_new_sdk_dir></em>/tools</code></p>
-  </li>
-</ul>
-
-<h2 id="update-plugin">Update your ADT Eclipse Plugin</h2>
-
-<p>If you develop on Eclipse and are using the ADT plugin, follow these steps to install the
-plugin that's required for this version of the SDK.</p>
-
-<table style="font-size:100%">
-<tr><th>Eclipse 3.3 (Europa)</th><th>Eclipse 3.4 (Ganymede)</th></tr>
-<tr>
-<td width="45%">
-<ol>
-    <li><a href="http://dl-ssl.google.com/android/ADT-0.8.0.zip">Download the ADT v0.8.0 zip 
-      file</a> (do not unpack it).</li>
-    <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Software Updates</strong> &gt; <strong>Find
-            and Install...</strong>. </li>
-    <li>In the dialog that appears, select <strong>Search for new features to install</strong> and click 
-      <strong>Next</strong>. </li>
-    <li>Click <strong>New Archive Site...</strong></li>
-    <li>Browse and select the downloaded the zip file.</li>
-    <li>You should now see the new site added to the search list (and checked).
-        Click <strong>Finish</strong>. </li>
-    <li>In the subsequent Search Results dialog box, select the checkbox for
-    <strong>Android Plugin</strong> &gt; <strong>Developer Tools</strong>.
-    This will check both features:  "Android Developer Tools", and "Android
-    Editors". The Android Editors feature is optional, but recommended.  If
-    you choose to install it, you need the WST plugin mentioned earlier in this
-    page. Click <strong>Next</strong>. </li>
-    <li>Read the license agreement and then select <strong>Accept terms of the license agreement</strong>. 
-     Click <strong>Next</strong>. </li>
-    <li>Click <strong>Finish</strong>. </li>
-    <li>The ADT plugin is not signed; you can accept the installation anyway
-        by clicking <strong>Install All</strong>. </li>
-    <li>Restart Eclipse. </li>
-</ol>
-
-</td>
-<td>
-
-<ol>
-    <li><a href="http://dl-ssl.google.com/android/ADT-0.8.0.zip">Download the ADT v0.8.0 zip 
-      file</a> (do not unpack it).</li>
-    <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Software Updates...</strong>.</li>
-    <li>In the dialog that appears, click the <strong>Available Software</strong> tab.</li>
-    <li>Click <strong>Add Site...</strong>, then <strong>Archive...</strong>.</li>
-    <li>Browse and select the downloaded the zip file.</li>
-    <li>Back in the Available Software view, you should see the plugin. Select the checkbox next to 
-      <em>Developer Tools</em>  and click <strong>Install...</strong></li>
-    <li>On the subsequent Install window, "Android Developer Tools", and "Android Editors" should both be checked. 
-    The Android Editors feature is optional, but recommended.  If
-    you choose to install it, you need the WST plugin mentioned earlier in this
-    page. Click <strong>Next</strong>.</li>
-    <li>Accept the license agreement and click <strong>Finish</strong>.</li>
-    <li>Restart Eclipse. </li>
-</ol>
-
-</td>
-</tr>
-</table>
-
-<p>After restart, update your Eclipse preferences to point to the SDK directory:</p>
-    <ol>
-      <li>Select <strong>Window</strong> > <strong>Preferences...</strong> to open the Preferences panel. (Mac OSX: <strong>Eclipse</strong> > <strong>Preferences</strong>)</li>
-      <li>Select <strong>Android</strong> from the left panel.</li>
-      <li>For the SDK Location in the main panel, click <strong>Browse...</strong> and locate the SDK directory.</li>
-      <li>Click <strong>Apply</strong>, then <strong>OK</strong>.</li>
-    </ol>
-
-<h2 id="sign">Set Up Application Signing</h2>
-
-<p>All applications must now be signed before you can install them on the emulator. Both 
-the ADT plugin and the Ant-based build tools support this requirement by signing compiled 
-.apk files with a debug key. To do so, the build tools use the Keytool utility included 
-in the JDK to to create a keystore and a key with a known alias and password. For more 
-information, see "Signing and Publishing Your App" in the documentation included with the SDK.
-
-<p>To support signing, you should first make sure that Keytool is available to the SDK build 
-tools. In most cases, you can tell the SDK build tools how to find Keytool by making sure that 
-your JAVA_HOME environment variable is set and that it references a suitable JDK. Alternatively, 
-you can add the JDK version of Keytool to your PATH variable.</p>
-
-<p>If you are developing on a version of Linux that originally came with Gnu Compiler for Java, 
-make sure that the system is using the JDK version of Keytool, rather than the gcj version. 
-If keytool is already in your PATH, it might be pointing to a symlink at /usr/bin/keytool. 
-In this case, check the symlink target to make sure that it points to the keytool in the JDK.</p>
-
-<p>If you use Ant to build your .apk files (rather than ADT for Eclipse), you must regenerate 
-your build.xml file. To do that, follow these steps:</p>
-<ol>
-  <li>In your Android application project directory, locate and delete the current build.xml file.</li>
-  <li>Run activitycreator, directing output to the folder containing your application project.
-
-<pre>- exec activitycreator --out &lt;project folder&gt; your.activity.YourActivity</pre>
-
-  </li>
-</ol>
-
-<p>Run in this way, activitycreator will not erase or create new Java files (or manifest files), 
-provided the activity and package already exists. It is important that the package and the activity 
-are real. The tool creates a new build.xml file, as well as a new directory called "libs" in which 
-to place 3rd jar files, which are now automatically handled by the Ant script.</p>
-
-<h2 id="migrate">Migrate your applications</h2>
-
-<p>If (and only if) you have written apps in an SDK released previous to
-the Android 1.0 SDK, you will need to migrate your applications. After
-updating your SDK, you may encounter breakages in your code, due to
-framework and API changes. You'll need to update your code to match
-changes in the Android APIs.</p>
-
-<p>One way to start is to open your project in Eclipse and see where the ADT
-identifies errors in your application. You can also look up
-specific changes in the Android APIs in the <em>Overview of Changes</em> and <em>
-API Diffs Report</em>, both available in the documentation included with the
-Android 1.0 SDK package.</p>
-
-<p>If you have additional trouble updating your code, visit the 
-<a href="http://groups.google.com/group/android-developers">Android Developers Group</a>
-to seek help from other Android developers.</p>
-
-<p>If you have modified one of the ApiDemos applications and would like to migrate it 
-to the new SDK, note that you will need to uninstall the version of ApiDemos that comes 
-preinstalled in the emulator.</p>
diff --git a/docs/html/sdk/1.1_r1/upgrading.jd b/docs/html/sdk/1.1_r1/upgrading.jd
deleted file mode 100644
index 840ae6b..0000000
--- a/docs/html/sdk/1.1_r1/upgrading.jd
+++ /dev/null
@@ -1,151 +0,0 @@
-page.title=Upgrading the SDK
-sdk.version=1.1_r1
-excludeFromSuggestions=true
-@jd:body
-
-<!--
-<div class="sidebox-wrapper">
-<div class="sidebox">
-
-     <h2>Useful Links</h2>
-
-      <ul class="noindent">
-        <li><a href="migrating/0.9-1.0/changes-overview.html">Overview of Changes</a>
-		      <p>A high-level look at what's changed in Android, with 
-		       discussion of how the changes may affect your apps.</p></li>
-
-        <li><a href="migrating/0.9-1.0/changes.html">API Diff Report</a> 
-                <p>A detailed report that lists all the specific changes in the latest SDK.</p></li>
-
-        <li><a href="RELEASENOTES.html">Release Notes</a> 
-                <p>Version details, known issues, and resolved issues. </p></li>
-
-        <li><a href="http://groups.google.com/group/android-developers">Android Developers Group</a> 
-            <p>A forum where you can discuss migration issues and learn from other Android developers. </p></li>
- 
-        <li><a href="http://code.google.com/p/android/issues/list">Android Issue Tracker</a>
-            <p>If you think you may have found a bug, use the issue tracker to report it.</p></li>
-      </ul>
-
-   </div>
-</div>
--->
-
-<p>This document describes how to move your development environment and existing
-Android applications from an Android 1.0 SDK to the Android 1.1, Release 1 SDK.
-If you are migrating applications from an earlier SDK, please read the upgrading
-document available in the Android 1.0 SDK package.
-</p>
-
-<p>To ensure that your applications are compliant with the Android 1.1 system available 
-on mobile devices, you need to install the Android 1.1 SDK and port your existing Android 
-applications to it. The sections below will guide you through the process.</p>
-
-<h2 id="install-new">Installing the Latest SDK</h2>
-
-<p><a href="{@docRoot}sdk/1.1_r1/index.html">Download the SDK</a> and unpack it into a safe location.</p>
-
-<p>After unpacking the new SDK and saving it an appropriate location, you should:</p>
-
-<ul>
-  <li>Wipe your emulator data. <p>Some data formats have changed since the last
-  SDK release, so any previously saved data in your emulator must be removed. Open a console/terminal
-  and navigate to the <code>/tools</code> directory of your new SDK. Launch the 
-  emulator with the <code>-wipe-data</code> option. 
-  <p>Windows: <code>emulator -wipe-data</code><br/>
-   Mac/Linux: <code>./emulator -wipe-data</code></p>
-  </li>
-  <li>Update your PATH variable (Mac/Linux; optional). <p>If you had previously setup your 
-  PATH variable to point to the SDK tools directory, then you'll need to update it to 
-  point to the new SDK. For example, for a <code>.bashrc</code> or <code>.bash_profile</code> file:
-  <code>export PATH=$PATH:<em>&lt;your_new_sdk_dir></em>/tools</code></p>
-  </li>
-  <li>If (and only if) you are developing using Ant, you will also need to modify 
-  your build.xml properties to point to the new SDK. 
-  <p>Open the <code>default.properties</code> file associated with your build.xml 
-  file (typically located in the same directory). In the default.properties
-  file, update the <code>sdk-folder</code> property with the full path to
-  the new SDK directory.</p></li>
-</ul>
-
-<a name="Updating_the_ADT_plugin" id="Updating_the_ADT_plugin"></a>
-<h2 id="update-plugin">Update your ADT Eclipse Plugin</h2>
-
-<p>If you develop on Eclipse and are migrating from an Android 1.0
-SDK, no update of the ADT plugin is needed &mdash; skip to <a href="#updateEclipsePrefs">Update your Eclipse SDK Preferences</a>. </p>
-
-<p>If you are migrating from an earlier version of the SDK, you will
-need to update the ADT plugin. <p>You may also want to upgrade your 
-ADT plugin when a new version becomes available for your existing version 
-of the SDK.</p>
-
-<p>The steps below describe how to update the ADT plugin to the latest
-version available. </p>
-
-<table style="font-size:100%">
-<tr><th>Eclipse 3.3 (Europa)</th><th>Eclipse 3.4 (Ganymede)</th></tr>
-<tr>
-<td width="50%">
-<ol>
-    <li> Select <strong>Help</strong> &gt; <strong>Software Updates</strong> &gt; <strong>Find and Install...</strong>. </li>
-    <li> Select <strong>Search for updates of the currently installed features</strong> and click <strong>Finish</strong>. </li>
-    <li> If any update for ADT is available, select and install. </li>
-    <li> Restart Eclipse.</li>
-</ol>
-<p> Alternatively, </p>
-<ol>
-    <li> Select <strong>Help</strong> &gt; <strong>Software Updates</strong> &gt; <strong>Manage Configuration</strong>. </li>
-
-    <li> Navigate down the tree and select <strong>Android Development Tools &lt;version&gt;</strong> </li>
-    <li> Select <strong>Scan for Updates</strong> under <strong>Available Tasks</strong>.</li>
-</ol>
-</td>
-<td>
-<ol>
-    <li>Select <strong>Help</strong> &gt; <strong>Software Updates...</strong></li>
-    <li>Select the <strong>Installed Software</strong> tab.</li>
-    <li>Click <strong>Update...</strong></li>
-    <li>If an update for ADT is available, select it and click <strong>Finish</strong>.</li>
-    <li>Restart Eclipse.</li>
-</ol>
-</td>
-</tr>
-</table>
-
-<h2 id="updateEclipsePrefs">Update your Eclipse SDK Preferences</h2>
-
-<p>The last step is to update your Eclipse preferences to point to the new SDK directory:</p>
-    <ol>
-      <li>Select <strong>Window</strong> > <strong>Preferences...</strong> to open the Preferences panel. (Mac OSX: <strong>Eclipse</strong> > <strong>Preferences</strong>)</li>
-      <li>Select <strong>Android</strong> from the left panel.</li>
-      <li>For the SDK Location in the main panel, click <strong>Browse...</strong> and locate the SDK directory.</li>
-      <li>Click <strong>Apply</strong>, then <strong>OK</strong>.</li>
-    </ol>
-
-<h2 id="migrate">Migrate Your Applications, if Necessary</h2>
-
-<p>If (and only if) you have written apps in an SDK released previous to
-the Android 1.0 SDK, you will need to migrate your applications. After
-installing the new SDK and updating the ADT Plugin (if applicable), you
-may encounter breakages in your application code, due to 
-framework and API changes. You'll need to update your code to match the
-latest APIs.</p>
-
-<p>One way to start is to open your project in Eclipse and see where the ADT
-identifies errors in your application. You can also look up
-specific changes in the Android APIs in the 
-<a href="{@docRoot}sdk/android-1.1.html#api-changes">Android 1.1 Version 
-Notes</a> document.</p>
-
-
-<p>If you have additional trouble updating your code, visit the 
-<a href="http://groups.google.com/group/android-developers">Android Developers Group</a>
-to seek help from other Android developers.</p>
-
-<p>If you have modified one of the ApiDemos applications and would like to migrate it 
-to the new SDK, note that you will need to uninstall the version of ApiDemos that comes 
-preinstalled in the emulator. For more information, or if you encounter an "reinstallation" 
-error when running or installing ApiDemos, see the troubleshooting topic 
-<a href="{@docRoot}resources/faq/troubleshooting.html#apidemosreinstall">I can't install ApiDemos 
-apps in my IDE because of a signing error</a> for information about how to solve the problem.</p>
-
diff --git a/docs/html/sdk/1.5_r1/upgrading.jd b/docs/html/sdk/1.5_r1/upgrading.jd
deleted file mode 100644
index 0377069..0000000
--- a/docs/html/sdk/1.5_r1/upgrading.jd
+++ /dev/null
@@ -1,396 +0,0 @@
-page.title=Upgrading the SDK
-sdk.version=1.5_r1
-excludeFromSuggestions=true
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-  <h2>Upgrading quickview</h2>
-  <ul>
-    <li>The Android 1.5 SDK uses a new project structure and a new ADT plugin (ADT 0.9). </li>
-    <li>To move existing projects into the SDK, you must make some minor changes in your 
-    development environment.</li>
-    <li>The new ADT plugin (ADT 0.9) <em>is not compatible</em> with projects created in previous SDKs.</li>
-    <li>You need to uninstall your existing ADT plugin, before installing ADT 0.9.</li>
-  </ul>
-
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#Install">Install the SDK</a></li>
-    <li><a href="#UpdateAdt">Update Your Eclipse ADT Plugin</a></li>
-    <li><a href="#UpdateYourProjects">Update Your Projects</a>
-      <ol>
-        <li><a href="#EclipseUsers">Eclipse Users</a></li>
-        <li><a href="#AntUsers">Ant Users</a></li>
-      </ol>
-    </li>
-    <li><a href="#MigrateYourApplications">Migrate Your Applications</a>
-      <ol><li><a href="#FutureProofYourApps">Future-proof your apps</a></li></ol>
-    </li>
-  </ol>
-  
-  <h2>Migrating references</h2>
-  <ol>
-    <li><a href="{@docRoot}sdk/api_diff/3/changes.html">Android 1.5 API Differences</a></li>
-    <li><a 
-href="http://android-developers.blogspot.com/2009/04/future-proofing-your-apps.html">Future-Proofing
-Your Apps &raquo;</a></li>
-    <li><a 
-href="http://android-developers.blogspot.com/2009/04/ui-framework-changes-in-android-15.html">UI 
-framework changes in Android 1.5 &raquo;</a></li>
-  </ol>
-
-</div>
-</div>
-
-<p>This document describes how to move your development environment and existing
-Android applications from an Android 1.0 or 1.1 SDK to the Android 1.5 SDK.
-If you are migrating applications from an SDK older than 1.0, please also read the upgrading
-document available in the Android 1.0 SDK package.</p>
-
-<p>There are several compelling reasons to upgrade, such as new SDK tools
-that make developing more efficient and new APIs that allow you to expand the feature-set
-of your applications. However, even if you or your applications don't require these enhancements,
-it's important that you upgrade to ensure that your applications run properly on the 
-Android 1.5 platform.</p>
-
-<p>The Android 1.5 platform will soon be deployable to devices around the world.
-If you have already released Android applications to the public, you should
-test the forward-compatibility of your applications on the latest version of the platform
-as soon as possible. It's unlikely that you'll encounter breakage in your applications, but
-in the interest of maintaining the best user experience, you should take no risks.
-So, please install the new Android SDK and test your applications on Android 1.5.</p>
-
-<p>For more information on new SDK features and system changes, 
-see the <a href="{@docRoot}sdk/android-1.5.html">Android 1.5 Version Notes</a>.</p>
-
-
-<h2 id="Install">Install the SDK</h2>
-
-<p>If you haven't yet downloaded the SDK, <a href="{@docRoot}sdk/1.5_r1/index.html">download from here</a> 
-and unpack it into a safe location.</p>
-
-<p><strong>Before you begin:</strong>
-If you had previously setup your PATH variable to point to the SDK tools directory, 
-then you need to update it to point to the new SDK. For example, for a 
-<code>.bashrc</code> or <code>.bash_profile</code> file:</p>
-<pre>export PATH=$PATH:<em>&lt;your_sdk_dir></em>/tools</pre>
-
-<p>If you don't use Eclipse for development,
-skip to <a href="#updateYourProjects">Update Your Projects</a>.</p>
-
-
-<h2 id="UpdateAdt">Update Your Eclipse ADT Plugin</h2>
-
-<p><em>If you installed ADT-0.9_pre with the early look 1.5 SDK, there have been
-additional changes, so please continue with this guide and update to the final ADT 0.9.</em></p>
-
-<p>A new ADT plugin (version 0.9) is required for the Android 1.5 SDK.
-Because the component structure has been changed since Android 1.1, 
-the Android 1.5 SDK does not work with ADT 0.8 (or older) and previously installed SDKs will not
-work with ADT 0.9. However, the Android 1.5 SDK includes an Android 1.1 SDK image that you
-can build against while using ADT 0.9. </p>
-
-<p class="note">For information about using different system images (such as Android 1.1) 
-while running this SDK, see Developing <a href="{@docRoot}guide/developing/eclipse-adt.html">
-In Eclipse, with ADT</a> or <a href="{@docRoot}guide/developing/other-ide.html">In 
-Other IDEs</a>, as appropriate for your development environment.</p>
-
-<p>In order to upgrade your Eclipse IDE to use the new 0.9 ADT, follow the steps below
-for your respective version of Eclipse.</p>
-
-<h3 id="uninstallAdt">Uninstall your previous ADT plugin</h3>
-
-<p>You must uninstall your existing ADT plugin (0.8 or older). If you do not uninstall it,
-you will get a conflict with the Android Editors when installing the new ADT.
-(If you have already installed ADT-0.9_pre with the early look 1.5 SDK, you can skip this
-uninstall procedure and continue to <a href="#installAdt">Install the 0.9 ADT plugin</a>).</p>
-
-<table style="font-size:100%">
-<tr><th>Eclipse 3.3 (Europa)</th><th>Eclipse 3.4 (Ganymede)</th></tr>
-<tr>
-<td width="50%">
-<!-- 3.3 steps -->
-<ol>
-    <li>Select <strong>Help</strong> &gt; <strong>Software Updates</strong> &gt; 
-      <strong>Manage Configuration</strong>. </li>
-    <li>Expand the list in the left panel to reveal the installed tools.</li>
-    <li>Right-click "Android Editors" and click <strong>Uninstall</strong>. Click <strong>OK</strong> 
-    to confirm.</li>
-    <li>Restart Eclipse. 
-      <p>(Do not uninstall "Android Development Tools".)</p></li>
-</ol>
-</td>
-<td>
-<!-- 3.4 steps -->
-<ol>
-    <li>Select <strong>Help</strong> &gt; <strong>Software Updates</strong>.</li>
-    <li>Select the <strong>Installed Software</strong> tab.</li>
-    <li>Select "Android Editors". Click <strong>Uninstall</strong>.</li>
-    <li>In the next window, be sure "Android Editors" is checked, then click <strong>Finish</strong>
-    to uninstall.</li>
-    <li>Restart Eclipse.
-      <p>(Do not uninstall "Android Development Tools".)</p></li>
-</ol>
-</td>
-</tr>
-</table>
-
-
-<h3 id="installAdt">Install the 0.9 ADT plugin</h3>
-
-<p>Only install the new plugin once you've completed the procedure to
-<a href="#uninstallAdt">Uninstall your previous ADT plugin</a>.</p>
-
-<table style="font-size:100%">
-<tr><th>Eclipse 3.3 (Europa)</th><th>Eclipse 3.4 (Ganymede)</th></tr>
-<tr>
-<td width="50%">
-<!-- 3.3 steps -->
-<ol>
-    <li>Select <strong>Help</strong> &gt; <strong>Software Updates</strong> &gt; 
-      <strong>Find and Install</strong>. </li>
-    <li>Select <strong>Search for new features to install</strong>.</li>
-    <li>Select the Android plugin entry by checking the box next to it, 
-      then click <strong>Finish</strong>.
-      <p>(Your original entry for the plugin should still be here. If not, see the guide
-      to <a href="{@docRoot}sdk/1.5_r1/installing.html#installingplugin">Installing the ADT Plugin</a>.)
-      </p></li>
-    <li>In the results, expand the entry for the Android plugin and
-      be sure that "Developer Tools" is checked, then click <strong>Next</strong>.
-      (This will install "Android DDMS" and "Android Development Tools".)</li>
-    <li>Read and accept the license agreement, then click <strong>Next</strong>.
-    <li>In the next window, click <strong>Finish</strong> to start installation.</li>
-    <li>The ADT plugin is not digitally signed. Accept the installation anyway by clicking 
-    <strong>Install All</strong>.</li>
-    <li>Restart Eclipse.</li>
-</ol>
-</td>
-<td>
-<!-- 3.4 steps -->
-<ol>
-    <li>Select <strong>Help</strong> &gt; <strong>Software Updates</strong>.</li>
-    <li>Select the <strong>Available Software</strong> tab.</li>
-    <li>Expand the entry for the Andriod plugin (may be listed as the location URL)
-      and select "Developer Tools" by checking the box next to it, then click 
-      <strong>Install</strong>.</li>
-    <li>On the next window, "Android DDMS" and "Android Development Tools" 
-    should both be checked. Click <strong>Finish</strong>.</li>
-    <li>Restart Eclipse.</li>
-</ol>
-</td>
-</tr>
-</table>
-
-<p>If you encounter problems, ensure your ADT is fully uninstalled and then
-follow the guide to 
-<a href="{@docRoot}sdk/1.5_r1/installing.html#installingplugin">Installing the ADT Plugin
-for Eclipse</a>.</p>
-
-<h3 id="updateEclipsePrefs">Update your Eclipse SDK Preferences</h3>
-
-<p>The last step is to update your Eclipse preferences to point to the new SDK directory:</p>
-    <ol>
-      <li>Select <strong>Window</strong> > <strong>Preferences</strong> to open the Preferences 
-      panel (Mac: <strong>Eclipse</strong> > <strong>Preferences</strong>).</li>
-      <li>Select <strong>Android</strong> from the left panel.</li>
-      <li>For the <em>SDK Location</em> in the main panel, click <strong>Browse</strong> 
-      and locate your SDK directory.</li>
-      <li>Click <strong>Apply</strong>, then <strong>OK</strong>.</li>
-    </ol>
-
-
-<h2 id="UpdateYourProjects">Update Your Projects</h2>
-
-<p>You will now need to update any and all Android projects that you have
-developed using a previous version of the Android SDK.</p>
-
-
-<h3 id="EclipseUsers">Eclipse users</h3>
-
-<p>If you use Eclipse to develop applications, use the following procedure to 
-update each project:</p>
-
-<ol>
-  <li>Right-click on the individual project (in the Package Explorer)
-   and select <strong>Properties</strong>.</li>
-  <li>In the properties, open the Android panel and select a "build target" to compile 
-    against. This SDK offers the Android 1.1 and Android 1.5 platforms to choose from. When 
-    you are initially updating your projects to the new SDK, we recommend that you select a build 
-    target with the Android 1.1 platform. Click <strong>Apply</strong>, then 
-    <strong>OK</strong>.</li>
-</ol>
-
-<p>The new plugin creates a <code>gen/</code> folder in your project, in which it puts the 
-<code>R.java</code> file
-and all automatically generated AIDL java files. If you get an error such as 
-<code>The type R is already defined</code>, 
-then you probably need to delete your old <code>R.java</code> or your old auto-generated
-AIDL Java files in the <code>src/</code> folder.
-(This <em>does not</em> apply to your own hand-crafted parcelable AIDL java files.)</p>
-
-<p>Note that, with the Android 1.5 SDK, there is a new process for running 
-applications in the Android Emulator. 
-Specifically, you must create an Android Virtual Device (AVD) before you can launch an instance
-of the Emulator. Before attempting to run your applications with the new SDK, 
-please continue with the section below to 
-<a href="#MigrateYourApplications">Migrate Your Applications</a>.</p>
-
-
-<h3 id="AntUsers">Ant users</h3>
-
-<p>If you build your projects using the Ant tool (rather than with Eclipse), note the 
-following changes with the new SDK tools.</p>
-
-<h4>build.xml has changed</h4>
-
-<p>You must re-create your <code>build.xml</code> file.</p>
-
-<p>If you had customized your <code>build.xml</code>, first make a copy of it:</p>
-
-<pre>
-$ cd <em>my-project</em>
-$ cp build.xml build.xml.old
-</pre>
-
-<p>Now use the new <code>android</code> tool (located in <code><em>your_sdk</em>/tools/</code>) 
-to create a new <code>build.xml</code> that references 
-a specific platform target:</p>
-
-<pre>$ android update project --path /path/to/my-project --target 1</pre>
-
-<p>The "target" corresponds to an Android platform library (including any add-ons, such as 
-Google APIs) that you would like to build your project against. You can view a list of available 
-targets (and their corresponding integer ID) with the command, <code>android list targets</code>. 
-When you are initially updating your projects to the new SDK, we recommend that you select the 
-first target ("1"), which uses the Android 1.1 platform library.</p>
-
-<p>A <code>gen/</code> folder will be created the first time you build and your <code>R.java</code> and
-your AIDL Java files will be generated in here. You <strong>must</strong> remove
-the old <code>R.java</code> and old auto-generated AIDL java files from the 
-<code>src/</code> folder. (This
-does not apply to your own hand-crafted parcelabe AIDL java files.)</p>
-
-<p class="note"><strong>Note:</strong> The "activitycreator" tool has been replaced 
-by the new "android" tool. For information on creating new projects with the android tool,
-see the documentation about <a href="{@docRoot}guide/developing/other-ide.html">Developing 
-In Other IDEs</a>.</p>
-
-<p>Note that, with the Android 1.5 SDK, there is a new process for running 
-applications in the Android Emulator. 
-Specifically, you must create an Android Virtual Device (AVD) before you can launch an instance
-of the Emulator. Before attempting to run your applications with the new SDK, 
-please continue with the section below to 
-<a href="#MigrateYourApplications">Migrate Your Applications</a>.</p>
-
-
-<h2 id="MigrateYourApplications">Migrate Your Applications</h2>
-
-<p>After you have completed the process above to <a href="#UpdateYourProjects">Update Your 
-Projects</a>, you are strongly encouraged to run each of your applications in an instance
-of the emulator running the Android 1.5 system image. It's possible (however, unlikely) 
-that you'll encounter some breakage in your application when you run your applications on
-the Android 1.5 system image. Whether you believe your application will be affected by 
-platform changes or not, it's very important that you test the application's 
-forward-compatibility on Android 1.5.</p>
-
-<p>To test forward-compatibility, simply run your existing application (as-is) on an Android
-Emulator that's running the Android 1.5 system image. The following procedure will guide
-you through the process to running your existing applications on an emulator. <em>Please read
-the following guide completely before you begin</em>.</p>
-
-<p>To test your application on an emulator running Android 1.5:</p>
-<ol>
-  <li><a href="#UpdateYourProjects">Update Your Project</a> (you should have done this 
-  already, in the section above).</li>
-  <li>Run your existing project, as-is, on an emulator running the Android 1.5 system image.
-    <p>As mentioned in the guide to <a href="#UpdateYourProjects">Update Your Projects</a>, 
-    you should have selected a "build
-    target" of "1", which compiles your application against the Android 1.1 system image, so there
-    should be no new errors in your code.</p>
-    <p>Eclipse users: follow the 
-    <a href="{@docRoot}guide/developing/eclipse-adt.html#Running">Eclipse guide to 
-    Running Your Application</a>.</p>
-    <p>Ant users: follow the 
-    <a href="{@docRoot}guide/developing/other-ide.html#Running">Ant guide to 
-    Running Your Application</a>
-    <p>During the procedure to Running Your Application, select a "deployment target" 
-    for the AVD that includes the Android 1.5 platform. 
-    If your application utilizes the Google Maps APIs (i.e.,
-    MapView), be certain to select a target that includes the Google APIs.</p>
-    <p>Once you complete the procedures to run your application in your respective environment,
-    linked above, return here.</p>
-  </li>
-  <li>With your application running in the emulator, perform all regular testing on the application
-  to ensure that it functions normally (in both landscape and portrait orientations).</li>
-</ol>
-
-<p>Chances are, your application runs just fine on the Android 1.5 platform &mdash; 
-new devices will be able to safely install and run your application and
-current users who update their devices will be able to continue using your application as usual.
-However, if something doesn't work the way you expect, then you might need to revisit
-your project and make any necessary changes to your code.</p>
-
-<p>You can check for code breakages caused by API changes by opening your project 
-in Eclipse, changing the "build target" to one using the Android 1.5 platform,
-and see where the ADT identifies errors in your code.</p>
-
-
-<h3 id="FutureProofYourApps">Future-proof your apps</h3>
-
-<p>There have been several API additions made for this release, but there have been
-very few actual API <em>changes</em>. Only a couple (relatively unused) elements 
-have been removed and a few have been deprecated, so your applications written with the 
-Android 1.1 system library should work just fine. However, 
-your application is more likely to encounter problems on Android 1.5
-if it performs any of the following:</p>
-
-<ul>
-  <li>Uses internal APIs. That is, APIs that are not officially supported
-  and not available in the reference documentation. Any un-official APIs are always subject
-  to change (which is why they're un-official) and some have indeed changed.
-  </li>
-  <li>Directly manipulates system settings. There are some settings (such as
-  GPS, data roaming, bluetooth and others) that used to be writable by 
-  applications but have been changed so that they can only be explicitly modified by the user
-  through the system settings. Refer to {@link android.provider.Settings.Secure}
-  to see which settings are now secured and cannot be directly changed by your application.
-  </li>
-  <li>Uses View hierarchies that are unreasonably deep (more than 10 or so levels) or 
-  broad (more than 30 total). View hierarchies this big have always been troublesome, but 
-  Android 1.5 is much more efficient at exposing this and your application may crash.
-  </li>
-  <li>Makes assumptions about the available hardware. With new support for soft keyboards,
-  not all devices will have full QWERTY keyboards on the hardware. So if your application
-  listens for special keypress events that only occur on a keypad, then your application
-  should degrade gracefully when there is no keyboard available.
-  </li>
-  <li>Performs its own layout orientation changes based on the acceletometer (or via other
-  sensors). Some devices running Android 1.5 will automatically rotate the orientation
-  (and all devices have the option to turn on auto-rotation), so if your application also
-  attempts to rotate the orientation, it can result in strange behavior. In addition, if your
-  application uses the accelerometer to detect shaking and you do not want to rotate the 
-  orientation, then you should lock the current orientation with 
-  <a href="{@docRoot}guide/topics/manifest/activity-element.html#screen">android:screenOrientation</a>.
-  </li>
-</ul>
-
-<p>Please read our blog post on <a 
-href="http://android-developers.blogspot.com/2009/04/future-proofing-your-apps.html">Future-Proofing
-Your Apps</a> for more information on the issues mentioned above.</p>
-
-<p>For information
-about other changes made to Android 1.5, refer to the following documents:</p>
-<ul>
-  <li><a href="{@docRoot}sdk/api_diff/3/changes.html">Android 1.5 API Differences</a></li>
-  <li><a href="{@docRoot}sdk/android-1.5.html#api-changes">Android 1.5 Version Notes</a></li> 
-  <li><a 
-href="http://android-developers.blogspot.com/2009/04/ui-framework-changes-in-android-15.html">UI 
-framework changes in Android 1.5 &raquo;</a></li>
-</ul>
-
-<p>If you have additional trouble updating your code, visit the 
-<a href="http://groups.google.com/group/android-developers">Android Developers Group</a>
-to seek help from other Android developers.</p>
diff --git a/docs/html/sdk/1.5_r2/upgrading.jd b/docs/html/sdk/1.5_r2/upgrading.jd
deleted file mode 100644
index 31b2358..0000000
--- a/docs/html/sdk/1.5_r2/upgrading.jd
+++ /dev/null
@@ -1,396 +0,0 @@
-page.title=Upgrading the SDK
-sdk.version=1.5_r2
-excludeFromSuggestions=true
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-  <h2>Upgrading the SDK</h2>
-  <ul>
-    <li>The Android 1.5 SDK uses a new project structure and a new ADT plugin (ADT 0.9). </li>
-    <li>To move existing projects into the SDK, you must make some minor changes in your 
-    development environment.</li>
-    <li>The new ADT plugin (ADT 0.9) <em>is not compatible</em> with projects created in previous SDKs.</li>
-    <li>You need to uninstall your existing ADT plugin, before installing ADT 0.9.</li>
-  </ul>
-
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#Install">Install the SDK</a></li>
-    <li><a href="#UpdateAdt">Update Your Eclipse ADT Plugin</a></li>
-    <li><a href="#UpdateYourProjects">Update Your Projects</a>
-      <ol>
-        <li><a href="#EclipseUsers">Eclipse Users</a></li>
-        <li><a href="#AntUsers">Ant Users</a></li>
-      </ol>
-    </li>
-    <li><a href="#MigrateYourApplications">Migrate Your Applications</a>
-      <ol><li><a href="#FutureProofYourApps">Future-proof your apps</a></li></ol>
-    </li>
-  </ol>
-  
-  <h2>Migrating references</h2>
-  <ol>
-    <li><a href="{@docRoot}sdk/api_diff/3/changes.html">Android 1.5 API Differences</a></li>
-    <li><a 
-href="http://android-developers.blogspot.com/2009/04/future-proofing-your-apps.html">Future-Proofing
-Your Apps &raquo;</a></li>
-    <li><a 
-href="http://android-developers.blogspot.com/2009/04/ui-framework-changes-in-android-15.html">UI 
-framework changes in Android 1.5 &raquo;</a></li>
-  </ol>
-
-</div>
-</div>
-
-<p>This document describes how to move your development environment and existing
-Android applications from an Android 1.0 or 1.1 SDK to the Android 1.5 SDK.
-If you are migrating applications from an SDK older than 1.0, please also read the upgrading
-document available in the Android 1.0 SDK package.</p>
-
-<p>There are several compelling reasons to upgrade, such as new SDK tools
-that make developing more efficient and new APIs that allow you to expand the feature-set
-of your applications. However, even if you or your applications don't require these enhancements,
-it's important that you upgrade to ensure that your applications run properly on the 
-Android 1.5 platform.</p>
-
-<p>The Android 1.5 platform will soon be deployable to devices around the world.
-If you have already released Android applications to the public, you should
-test the forward-compatibility of your applications on the latest version of the platform
-as soon as possible. It's unlikely that you'll encounter breakage in your applications, but
-in the interest of maintaining the best user experience, you should take no risks.
-So, please install the new Android SDK and test your applications on Android 1.5.</p>
-
-<p>For more information on new SDK features and system changes, 
-see the <a href="{@docRoot}sdk/android-1.5.html">Android 1.5 Version Notes</a>.</p>
-
-
-<h2 id="Install">Install the SDK</h2>
-
-<p>If you haven't yet downloaded the SDK, <a href="{@docRoot}sdk/1.5_r2/index.html">download from here</a> 
-and unpack it into a safe location.</p>
-
-<p><strong>Before you begin:</strong>
-If you had previously setup your PATH variable to point to the SDK tools directory, 
-then you need to update it to point to the new SDK. For example, for a 
-<code>.bashrc</code> or <code>.bash_profile</code> file:</p>
-<pre>export PATH=$PATH:<em>&lt;your_sdk_dir></em>/tools</pre>
-
-<p>If you don't use Eclipse for development,
-skip to <a href="#updateYourProjects">Update Your Projects</a>.</p>
-
-
-<h2 id="UpdateAdt">Update Your Eclipse ADT Plugin</h2>
-
-<p><em>If you installed ADT-0.9_pre with the early look 1.5 SDK, there have been
-additional changes, so please continue with this guide and update to the final ADT 0.9.</em></p>
-
-<p>A new ADT plugin (version 0.9) is required for the Android 1.5 SDK.
-Because the component structure has been changed since Android 1.1, 
-the Android 1.5 SDK does not work with ADT 0.8 (or older) and previously installed SDKs will not
-work with ADT 0.9. However, the Android 1.5 SDK includes an Android 1.1 SDK image that you
-can build against while using ADT 0.9. </p>
-
-<p class="note">For information about using different system images (such as Android 1.1) 
-while running this SDK, see Developing <a href="{@docRoot}guide/developing/eclipse-adt.html">
-In Eclipse, with ADT</a> or <a href="{@docRoot}guide/developing/other-ide.html">In 
-Other IDEs</a>, as appropriate for your development environment.</p>
-
-<p>In order to upgrade your Eclipse IDE to use the new 0.9 ADT, follow the steps below
-for your respective version of Eclipse.</p>
-
-<h3 id="uninstallAdt">Uninstall your previous ADT plugin</h3>
-
-<p>You must uninstall your existing ADT plugin (0.8 or older). If you do not uninstall it,
-you will get a conflict with the Android Editors when installing the new ADT.
-(If you have already installed ADT-0.9_pre with the early look 1.5 SDK, you can skip this
-uninstall procedure and continue to <a href="#installAdt">Install the 0.9 ADT plugin</a>).</p>
-
-<table style="font-size:100%">
-<tr><th>Eclipse 3.3 (Europa)</th><th>Eclipse 3.4 (Ganymede)</th></tr>
-<tr>
-<td width="50%">
-<!-- 3.3 steps -->
-<ol>
-    <li>Select <strong>Help</strong> &gt; <strong>Software Updates</strong> &gt; 
-      <strong>Manage Configuration</strong>. </li>
-    <li>Expand the list in the left panel to reveal the installed tools.</li>
-    <li>Right-click "Android Editors" and click <strong>Uninstall</strong>. Click <strong>OK</strong> 
-    to confirm.</li>
-    <li>Restart Eclipse. 
-      <p>(Do not uninstall "Android Development Tools".)</p></li>
-</ol>
-</td>
-<td>
-<!-- 3.4 steps -->
-<ol>
-    <li>Select <strong>Help</strong> &gt; <strong>Software Updates</strong>.</li>
-    <li>Select the <strong>Installed Software</strong> tab.</li>
-    <li>Select "Android Editors". Click <strong>Uninstall</strong>.</li>
-    <li>In the next window, be sure "Android Editors" is checked, then click <strong>Finish</strong>
-    to uninstall.</li>
-    <li>Restart Eclipse.
-      <p>(Do not uninstall "Android Development Tools".)</p></li>
-</ol>
-</td>
-</tr>
-</table>
-
-
-<h3 id="installAdt">Install the 0.9 ADT plugin</h3>
-
-<p>Only install the new plugin once you've completed the procedure to
-<a href="#uninstallAdt">Uninstall your previous ADT plugin</a>.</p>
-
-<table style="font-size:100%">
-<tr><th>Eclipse 3.3 (Europa)</th><th>Eclipse 3.4 (Ganymede)</th></tr>
-<tr>
-<td width="50%">
-<!-- 3.3 steps -->
-<ol>
-    <li>Select <strong>Help</strong> &gt; <strong>Software Updates</strong> &gt; 
-      <strong>Find and Install</strong>. </li>
-    <li>Select <strong>Search for new features to install</strong>.</li>
-    <li>Select the Android plugin entry by checking the box next to it, 
-      then click <strong>Finish</strong>.
-      <p>(Your original entry for the plugin should still be here. If not, see the guide
-      to <a href="{@docRoot}sdk/1.5_r2/installing.html#installingplugin">Installing the ADT Plugin</a>.)
-      </p></li>
-    <li>In the results, expand the entry for the Android plugin and
-      be sure that "Developer Tools" is checked, then click <strong>Next</strong>.
-      (This will install "Android DDMS" and "Android Development Tools".)</li>
-    <li>Read and accept the license agreement, then click <strong>Next</strong>.
-    <li>In the next window, click <strong>Finish</strong> to start installation.</li>
-    <li>The ADT plugin is not digitally signed. Accept the installation anyway by clicking 
-    <strong>Install All</strong>.</li>
-    <li>Restart Eclipse.</li>
-</ol>
-</td>
-<td>
-<!-- 3.4 steps -->
-<ol>
-    <li>Select <strong>Help</strong> &gt; <strong>Software Updates</strong>.</li>
-    <li>Select the <strong>Available Software</strong> tab.</li>
-    <li>Expand the entry for the Andriod plugin (may be listed as the location URL)
-      and select "Developer Tools" by checking the box next to it, then click 
-      <strong>Install</strong>.</li>
-    <li>On the next window, "Android DDMS" and "Android Development Tools" 
-    should both be checked. Click <strong>Finish</strong>.</li>
-    <li>Restart Eclipse.</li>
-</ol>
-</td>
-</tr>
-</table>
-
-<p>If you encounter problems, ensure your ADT is fully uninstalled and then
-follow the guide to 
-<a href="{@docRoot}sdk/1.5_r2/installing.html#installingplugin">Installing the ADT Plugin
-for Eclipse</a>.</p>
-
-<h3 id="updateEclipsePrefs">Update your Eclipse SDK Preferences</h3>
-
-<p>The last step is to update your Eclipse preferences to point to the new SDK directory:</p>
-    <ol>
-      <li>Select <strong>Window</strong> > <strong>Preferences</strong> to open the Preferences 
-      panel (Mac: <strong>Eclipse</strong> > <strong>Preferences</strong>).</li>
-      <li>Select <strong>Android</strong> from the left panel.</li>
-      <li>For the <em>SDK Location</em> in the main panel, click <strong>Browse</strong> 
-      and locate your SDK directory.</li>
-      <li>Click <strong>Apply</strong>, then <strong>OK</strong>.</li>
-    </ol>
-
-
-<h2 id="UpdateYourProjects">Update Your Projects</h2>
-
-<p>You will now need to update any and all Android projects that you have
-developed using a previous version of the Android SDK.</p>
-
-
-<h3 id="EclipseUsers">Eclipse users</h3>
-
-<p>If you use Eclipse to develop applications, use the following procedure to 
-update each project:</p>
-
-<ol>
-  <li>Right-click on the individual project (in the Package Explorer)
-   and select <strong>Properties</strong>.</li>
-  <li>In the properties, open the Android panel and select a "build target" to compile 
-    against. This SDK offers the Android 1.1 and Android 1.5 platforms to choose from. When 
-    you are initially updating your projects to the new SDK, we recommend that you select a build 
-    target with the Android 1.1 platform. Click <strong>Apply</strong>, then 
-    <strong>OK</strong>.</li>
-</ol>
-
-<p>The new plugin creates a <code>gen/</code> folder in your project, in which it puts the 
-<code>R.java</code> file
-and all automatically generated AIDL java files. If you get an error such as 
-<code>The type R is already defined</code>, 
-then you probably need to delete your old <code>R.java</code> or your old auto-generated
-AIDL Java files in the <code>src/</code> folder.
-(This <em>does not</em> apply to your own hand-crafted parcelable AIDL java files.)</p>
-
-<p>Note that, with the Android 1.5 SDK, there is a new process for running 
-applications in the Android Emulator. 
-Specifically, you must create an Android Virtual Device (AVD) before you can launch an instance
-of the Emulator. Before attempting to run your applications with the new SDK, 
-please continue with the section below to 
-<a href="#MigrateYourApplications">Migrate Your Applications</a>.</p>
-
-
-<h3 id="AntUsers">Ant users</h3>
-
-<p>If you build your projects using the Ant tool (rather than with Eclipse), note the 
-following changes with the new SDK tools.</p>
-
-<h4>build.xml has changed</h4>
-
-<p>You must re-create your <code>build.xml</code> file.</p>
-
-<p>If you had customized your <code>build.xml</code>, first make a copy of it:</p>
-
-<pre>
-$ cd <em>my-project</em>
-$ cp build.xml build.xml.old
-</pre>
-
-<p>Now use the new <code>android</code> tool (located in <code><em>your_sdk</em>/tools/</code>) 
-to create a new <code>build.xml</code> that references 
-a specific platform target:</p>
-
-<pre>$ android update project --path /path/to/my-project --target 1</pre>
-
-<p>The "target" corresponds to an Android platform library (including any add-ons, such as 
-Google APIs) that you would like to build your project against. You can view a list of available 
-targets (and their corresponding integer ID) with the command, <code>android list targets</code>. 
-When you are initially updating your projects to the new SDK, we recommend that you select the 
-first target ("1"), which uses the Android 1.1 platform library.</p>
-
-<p>A <code>gen/</code> folder will be created the first time you build and your <code>R.java</code> and
-your AIDL Java files will be generated in here. You <strong>must</strong> remove
-the old <code>R.java</code> and old auto-generated AIDL java files from the 
-<code>src/</code> folder. (This
-does not apply to your own hand-crafted parcelabe AIDL java files.)</p>
-
-<p class="note"><strong>Note:</strong> The "activitycreator" tool has been replaced 
-by the new "android" tool. For information on creating new projects with the android tool,
-see the documentation about <a href="{@docRoot}guide/developing/other-ide.html">Developing 
-In Other IDEs</a>.</p>
-
-<p>Note that, with the Android 1.5 SDK, there is a new process for running 
-applications in the Android Emulator. 
-Specifically, you must create an Android Virtual Device (AVD) before you can launch an instance
-of the Emulator. Before attempting to run your applications with the new SDK, 
-please continue with the section below to 
-<a href="#MigrateYourApplications">Migrate Your Applications</a>.</p>
-
-
-<h2 id="MigrateYourApplications">Migrate Your Applications</h2>
-
-<p>After you have completed the process above to <a href="#UpdateYourProjects">Update Your 
-Projects</a>, you are strongly encouraged to run each of your applications in an instance
-of the emulator running the Android 1.5 system image. It's possible (however, unlikely) 
-that you'll encounter some breakage in your application when you run your applications on
-the Android 1.5 system image. Whether you believe your application will be affected by 
-platform changes or not, it's very important that you test the application's 
-forward-compatibility on Android 1.5.</p>
-
-<p>To test forward-compatibility, simply run your existing application (as-is) on an Android
-Emulator that's running the Android 1.5 system image. The following procedure will guide
-you through the process to running your existing applications on an emulator. <em>Please read
-the following guide completely before you begin</em>.</p>
-
-<p>To test your application on an emulator running Android 1.5:</p>
-<ol>
-  <li><a href="#UpdateYourProjects">Update Your Project</a> (you should have done this 
-  already, in the section above).</li>
-  <li>Run your existing project, as-is, on an emulator running the Android 1.5 system image.
-    <p>As mentioned in the guide to <a href="#UpdateYourProjects">Update Your Projects</a>, 
-    you should have selected a "build
-    target" of "1", which compiles your application against the Android 1.1 system image, so there
-    should be no new errors in your code.</p>
-    <p>Eclipse users: follow the 
-    <a href="{@docRoot}guide/developing/eclipse-adt.html#Running">Eclipse guide to 
-    Running Your Application</a>.</p>
-    <p>Ant users: follow the 
-    <a href="{@docRoot}guide/developing/other-ide.html#Running">Ant guide to 
-    Running Your Application</a>
-    <p>During the procedure to Running Your Application, select a "deployment target" 
-    for the AVD that includes the Android 1.5 platform. 
-    If your application utilizes the Google Maps APIs (i.e.,
-    MapView), be certain to select a target that includes the Google APIs.</p>
-    <p>Once you complete the procedures to run your application in your respective environment,
-    linked above, return here.</p>
-  </li>
-  <li>With your application running in the emulator, perform all regular testing on the application
-  to ensure that it functions normally (in both landscape and portrait orientations).</li>
-</ol>
-
-<p>Chances are, your application runs just fine on the Android 1.5 platform &mdash; 
-new devices will be able to safely install and run your application and
-current users who update their devices will be able to continue using your application as usual.
-However, if something doesn't work the way you expect, then you might need to revisit
-your project and make any necessary changes to your code.</p>
-
-<p>You can check for code breakages caused by API changes by opening your project 
-in Eclipse, changing the "build target" to one using the Android 1.5 platform,
-and see where the ADT identifies errors in your code.</p>
-
-
-<h3 id="FutureProofYourApps">Future-proof your apps</h3>
-
-<p>There have been several API additions made for this release, but there have been
-very few actual API <em>changes</em>. Only a couple (relatively unused) elements 
-have been removed and a few have been deprecated, so your applications written with the 
-Android 1.1 system library should work just fine. However, 
-your application is more likely to encounter problems on Android 1.5
-if it performs any of the following:</p>
-
-<ul>
-  <li>Uses internal APIs. That is, APIs that are not officially supported
-  and not available in the reference documentation. Any un-official APIs are always subject
-  to change (which is why they're un-official) and some have indeed changed.
-  </li>
-  <li>Directly manipulates system settings. There are some settings (such as
-  GPS, data roaming, bluetooth and others) that used to be writable by 
-  applications but have been changed so that they can only be explicitly modified by the user
-  through the system settings. Refer to {@link android.provider.Settings.Secure}
-  to see which settings are now secured and cannot be directly changed by your application.
-  </li>
-  <li>Uses View hierarchies that are unreasonably deep (more than 10 or so levels) or 
-  broad (more than 30 total). View hierarchies this big have always been troublesome, but 
-  Android 1.5 is much more efficient at exposing this and your application may crash.
-  </li>
-  <li>Makes assumptions about the available hardware. With new support for soft keyboards,
-  not all devices will have full QWERTY keyboards on the hardware. So if your application
-  listens for special keypress events that only occur on a keypad, then your application
-  should degrade gracefully when there is no keyboard available.
-  </li>
-  <li>Performs its own layout orientation changes based on the acceletometer (or via other
-  sensors). Some devices running Android 1.5 will automatically rotate the orientation
-  (and all devices have the option to turn on auto-rotation), so if your application also
-  attempts to rotate the orientation, it can result in strange behavior. In addition, if your
-  application uses the accelerometer to detect shaking and you do not want to rotate the 
-  orientation, then you should lock the current orientation with 
-  <a href="{@docRoot}guide/topics/manifest/activity-element.html#screen">android:screenOrientation</a>.
-  </li>
-</ul>
-
-<p>Please read our blog post on <a 
-href="http://android-developers.blogspot.com/2009/04/future-proofing-your-apps.html">Future-Proofing
-Your Apps</a> for more information on the issues mentioned above.</p>
-
-<p>For information
-about other changes made to Android 1.5, refer to the following documents:</p>
-<ul>
-  <li><a href="{@docRoot}sdk/api_diff/3/changes.html">Android 1.5 API Differences</a></li>
-  <li><a href="{@docRoot}sdk/android-1.5.html#api-changes">Android 1.5 Version Notes</a></li> 
-  <li><a 
-href="http://android-developers.blogspot.com/2009/04/ui-framework-changes-in-android-15.html">UI 
-framework changes in Android 1.5 &raquo;</a></li>
-</ul>
-
-<p>If you have additional trouble updating your code, visit the 
-<a href="http://groups.google.com/group/android-developers">Android Developers Group</a>
-to seek help from other Android developers.</p>
diff --git a/docs/html/sdk/1.5_r3/upgrading.jd b/docs/html/sdk/1.5_r3/upgrading.jd
deleted file mode 100644
index 62b9a78..0000000
--- a/docs/html/sdk/1.5_r3/upgrading.jd
+++ /dev/null
@@ -1,398 +0,0 @@
-page.title=Upgrading the SDK
-sdk.version=1.5
-sdk.rel.id=3
-excludeFromSuggestions=true
-
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-  <h2>Upgrading the SDK</h2>
-  <ul>
-    <li>The Android 1.5 SDK uses a new project structure and a new ADT plugin (ADT 0.9). </li>
-    <li>To move existing projects into the SDK, you must make some minor changes in your 
-    development environment.</li>
-    <li>The new ADT plugin (ADT 0.9) <em>is not compatible</em> with projects created in previous SDKs.</li>
-    <li>You need to uninstall your existing ADT plugin, before installing ADT 0.9.</li>
-  </ul>
-
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#Install">Install the SDK</a></li>
-    <li><a href="#UpdateAdt">Update Your Eclipse ADT Plugin</a></li>
-    <li><a href="#UpdateYourProjects">Update Your Projects</a>
-      <ol>
-        <li><a href="#EclipseUsers">Eclipse Users</a></li>
-        <li><a href="#AntUsers">Ant Users</a></li>
-      </ol>
-    </li>
-    <li><a href="#MigrateYourApplications">Migrate Your Applications</a>
-      <ol><li><a href="#FutureProofYourApps">Future-proof your apps</a></li></ol>
-    </li>
-  </ol>
-  
-  <h2>Migrating references</h2>
-  <ol>
-    <li><a href="{@docRoot}sdk/api_diff/3/changes.html">Android 1.5 API Differences</a></li>
-    <li><a 
-href="http://android-developers.blogspot.com/2009/04/future-proofing-your-apps.html">Future-Proofing
-Your Apps &raquo;</a></li>
-    <li><a 
-href="http://android-developers.blogspot.com/2009/04/ui-framework-changes-in-android-15.html">UI 
-framework changes in Android 1.5 &raquo;</a></li>
-  </ol>
-
-</div>
-</div>
-
-<p>This document describes how to move your development environment and existing
-Android applications from an Android 1.0 or 1.1 SDK to the Android 1.5 SDK.
-If you are migrating applications from an SDK older than 1.0, please also read the upgrading
-document available in the Android 1.0 SDK package.</p>
-
-<p>There are several compelling reasons to upgrade, such as new SDK tools
-that make developing more efficient and new APIs that allow you to expand the feature-set
-of your applications. However, even if you or your applications don't require these enhancements,
-it's important that you upgrade to ensure that your applications run properly on the 
-Android 1.5 platform.</p>
-
-<p>The Android 1.5 platform will soon be deployable to devices around the world.
-If you have already released Android applications to the public, you should
-test the forward-compatibility of your applications on the latest version of the platform
-as soon as possible. It's unlikely that you'll encounter breakage in your applications, but
-in the interest of maintaining the best user experience, you should take no risks.
-So, please install the new Android SDK and test your applications on Android 1.5.</p>
-
-<p>For more information on new SDK features and system changes, 
-see the <a href="{@docRoot}sdk/android-1.5.html">Android 1.5 Version Notes</a>.</p>
-
-
-<h2 id="Install">Install the SDK</h2>
-
-<p>If you haven't yet downloaded the SDK, <a href="index.html">download from here</a> 
-and unpack it into a safe location.</p>
-
-<p><strong>Before you begin:</strong>
-If you had previously setup your PATH variable to point to the SDK tools directory, 
-then you need to update it to point to the new SDK. For example, for a 
-<code>.bashrc</code> or <code>.bash_profile</code> file:</p>
-<pre>export PATH=$PATH:<em>&lt;your_sdk_dir></em>/tools</pre>
-
-<p>If you don't use Eclipse for development,
-skip to <a href="#updateYourProjects">Update Your Projects</a>.</p>
-
-
-<h2 id="UpdateAdt">Update Your Eclipse ADT Plugin</h2>
-
-<p><em>If you installed ADT-0.9_pre with the early look 1.5 SDK, there have been
-additional changes, so please continue with this guide and update to the final ADT 0.9.</em></p>
-
-<p>A new ADT plugin (version 0.9) is required for the Android 1.5 SDK.
-Because the component structure has been changed since Android 1.1, 
-the Android 1.5 SDK does not work with ADT 0.8 (or older) and previously installed SDKs will not
-work with ADT 0.9. However, the Android 1.5 SDK includes an Android 1.1 SDK image that you
-can build against while using ADT 0.9. </p>
-
-<p class="note">For information about using different system images (such as Android 1.1) 
-while running this SDK, see Developing <a href="{@docRoot}guide/developing/eclipse-adt.html">
-In Eclipse, with ADT</a> or <a href="{@docRoot}guide/developing/other-ide.html">In 
-Other IDEs</a>, as appropriate for your development environment.</p>
-
-<p>In order to upgrade your Eclipse IDE to use the new 0.9 ADT, follow the steps below
-for your respective version of Eclipse.</p>
-
-<h3 id="uninstallAdt">Uninstall your previous ADT plugin</h3>
-
-<p>You must uninstall your existing ADT plugin (0.8 or older). If you do not uninstall it,
-you will get a conflict with the Android Editors when installing the new ADT.
-(If you have already installed ADT-0.9_pre with the early look 1.5 SDK, you can skip this
-uninstall procedure and continue to <a href="#installAdt">Install the 0.9 ADT plugin</a>).</p>
-
-<table style="font-size:100%">
-<tr><th>Eclipse 3.3 (Europa)</th><th>Eclipse 3.4 (Ganymede)</th></tr>
-<tr>
-<td width="50%">
-<!-- 3.3 steps -->
-<ol>
-    <li>Select <strong>Help</strong> &gt; <strong>Software Updates</strong> &gt; 
-      <strong>Manage Configuration</strong>. </li>
-    <li>Expand the list in the left panel to reveal the installed tools.</li>
-    <li>Right-click "Android Editors" and click <strong>Uninstall</strong>. Click <strong>OK</strong> 
-    to confirm.</li>
-    <li>Restart Eclipse. 
-      <p>(Do not uninstall "Android Development Tools".)</p></li>
-</ol>
-</td>
-<td>
-<!-- 3.4 steps -->
-<ol>
-    <li>Select <strong>Help</strong> &gt; <strong>Software Updates</strong>.</li>
-    <li>Select the <strong>Installed Software</strong> tab.</li>
-    <li>Select "Android Editors". Click <strong>Uninstall</strong>.</li>
-    <li>In the next window, be sure "Android Editors" is checked, then click <strong>Finish</strong>
-    to uninstall.</li>
-    <li>Restart Eclipse.
-      <p>(Do not uninstall "Android Development Tools".)</p></li>
-</ol>
-</td>
-</tr>
-</table>
-
-
-<h3 id="installAdt">Install the 0.9 ADT plugin</h3>
-
-<p>Only install the new plugin once you've completed the procedure to
-<a href="#uninstallAdt">Uninstall your previous ADT plugin</a>.</p>
-
-<table style="font-size:100%">
-<tr><th>Eclipse 3.3 (Europa)</th><th>Eclipse 3.4 (Ganymede)</th></tr>
-<tr>
-<td width="50%">
-<!-- 3.3 steps -->
-<ol>
-    <li>Select <strong>Help</strong> &gt; <strong>Software Updates</strong> &gt; 
-      <strong>Find and Install</strong>. </li>
-    <li>Select <strong>Search for new features to install</strong>.</li>
-    <li>Select the Android plugin entry by checking the box next to it, 
-      then click <strong>Finish</strong>.
-      <p>(Your original entry for the plugin should still be here. If not, see the guide
-      to <a href="installing.html#installingplugin">Installing the ADT Plugin</a>.)
-      </p></li>
-    <li>In the results, expand the entry for the Android plugin and
-      be sure that "Developer Tools" is checked, then click <strong>Next</strong>.
-      (This will install "Android DDMS" and "Android Development Tools".)</li>
-    <li>Read and accept the license agreement, then click <strong>Next</strong>.
-    <li>In the next window, click <strong>Finish</strong> to start installation.</li>
-    <li>The ADT plugin is not digitally signed. Accept the installation anyway by clicking 
-    <strong>Install All</strong>.</li>
-    <li>Restart Eclipse.</li>
-</ol>
-</td>
-<td>
-<!-- 3.4 steps -->
-<ol>
-    <li>Select <strong>Help</strong> &gt; <strong>Software Updates</strong>.</li>
-    <li>Select the <strong>Available Software</strong> tab.</li>
-    <li>Expand the entry for the Android plugin (may be listed as the location URL)
-      and select "Developer Tools" by checking the box next to it, then click 
-      <strong>Install</strong>.</li>
-    <li>On the next window, "Android DDMS" and "Android Development Tools" 
-    should both be checked. Click <strong>Finish</strong>.</li>
-    <li>Restart Eclipse.</li>
-</ol>
-</td>
-</tr>
-</table>
-
-<p>If you encounter problems, ensure your ADT is fully uninstalled and then
-follow the guide to 
-<a href="installing.html#installingplugin">Installing the ADT Plugin
-for Eclipse</a>.</p>
-
-<h3 id="updateEclipsePrefs">Update your Eclipse SDK Preferences</h3>
-
-<p>The last step is to update your Eclipse preferences to point to the new SDK directory:</p>
-    <ol>
-      <li>Select <strong>Window</strong> > <strong>Preferences</strong> to open the Preferences 
-      panel (Mac: <strong>Eclipse</strong> > <strong>Preferences</strong>).</li>
-      <li>Select <strong>Android</strong> from the left panel.</li>
-      <li>For the <em>SDK Location</em> in the main panel, click <strong>Browse</strong> 
-      and locate your SDK directory.</li>
-      <li>Click <strong>Apply</strong>, then <strong>OK</strong>.</li>
-    </ol>
-
-
-<h2 id="UpdateYourProjects">Update Your Projects</h2>
-
-<p>You will now need to update any and all Android projects that you have
-developed using a previous version of the Android SDK.</p>
-
-
-<h3 id="EclipseUsers">Eclipse users</h3>
-
-<p>If you use Eclipse to develop applications, use the following procedure to 
-update each project:</p>
-
-<ol>
-  <li>Right-click on the individual project (in the Package Explorer)
-   and select <strong>Properties</strong>.</li>
-  <li>In the properties, open the Android panel and select a "build target" to compile 
-    against. This SDK offers the Android 1.1 and Android 1.5 platforms to choose from. When 
-    you are initially updating your projects to the new SDK, we recommend that you select a build 
-    target with the Android 1.1 platform. Click <strong>Apply</strong>, then 
-    <strong>OK</strong>.</li>
-</ol>
-
-<p>The new plugin creates a <code>gen/</code> folder in your project, in which it puts the 
-<code>R.java</code> file
-and all automatically generated AIDL java files. If you get an error such as 
-<code>The type R is already defined</code>, 
-then you probably need to delete your old <code>R.java</code> or your old auto-generated
-AIDL Java files in the <code>src/</code> folder.
-(This <em>does not</em> apply to your own hand-crafted parcelable AIDL java files.)</p>
-
-<p>Note that, with the Android 1.5 SDK, there is a new process for running 
-applications in the Android Emulator. 
-Specifically, you must create an Android Virtual Device (AVD) before you can launch an instance
-of the Emulator. Before attempting to run your applications with the new SDK, 
-please continue with the section below to 
-<a href="#MigrateYourApplications">Migrate Your Applications</a>.</p>
-
-
-<h3 id="AntUsers">Ant users</h3>
-
-<p>If you build your projects using the Ant tool (rather than with Eclipse), note the 
-following changes with the new SDK tools.</p>
-
-<h4>build.xml has changed</h4>
-
-<p>You must re-create your <code>build.xml</code> file.</p>
-
-<p>If you had customized your <code>build.xml</code>, first make a copy of it:</p>
-
-<pre>
-$ cd <em>my-project</em>
-$ cp build.xml build.xml.old
-</pre>
-
-<p>Now use the new <code>android</code> tool (located in <code><em>your_sdk</em>/tools/</code>) 
-to create a new <code>build.xml</code> that references 
-a specific platform target:</p>
-
-<pre>$ android update project --path /path/to/my-project --target 1</pre>
-
-<p>The "target" corresponds to an Android platform library (including any add-ons, such as 
-Google APIs) that you would like to build your project against. You can view a list of available 
-targets (and their corresponding integer ID) with the command, <code>android list targets</code>. 
-When you are initially updating your projects to the new SDK, we recommend that you select the 
-first target ("1"), which uses the Android 1.1 platform library.</p>
-
-<p>A <code>gen/</code> folder will be created the first time you build and your <code>R.java</code> and
-your AIDL Java files will be generated in here. You <strong>must</strong> remove
-the old <code>R.java</code> and old auto-generated AIDL java files from the 
-<code>src/</code> folder. (This
-does not apply to your own hand-crafted parcelable AIDL java files.)</p>
-
-<p class="note"><strong>Note:</strong> The "activitycreator" tool has been replaced 
-by the new "android" tool. For information on creating new projects with the android tool,
-see the documentation about <a href="{@docRoot}guide/developing/other-ide.html">Developing 
-In Other IDEs</a>.</p>
-
-<p>Note that, with the Android 1.5 SDK, there is a new process for running 
-applications in the Android Emulator. 
-Specifically, you must create an Android Virtual Device (AVD) before you can launch an instance
-of the Emulator. Before attempting to run your applications with the new SDK, 
-please continue with the section below to 
-<a href="#MigrateYourApplications">Migrate Your Applications</a>.</p>
-
-
-<h2 id="MigrateYourApplications">Migrate Your Applications</h2>
-
-<p>After you have completed the process above to <a href="#UpdateYourProjects">Update Your 
-Projects</a>, you are strongly encouraged to run each of your applications in an instance
-of the emulator running the Android 1.5 system image. It's possible (however, unlikely) 
-that you'll encounter some breakage in your application when you run your applications on
-the Android 1.5 system image. Whether you believe your application will be affected by 
-platform changes or not, it's very important that you test the application's 
-forward-compatibility on Android 1.5.</p>
-
-<p>To test forward-compatibility, simply run your existing application (as-is) on an Android
-Emulator that's running the Android 1.5 system image. The following procedure will guide
-you through the process to running your existing applications on an emulator. <em>Please read
-the following guide completely before you begin</em>.</p>
-
-<p>To test your application on an emulator running Android 1.5:</p>
-<ol>
-  <li><a href="#UpdateYourProjects">Update Your Project</a> (you should have done this 
-  already, in the section above).</li>
-  <li>Run your existing project, as-is, on an emulator running the Android 1.5 system image.
-    <p>As mentioned in the guide to <a href="#UpdateYourProjects">Update Your Projects</a>, 
-    you should have selected a "build
-    target" of "1", which compiles your application against the Android 1.1 system image, so there
-    should be no new errors in your code.</p>
-    <p>Eclipse users: follow the 
-    <a href="{@docRoot}guide/developing/eclipse-adt.html#Running">Eclipse guide to 
-    Running Your Application</a>.</p>
-    <p>Ant users: follow the 
-    <a href="{@docRoot}guide/developing/other-ide.html#Running">Ant guide to 
-    Running Your Application</a>
-    <p>During the procedure to Running Your Application, select a "deployment target" 
-    for the AVD that includes the Android 1.5 platform. 
-    If your application utilizes the Google Maps APIs (i.e.,
-    MapView), be certain to select a target that includes the Google APIs.</p>
-    <p>Once you complete the procedures to run your application in your respective environment,
-    linked above, return here.</p>
-  </li>
-  <li>With your application running in the emulator, perform all regular testing on the application
-  to ensure that it functions normally (in both landscape and portrait orientations).</li>
-</ol>
-
-<p>Chances are, your application runs just fine on the Android 1.5 platform &mdash; 
-new devices will be able to safely install and run your application and
-current users who update their devices will be able to continue using your application as usual.
-However, if something doesn't work the way you expect, then you might need to revisit
-your project and make any necessary changes to your code.</p>
-
-<p>You can check for code breakages caused by API changes by opening your project 
-in Eclipse, changing the "build target" to one using the Android 1.5 platform,
-and see where the ADT identifies errors in your code.</p>
-
-
-<h3 id="FutureProofYourApps">Future-proof your apps</h3>
-
-<p>There have been several API additions made for this release, but there have been
-very few actual API <em>changes</em>. Only a couple (relatively unused) elements 
-have been removed and a few have been deprecated, so your applications written with the 
-Android 1.1 system library should work just fine. However, 
-your application is more likely to encounter problems on Android 1.5
-if it performs any of the following:</p>
-
-<ul>
-  <li>Uses internal APIs. That is, APIs that are not officially supported
-  and not available in the reference documentation. Any un-official APIs are always subject
-  to change (which is why they're un-official) and some have indeed changed.
-  </li>
-  <li>Directly manipulates system settings. There are some settings (such as
-  GPS, data roaming, bluetooth and others) that used to be writable by 
-  applications but have been changed so that they can only be explicitly modified by the user
-  through the system settings. Refer to {@link android.provider.Settings.Secure}
-  to see which settings are now secured and cannot be directly changed by your application.
-  </li>
-  <li>Uses View hierarchies that are unreasonably deep (more than 10 or so levels) or 
-  broad (more than 30 total). View hierarchies this big have always been troublesome, but 
-  Android 1.5 is much more efficient at exposing this and your application may crash.
-  </li>
-  <li>Makes assumptions about the available hardware. With new support for soft keyboards,
-  not all devices will have full QWERTY keyboards on the hardware. So if your application
-  listens for special keypress events that only occur on a keypad, then your application
-  should degrade gracefully when there is no keyboard available.
-  </li>
-  <li>Performs its own layout orientation changes based on the accelerometer (or via other
-  sensors). Some devices running Android 1.5 will automatically rotate the orientation
-  (and all devices have the option to turn on auto-rotation), so if your application also
-  attempts to rotate the orientation, it can result in strange behavior. In addition, if your
-  application uses the accelerometer to detect shaking and you do not want to rotate the 
-  orientation, then you should lock the current orientation with 
-  <a href="{@docRoot}guide/topics/manifest/activity-element.html#screen">android:screenOrientation</a>.
-  </li>
-</ul>
-
-<p>Please read our blog post on <a 
-href="http://android-developers.blogspot.com/2009/04/future-proofing-your-apps.html">Future-Proofing
-Your Apps</a> for more information on the issues mentioned above.</p>
-
-<p>For information
-about other changes made to Android 1.5, refer to the following documents:</p>
-<ul>
-  <li><a href="{@docRoot}sdk/api_diff/3/changes.html">Android 1.5 API Differences</a></li>
-  <li><a href="{@docRoot}sdk/android-1.5.html#api-changes">Android 1.5 Version Notes</a></li> 
-  <li><a 
-href="http://android-developers.blogspot.com/2009/04/ui-framework-changes-in-android-15.html">UI 
-framework changes in Android 1.5 &raquo;</a></li>
-</ul>
-
-<p>If you have additional trouble updating your code, visit the 
-<a href="http://groups.google.com/group/android-developers">Android Developers Group</a>
-to seek help from other Android developers.</p>
diff --git a/docs/html/sdk/1.6_r1/upgrading.jd b/docs/html/sdk/1.6_r1/upgrading.jd
deleted file mode 100644
index e6dded0..0000000
--- a/docs/html/sdk/1.6_r1/upgrading.jd
+++ /dev/null
@@ -1,386 +0,0 @@
-page.title=Upgrading the SDK
-sdk.version=1.6
-excludeFromSuggestions=true
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-  <h2>Upgrading the SDK</h2>
-  <ul>
-    <li>If you are developing on the Android 1.5 SDK, migrating your
-applications is straightforward and typically requires no modifications.</li>
-    <li>For Eclipse users, a new version of ADT is available. To use the Android
-1.6 SDK, please upgrade to ADT 0.9.3 (or later).</li>
-    <li>For Windows users, the SDK includes a new USB driver that you can
-install, if you are developing on a device. </li>
-    <li>A new Android SDK and AVD Manager tool is available. To access 
-it, run the <code>android</code> tool without options. </li>
-  </ul>
-
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#Install">Install the SDK</a></li>
-    <li><a href="#UpdateAdt">Update Your Eclipse ADT Plugin</a></li>
-    <li><a href="#RunYourApps">Run Your Applications</a></li>
-    <li><a href="#MigrateYourApps">Migrate Your Applications</a></li>
-  </ol>
-  
-  <h2>Migrating information</h2>
-  <ol>
-    <li><a href="{@docRoot}sdk/api_diff/4/changes.html">Android 1.6 API 
-Differences</a></li>
-  </ol>
-
-</div>
-</div>
-
-<p>This document describes how to move your development environment and existing
-Android applications from an Android 1.5 SDK to the Android 1.6 SDK. If you are
-migrating applications from an SDK older than 1.5, please also read the
-upgrading document available in the Android 1.5 SDK package.</p>
-
-<p>There are several compelling reasons to upgrade, such as new SDK tools that
-make developing more efficient and new APIs that allow you to expand the
-feature-set of your applications. However, even if you or your applications
-don't require these enhancements, it's important that you upgrade to ensure that
-your applications run properly on the upcoming Android platform.</p>
-
-<p>The Android 1.6 platform will soon be deployable to devices around the world.
-If you have already released Android applications to the public, you should test
-the forward-compatibility of your applications on the latest version of the
-platform as soon as possible. It's unlikely that you'll encounter problems in
-your applications, but in the interest of maintaining the best user experience,
-you should take no risks. So, please install the new Android SDK and test your
-applications on the new platform.</p>
-
-<!-- NOT AVAILABLE FOR PREVIEW RELEASES -->
-<p>For more information on new SDK features and system changes, 
-see the <a href="{@docRoot}sdk/android-1.6.html">Android 1.6 Version Notes</a>.</p>
-<!-- -->
-
-<h2 id="Install">Install the SDK</h2>
-
-<p>If you haven't yet downloaded the SDK, <a href="index.html">download it from 
-here</a> and unpack it into a safe location.</p>
-
-<p>If you had previously setup your <code>PATH</code> variable to point to the SDK 
-tools directory, then you need to update it to point to the new SDK. For example, for
-a <code>.bashrc</code> or <code>.bash_profile</code> file:</p>
-<pre>export PATH=$PATH:<em>&lt;your_sdk_dir></em>/tools</pre>
-
-
-<h2 id="UpdateAdt">Update Your Eclipse ADT Plugin</h2>
-
-<p>If you don't use the Eclipse IDE for development,
-skip to <a href="#RunYourApps">Run Your Applications</a>.</p>
-
-<p>A new version of the ADT Plugin, ADT 0.9.3, is available in conjunction with
-this SDK release. To use the SDK, you must upgrade your ADT Plugin to version
-0.9.3. With ADT 0.9.3, you can still compile your existing applications against 
-multiple platform versions, such as Android 1.5, Android 1.1, and so on. However, 
-ADT 0.9.3 is not compatible with previous versions of the SDK and its tools, so 
-make sure that you upgrade both your SDK <em>and</em> the ADT Plugin.</p>
-
-The upgrade steps for ADT are described below. For information about new features in ADT, see the <a
-href="{@docRoot}sdk/RELEASENOTES.html">Release Notes</a> document. </p>
-
-<p>If you're currently using a version of ADT <em>older</em> than version 0.9,
-then you must uninstall ADT before you proceed (read how to <a
-href="{@docRoot}sdk/1.5_r3/upgrading.html#uninstallAdt">Uninstall your previous
-ADT plugin</a>). If you currently have version 0.9 or 0.9.1, then you don't need
-to uninstall and can continue with the procedure below.</p>
-
-<table style="font-size:100%">
-<tr><th>Eclipse 3.4 (Ganymede)</th><th>Eclipse 3.5 (Galileo)</th></tr>
-<tr>
-<td width="50%">
-<!-- 3.4 steps -->
-<ol>
-    <li>Select <strong>Help</strong> &gt; <strong>Software Updates</strong>.</li>
-    <li>Select the <strong>Available Software</strong> tab.</li>
-    <li>Select the checkboxes next to Android DDMS and Android Developer Tools, 
-      then click  <strong>Update</strong>.</li>
-    <li>In the resulting Available Updates dialog, ensure that both Android DDMS 
-      and Android Development Tools are selected, then click 
-      <strong>Next</strong>.</li>
-    <li>Read and accept the license agreement and then click <strong>Finish</strong>.
-      This will download and install the latest version of Android DDMS and 
-      Android Development Tools.</li>
-    <li>Restart Eclipse.</li>
-</ol>
-</td>
-<td>
-<!-- 3.5 steps -->
-<ol>
-    <li>Select <strong>Help</strong> &gt; <strong>Check for Updates</strong>. </li>
-    <li>In the resulting Available Updates dialog, locate the Android DDMS and 
-        Android Development Tools features in the list and ensure that the checkboxes
-        next to them are selected. Click <strong>Next</strong>. 
-        <p>If the Available Updates dialog does not list Android DDMS and Android 
-           Development tools, make sure that you have set up a remote update site 
-           for them, as described in 
-           <a href="installing.html#InstallingADT">Installing the ADT Plugin</a>. 
-        </p></li>
-    <li>In the Update Details dialog, click <strong>Next</strong>.</li>
-    <li>Read and accept the license agreement and then click <strong>Finish</strong>.
-      This will download and install the latest version of Android DDMS and 
-      Android Development Tools.</li>
-    <li>Restart Eclipse.</li>
-</ol>
-</td>
-</tr>
-</table>
-
-<p>If you encounter problems with this update procedure, try performing a fresh
-installation. Fully remove your existing ADT Plugin as described in <a
-href="{@docRoot}sdk/1.5_r3/upgrading.html#uninstallAdt">Uninstall your previous
-ADT plugin</a> and then follow the guide to <a
-href="installing.html#InstallingADT">Installing the ADT Plugin for
-Eclipse</a>.</p>
-
-<h3 id="updateEclipsePrefs">Update your Eclipse SDK Preferences</h3>
-
-<p>The last step is to update your Eclipse preferences to point to the new 
-SDK directory:</p>
-<ol>
-  <li>Select <strong>Window</strong> > <strong>Preferences</strong> to open 
-      the Preferences panel (Mac: <strong>Eclipse</strong> > <strong>Preferences
-      </strong>).</li>
-  <li>Select <strong>Android</strong> from the left panel.</li>
-  <li>For the SDK Location, click <strong>Browse</strong> 
-  and locate your SDK directory.</li>
-  <li>Click <strong>Apply</strong>, then <strong>OK</strong>.</li>
-</ol>
-
-
-<h2 id="RunYourApps">Run Your Applications to Test Forward Compatibility</h2>
-
-<p>Now that you have installed the Android 1.6 SDK, we encourage you run each of
-your existing applications on the Android 1.6 system image that is included in
-the SDK, to ensure that it functions properly on the new platform.
-Testing forward-compatibility in this way is especially important for
-applications that you may have already published and that may be installed on
-devices that will upgrade to the new platform. </p>
-
-<p>In most cases, your applications will function properly when run on the new
-version of the platform. However, it is possible that you will encounter
-unexpected behavior, because of changes in the API or underlying platform. If
-you do find problems, you can use the SDK tools to compile and publish an update
-to the applications, which users can then download. 
-
-<p>To test forward-compatibility, simply run your application, as-is, on an
-instance of the Android Emulator that uses an AVD targeted to the "Android 1.6"
-system image. Here are the steps: </p>
-
-<ol>
-  <li>Make no changes to your application code.</li>
-  <li>Create a new AVD that runs the new "Android 1.6" platform. </li>
-  <li>Launch your application in an emulator running the new AVD.</li>
-  <li>Perform normal testing on your application to ensure everything works as 
-      expected.</li>
-</ol>
-
-<p>Note that, for the purposes of forward-compatibility testing, you should not
-change how your application is compiled. That is, you should continue to compile
-the application against the same version of the Android library as before. The
-only change needed is to the AVD, which controls the version of the Android
-system image (run-time environment) on which the application is run. 
-
-<p>For more information on creating an AVD and launching your application, see
-<a href="{@docRoot}guide/developing/eclipse-adt.html#Running">Running Your
-Applications (Eclipse)</a> or <a
-href="{@docRoot}guide/developing/other-ide.html#Running">Running
-Your Applications (other IDEs)</a>, depending on your development
-environment.</p>
-
-<h3 id="FutureProofYourApps">Android 1.6 Forward-Compatibility Tips</h3>
-
-<p>The new version of the Android platform includes several new APIs, but
-very few actual changes to existing APIs. This means that, in most
-cases, your applications written with earlier versions of the Android library
-should run properly on the Android 1.6 platform. </p>
-
-<p>However, here are some areas to pay attention to as you test forward-compatibility:</p>
-
-<ul>
-  <li><strong>Make sure your application doesn't use internal APIs</strong>. Your
-application should not use any APIs that are not officially supported and are
-not published in the Android reference documentation. Unofficial APIs can change
-at any time without notice and &mdash; if your application happens to be using
-them &mdash; such a change could cause the application to break.</li>
-
- <li><strong>Watch for assumptions about available hardware</strong>. Remember
-that not all compatible devices offer the same hardware capabilities &mdash;
-screens, keyboards, and physical keys, and so on. As you test your application,
-watch for areas where your application depends on the presence of specific
-hardware capabilities. If you find dependencies, you can design around them by
-building in alternate support or graceful degradation, or you can specify them 
-as hardware requirements in a 
-<a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html"><code>&lt;uses-configuration&gt;</code>.</a>
-element in the application's manifest file. Also see the <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><code>&lt;uses-feature&gt;</code></a>
-manifest element, which lets your application declare a requirement for 
-specific features, such as an OpenGL ES version or a camera that has 
-autofocus capability.
-</li>
-
- <li><strong>Watch for assumptions about available features</strong>. Not all 
-compatible devices offer equal support for embedded features. same hardware capabilities &mdash;
-screens, keyboards, and physical keys, and so on. As you test your application,
-watch for areas where your application depends on the presence of specific
-hardware capabilities. If you find dependencies, you can design around them by
-building in alternate support or graceful degradation, or you can specify them 
-as hardware requirements in a 
-<a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html"><code>&lt;uses-configuration&gt;</code>.</a>
-element in the application's manifest file. </li>
-
-  <p>When testing forward-compatibility, try running your application in various
-AVDs that emulate different hardware configurations. For example, you can create
-an AVD that does not offer a physical keyboard or one that uses a dpad instead
-of a trackball. Running your application in different emulated hardware
-configurations will give you an idea of where its dependencies are and help you
-identify problems. </p>
- </li>
-
-  <li><strong>Watch for assumptions about screen resolution and
-density</strong>. A device's screen resolution and density is likely to affect
-the way that your application's UI is rendered, especially if your app specifies
-dimensions or positions using pixels or absolute layouts. To ensure consistent
-UI across screens, your app should specify the dimensions and positions of
-layouts and drawables in relative units that can be scaled by the system as
-appropriate, according to the density of the device's screen. Alternatively, you
-can create custom sets of layout/drawable resources for specific screens, which
-the system can then load as appropriate, based on the current device screen.</p>
-
-  <p>When testing forward-compatibility, try running your application in various
-AVDs that emulate different screen resolutions and densities. Also note that,
-starting with Android 1.6, the platform provides a Compatibility Mode that
-automatically scales the UI of applications if they do not explicitly indicate
-support for the current screen in the 
-<a href="{@docRoot}guide/topics/manifest/supports-screen-element.html"><code>&lt;supports-screen&gt;</code></a>
-element in their manifest files. As part of testing, you should evaluate how
-your application is displayed in Compatibility Mode on different screens. </p>
-  </li>
-
-  <li><strong>Avoid performing layout orientation changes based on the
-acceletometer (or via other sensors)</strong>. Some Android-powered devices will
-automatically rotate the orientation (and all devices have the option to turn on
-auto-rotation), so if your application also attempts to rotate the orientation,
-it can result in strange behavior. In addition, if your application uses the
-accelerometer to detect shaking and you do not want to rotate the orientation,
-then you should lock the current orientation with <a
-href="{@docRoot}guide/topics/manifest/activity-element.html#screen">android:screenOrientation</a>.
- </li>
-
-</ul>
-
-<h2 id="MigrateYourApps">Migrate Your Applications</h2>
-
-<p>If you want to use any of the new Android 1.6 APIs in your existing
-applications, you must first migrate the applications to the new Android
-platform version. Generally, migrating an application includes: </p>
-
-<ul>
-<li>Referencing the proper API Level in the application's manifest file, 
-and</li>
-<li>Resetting its project properties so that it is compiled against the Android 
-1.6 build target.</li>
-</ul>
-
-<p>Additionally, to run your application in the emulator, you need to
-create an AVD that uses the Android 1.6 system image. </p>
-
-<p class="note"><strong>Note:</strong> You only need migrate your application as
-described in this section if the application will actually use APIs
-<em>introduced</em> in the Android 1.6 platform (which are not available on
-devices running older versions of the Android platform). If your application
-does not use any new APIs, you can compile and run it without modification and
-not migration is necessary.</p>
-
-<h3>Reference the Proper API Level</h3>
-
-<p>If your application is using APIs introduced in Android 1.6, you must
-reference that dependency in the application's manifest file so that it can be
-deployed to devices running the Android 1.6 platform. </p>
-
-<p>Open the manifest file and locate the <code>minSdkVersion</code> attribute 
-in the <code>&lt;uses-sdk&gt;</code> manifest element. Set the value of 
-<code>minSdkVersion</code> to <code>"4"</code> (the API Level
-identifier corresponding to Android 1.6). Here's an example:</p>
-
-<pre>
-&lt;manifest>
-  ...
-  &lt;uses-sdk android:minSdkVersion="4" />
-  ...
-&lt;/manifest>
-</pre>
-
-<h3>Compile Against the Proper Build Target</h3>
-
-<p>Once you've changed the <code>minSdkVersion</code> value in your
-application's manifest, you need to set the application's project properties so
-that the application will be compiled against the Android 1.6 library. To do so,
-follow the steps below for your respective development environment.  </p>
-
-<h4 id="EclipseUsers">Eclipse Users</h4>
-
-<ol>
-  <li>Right-click on the individual project (in the Package Explorer)
-  and select <strong>Properties</strong>.</li>
-  <li>In the properties, open the Android panel and select a new Project Build Target.
-  Select "Android 1.6" to target the new platform (or "Google APIs" with the "4" 
-  API Level, if your application uses the Google Maps APIs).</li>
-  <li>Click <strong>Apply</strong>, then <strong>OK</strong>.</li>
-</ol>
-	
-<h4 id="AntUsers">Ant Users</h4>
-	
-<p>Use the <code>android</code> tool (located in
-<code><em>your_sdk</em>/tools/</code>) to create a new <code>build.xml</code>
-that references the new platform target. To see a list of available targets,
-execute:</p>
-
-<pre>android list targets</pre>
-
-<p>Select the target <code>id</code> that corresponds to the "Android 1.6" platform
-and pass it with the <code>--target</code> parameter when updating your project.
-For example:</p>
-
-<pre>android update project --path /path/to/my-project --target 2</pre>
-
-<p>If your application uses the Google Maps APIs (i.e., MapView), be certain to 
-select a Google APIs target.</p>
-
-<h3>Create an AVD that Uses the Android 1.6 Platform</h3>
-
-<p>Finally, you need to set up a new AVD that uses the Android 1.6 platform, so that 
-you can run your application in the emulator. 
-
-<p>To set up the new AVD, use the <code>android</code> tool, available in the
-<code>tools/</code> directory of the SDK. You can run the AVD manager by simply
-changing to the <code>tools/</code> directory and entering <code>android</code>
-at the command line. Click "New" to create the AVD and set its properties.</p>
-
-<p>When creating the AVD, make sure to select a target of "Android 1.6 - API
-Level 4". If your application uses the Google Maps APIs (MapView), select the
-target "Google APIs (Google Inc.) - API Level 4". </p>
-
-<p>For more information about running your application in an AVD, see <a
-href="{@docRoot}guide/developing/eclipse-adt.html#Running">Running Your
-Application (Eclipse)</a> or <a
-href="{@docRoot}guide/developing/other-ide.html#Running">Running Your
-Application (other IDEs)</a>. </p>
-
-<p>For general information about AVDs, see the <a href="{@docRoot}guide/developing/tools/avd.html">Android Virtual
-Devices</a> document. </p>
-
-
-
-<div class="special">
-<p>If you have trouble migrating to the new version of the SDK, visit the 
-<a href="http://groups.google.com/group/android-developers">Android Developers Group</a>
-to seek help from other Android developers.</p>
-</div>
-
diff --git a/docs/html/sdk/RELEASENOTES.jd b/docs/html/sdk/RELEASENOTES.jd
index cbcbb12..d69697a 100644
--- a/docs/html/sdk/RELEASENOTES.jd
+++ b/docs/html/sdk/RELEASENOTES.jd
@@ -731,11 +731,11 @@
 
 <h3>ADT Plugin Compatibility</h3>
 
-<p>For this version of the SDK &mdash; Android 1.0 SDK, Release 1 &mdash; the compatible version of the Android Development Tools (ADT) Plugin for Eclipse is <strong>0.8.0</strong>. If you are using a previous version of ADT, you should update to the latest version for use with this SDK. For information about how to update your ADT plugin, see <a href="{@docRoot}sdk/1.0_r1/upgrading.html">Upgrading the SDK</a>.</p>
+<p>For this version of the SDK &mdash; Android 1.0 SDK, Release 1 &mdash; the compatible version of the Android Development Tools (ADT) Plugin for Eclipse is <strong>0.8.0</strong>. If you are using a previous version of ADT, you should update to the latest version for use with this SDK.</p>
 
 <h3>Installation and Upgrade Notes</h3>
 
-<p>If you've been developing an application using a previous SDK version and you want the application to run on Android-powered mobile devices, you must port the application to the Android 1.0 SDK. Please see <a href="{@docRoot}sdk/1.0_r1/upgrading.html">Upgrading the SDK</a> for detailed instructions on how to make the transition to this release.  Be sure to wipe application user data (emulator option <code>-wipe-data</code>) when running your application on the Android 1.0 SDK emulator.</p>
+<p>If you've been developing an application using a previous SDK version and you want the application to run on Android-powered mobile devices, you must port the application to the Android 1.0 SDK. Be sure to wipe application user data (emulator option <code>-wipe-data</code>) when running your application on the Android 1.0 SDK emulator.</p>
 
 <h3>Other Notes</h3>
 
diff --git a/docs/html/sdk/exploring.jd b/docs/html/sdk/exploring.jd
index e8d8e37..9323f2e 100644
--- a/docs/html/sdk/exploring.jd
+++ b/docs/html/sdk/exploring.jd
@@ -1,4 +1,5 @@
 page.title=Exploring the SDK
+excludeFromSuggestions=true
 walkthru=1
 
 @jd:body
diff --git a/docs/html/sdk/index.jd b/docs/html/sdk/index.jd
index 2ffc886..aa3b2ec 100644
--- a/docs/html/sdk/index.jd
+++ b/docs/html/sdk/index.jd
@@ -5,43 +5,43 @@
 page.metaDescription=Download the official Android SDK to develop apps for Android-powered devices.
 
 
-sdk.linux32_bundle_download=adt-bundle-linux-x86-20130514.zip
-sdk.linux32_bundle_bytes=433992720
-sdk.linux32_bundle_checksum=38b29a0721423e59c55c62c0356b1c18
+sdk.linux32_bundle_download=adt-bundle-linux-x86-20130717.zip
+sdk.linux32_bundle_bytes=440035305
+sdk.linux32_bundle_checksum=ecfacb91df1ee63cce1edd4f1a5cda5a
 
-sdk.linux64_bundle_download=adt-bundle-linux-x86_64-20130514.zip
-sdk.linux64_bundle_bytes=434278511
-sdk.linux64_bundle_checksum=f5f7387d209a67fe1638acab7e0037a4
+sdk.linux64_bundle_download=adt-bundle-linux-x86_64-20130717.zip
+sdk.linux64_bundle_bytes=440322117
+sdk.linux64_bundle_checksum=ab177a06784340b8f1d136651e3dc62a
 
-sdk.mac64_bundle_download=adt-bundle-mac-x86_64-20130514.zip
-sdk.mac64_bundle_bytes=403067311
-sdk.mac64_bundle_checksum=5391a1f0284c1fb87048010fbc2808ab
+sdk.mac64_bundle_download=adt-bundle-mac-x86_64-20130717.zip
+sdk.mac64_bundle_bytes=411609229
+sdk.mac64_bundle_checksum=07c891212a49b5f8495ea9d8d47ba3fe
 
-sdk.win32_bundle_download=adt-bundle-windows-x86-20130514.zip
-sdk.win32_bundle_bytes=440739521
-sdk.win32_bundle_checksum=51fb90bc049f66730d7b8da5671a4b93
+sdk.win32_bundle_download=adt-bundle-windows-x86-20130717.zip
+sdk.win32_bundle_bytes=446783216
+sdk.win32_bundle_checksum=0dd91095999d3539ca1ec4033d83d935
 
-sdk.win64_bundle_download=adt-bundle-windows-x86_64-20130514.zip
-sdk.win64_bundle_bytes=440868113
-sdk.win64_bundle_checksum=0eb9a91cc0c170a1f1bc9b47d0f4ec81
+sdk.win64_bundle_download=adt-bundle-windows-x86_64-20130717.zip
+sdk.win64_bundle_bytes=446911629
+sdk.win64_bundle_checksum=61ec74995b39166db7f079017a028cec
 
 
 
-sdk.linux_download=android-sdk_r22-linux.tgz
-sdk.linux_bytes=99643077
-sdk.linux_checksum=30fb75bad918c5c3d79f8ec3cc44b3cf
+sdk.linux_download=android-sdk_r22.0.4-linux.tgz
+sdk.linux_bytes=105640988
+sdk.linux_checksum=4a5db98a58c68c24e66f04f07ac77da5
 
-sdk.mac_download=android-sdk_r22-macosx.zip
-sdk.mac_bytes=71244523
-sdk.mac_checksum=fa5193ad41edecac6960023f55569ba3
+sdk.mac_download=android-sdk_r22.0.4-macosx.zip
+sdk.mac_bytes=77225662
+sdk.mac_checksum=384752505f4f2ba3627bd6aad0697f11
 
-sdk.win_download=android-sdk_r22-windows.zip
-sdk.win_bytes=107505668
-sdk.win_checksum=71722fe052ae6380444a21bce8ee87c2
+sdk.win_download=android-sdk_r22.0.4-windows.zip
+sdk.win_bytes=113507679
+sdk.win_checksum=320b11d1ed85fd3f5e937697c333d895
 
-sdk.win_installer=installer_r22-windows.exe
-sdk.win_installer_bytes=87498295
-sdk.win_installer_checksum=e0cc167733bf8b51dbc7e0ad0a8c8d4b
+sdk.win_installer=installer_r22.0.4-windows.exe
+sdk.win_installer_bytes=93502726
+sdk.win_installer_checksum=96a8ae367d84ed219e1eb2cf473667d0
 
 
 
@@ -75,7 +75,7 @@
 <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.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.
 
diff --git a/docs/html/sdk/installing/installing-adt.jd b/docs/html/sdk/installing/installing-adt.jd
index 8d47f4e..2a09636 100644
--- a/docs/html/sdk/installing/installing-adt.jd
+++ b/docs/html/sdk/installing/installing-adt.jd
@@ -1,8 +1,8 @@
 page.title=Installing the Eclipse Plugin
-adt.zip.version=22.0.0
-adt.zip.download=ADT-22.0.0.zip
-adt.zip.bytes=16797235
-adt.zip.checksum=cabd8a19390d6268be7065ca69b89e88
+adt.zip.version=22.0.4
+adt.zip.download=ADT-22.0.4.zip
+adt.zip.bytes=16838756
+adt.zip.checksum=f0291f4bb9d78ec34a7751cd2402cc2a
 
 @jd:body
 
@@ -16,7 +16,7 @@
 </p>
 
 <p>If you need to install Eclipse, you can download it from <a href=
-"http://eclipse.org/mobile/">eclipse.org/mobile</a>.</p>
+"http://www.eclipse.org/downloads/">eclipse.org/downloads/</a>.</p>
 
 
 <p class="note"><strong>Note:</strong> If you prefer to work in a different IDE, you do not need to
@@ -106,13 +106,13 @@
     <li>In Eclipse, select <strong>Help</strong> &gt; <strong>Install New
 Software</strong>.</li>
     <li>Click <strong>Add</strong>, in the top-right corner.</li>
-    <li>In the Add Repository dialog that appears, enter "Translation Manager Plugin" for the <em>Name</em> and the
-following URL for the <em>Location</em>:
+    <li>In the Add Repository dialog that appears, enter a repository name for the <em>Name</em>
+      and the following URL for the <em>Location</em>:
       <pre>https://dl.google.com/alt/</pre>
     </li>
     <li>Click <strong>OK</strong>.
-    <li>In the Available Software dialog, select the checkbox next to Translation Manager Plugin and click
-<strong>Next</strong>.</li>
+    <li>In the Available Software dialog, select the checkbox next to <strong>Android Developer Tools
+       - Translation Manager</strong> and click <strong>Next</strong>.</li>
     <li>In the next window, you'll see a list of the tools to be downloaded. Click
 <strong>Next</strong>. </li>
     <li>Read and accept the license agreements, then click <strong>Finish</strong>.
diff --git a/docs/html/sdk/installing/migrate.jd b/docs/html/sdk/installing/migrate.jd
index ea5a648..db1b5dd 100644
--- a/docs/html/sdk/installing/migrate.jd
+++ b/docs/html/sdk/installing/migrate.jd
@@ -2,6 +2,17 @@
 
 @jd:body
 
+<div id="qv-wrapper">
+<div id="qv">
+<h2>See also</h2>
+<ul>
+ <li><a href="http://confluence.jetbrains.com/display/IntelliJIDEA/Working+in+Eclipse+Compatibility+Mode" class="external-link"
+ >Eclipse Compatibility Mode</a></li>
+ <li><a href="http://confluence.jetbrains.com/display/IntelliJIDEA/FAQ+on+Migrating+to+IntelliJ+IDEA" class="external-link"
+ >FAQ on Migrating</a></li>
+</ul>
+</div>
+</div>
 
 <p>If you've previously developed for Android using Eclipse and would like to migrate
 to Android Studio, you should export your projects from Eclipse in order to generate
@@ -15,26 +26,27 @@
 <li>In Eclipse, select <strong>File > Export</strong>.</li>
 <li>In the window that appears, open <strong>Android</strong> and select <strong>Generate Gradle
 build files</strong>.</li>
-<li>Select the projects you want to export for Android Studio and click
+<li>Select the project you want to export for Android Studio and click
 <strong>Finish</strong>.</li>
 </ol>
 
-<p>Your selected projects remain in the same location but now contain a {@code .gradle}
-build file and are ready for Android Studio.</p>
+<p>Your selected project remains in the same location but now contains a {@code build.gradle}
+file and is ready for Android Studio.</p>
 
 
 <h2 id="Export">Import into Android Studio</h2>
 <ol>
-  <li>In Android Studio, select <strong>File > Import Project</strong>.</li>
-  <li>Locate a project you exported from Eclipse, select the project's root directory and
-    click <strong>OK</strong>.</li>
-  <li>Select <strong>Create project from existing sources</strong> and click
-    <strong>Next</strong>.</li>
-  <li>Follow the walk-through to complete the import process.</li>
+  <li>In Android Studio, close any projects currently open. You should see the
+  <strong>Welcome to Android Studio</strong> window.</li>
+  <li>Click <strong>Import Project</strong>.</li>
+  <li>Locate the project you exported from Eclipse, expand it, select the
+  <strong>build.gradle</strong> file and click <strong>OK</strong>.</li>
+  <li>In the following dialog, leave <strong>Use gradle wrapper</strong> selected and click
+  <strong>OK</strong>. (You do not need to specify the Gradle home.)</li>
 </ol>
 
 
-<p>Now that your projects are imported to Android Studio, 
+<p>Now that your project is imported to Android Studio, 
 read <a href="{@docRoot}sdk/installing/studio-tips.html">Tips and Tricks</a> for some
 help getting started.</p>
 
diff --git a/docs/html/sdk/installing/studio-tips.jd b/docs/html/sdk/installing/studio-tips.jd
index 259087b..12d2527 100644
--- a/docs/html/sdk/installing/studio-tips.jd
+++ b/docs/html/sdk/installing/studio-tips.jd
@@ -2,6 +2,19 @@
 
 @jd:body
 
+<div id="qv-wrapper">
+<div id="qv">
+<h2>See also</h2>
+<ul>
+ <li><a href="http://confluence.jetbrains.com/display/IntelliJIDEA/Working+in+Eclipse+Compatibility+Mode" class="external-link"
+ >Eclipse Compatibility Mode</a></li>
+ <li><a href="http://confluence.jetbrains.com/display/IntelliJIDEA/FAQ+on+Migrating+to+IntelliJ+IDEA" class="external-link"
+ >FAQ on Migrating</a></li>
+ <li><a href="http://android-developers.blogspot.com/2013/06/adding-backend-to-your-app-in-android.html"
+ class="external-link">Adding a Backend to Your App In Android Studio</a></li>
+</ul>
+</div>
+</div>
 
 <p>If you're unfamiliar with the IntelliJ IDEA interface, you might be wondering
 how to accomplish some common tasks in Android Studio. This page provides some tips
diff --git a/docs/html/sdk/installing/studio.jd b/docs/html/sdk/installing/studio.jd
index 856121a..9a29599 100644
--- a/docs/html/sdk/installing/studio.jd
+++ b/docs/html/sdk/installing/studio.jd
@@ -1,4 +1,5 @@
 page.title=Getting Started with Android Studio
+page.tags="studio"
 @jd:body
 
 
@@ -21,7 +22,7 @@
 <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.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.
 
@@ -230,16 +231,12 @@
 <a href="{@docRoot}sdk/index.html">ADT Bundle</a> (Eclipse with the ADT Plugin).</p>
 
 
-
-
 <h4 style="clear:right;text-align:right;margin-right:50px"><a href='' class="expandable"
   onclick="toggleExpandable(this,'.pax');return false;"
   >DOWNLOAD FOR OTHER PLATFORMS</a></h4>
 
-
 <div class="pax col-13 online" style="display:none;margin:0;">
 
-<p class="table-caption">&nbsp;<strong>Android Studio v0.1</strong></p>
   <table class="download">
     <tr>
       <th>Platform</th>
@@ -252,36 +249,36 @@
     <td>Windows</td>
     <td>
   <a onclick="return onDownload(this)" id="win-studio"
-      href="http://dl.google.com/android/studio/android-studio-bundle-130.676883-windows.exe">
-      android-studio-bundle-130.676883-windows.exe
+      href="http://dl.google.com/android/studio/android-studio-bundle-130.737825-windows.exe">
+      android-studio-bundle-130.737825-windows.exe
       </a>
     </td>
-    <td>381763627 bytes</td>
-    <td>592129b7aee608ad706752369d99a2a1</td>
+    <td>396091268 bytes</td>
+    <td>6da1bc8effa048c8ff669e4c484eb11f</td>
   </tr>
 
   <tr>
     <td><nobr>Mac OS X</nobr></td>
     <td>
   <a onclick="return onDownload(this)" id="mac-studio"
-    href="http://dl.google.com/android/studio/android-studio-bundle-130.676883-mac.dmg">
-    android-studio-bundle-130.676883-mac.dmg
+    href="http://dl.google.com/android/studio/android-studio-bundle-130.737825-mac.dmg">
+    android-studio-bundle-130.737825-mac.dmg
     </a>
     </td>
-    <td>371232906 bytes</td>
-    <td>16192870d1a1e99e2d96d5fa9fc3fccb</td>
+    <td>383326582 bytes</td>
+    <td>2959bc5039238d286670cc6225342b89</td>
   </tr>
 
   <tr>
     <td>Linux</td>
     <td>
   <a onclick="return onDownload(this)" id="linux-studio"
-    href="http://dl.google.com/android/studio/android-studio-bundle-130.676883-linux.tgz">
-    android-studio-bundle-130.676883-linux.tgz
+    href="http://dl.google.com/android/studio/android-studio-bundle-130.737825-linux.tgz">
+    android-studio-bundle-130.737825-linux.tgz
     </a>
     </td>
-    <td>400151208 bytes</td>
-    <td>2b25f4ee51a2e076b0ede6da94508761</td>
+    <td>409935592 bytes</td>
+    <td>dcd13922f7cf577e3c852b224205d843</td>
   </tr>
   </table>
 
@@ -289,9 +286,29 @@
 
 
 
+<h2 id="Updating">Updating to 0.2.x</h2>
+
+<p>To update from Android Studio 0.1.x to 0.2.x,
+follow the <a href="#Installing">installation instructions</a> below and replace your existing
+installation.</p>
+
+<div class="caution">
+<p><strong>Caution:</strong> Replacing your existing installation of
+Android Studio will remove any additional SDK packages you've installed, such as target
+platforms, system images, and sample apps. To preserve these, copy them from your current
+SDK directory under Android Studio to a temporary location
+before installing the update. Then move them back once the update is complete.
+If you fail to copy these packages, then you can instead download them again through
+the Android SDK Manager.</p>
+<p><strong>Windows users:</strong> Do not install Android Studio 0.2.x in the same
+location as 0.1.x. Doing so may cause errors such as ClassCastException or other unexpected
+behaviors. It's best if you remove your previous version of Android Studio 0.1.x.</p>
+</div>
 
 
-
+<p>Also note that due to the update to Gradle 0.5, you will encounter errors when opening
+existing projects. See the <a href="#Troubleshooting">Troubleshooting</a> notes below for
+information about how to resolve them.</p>
 
 
 <h2 id="Installing">Installing Android Studio</h2>
@@ -300,13 +317,35 @@
 <li>Install Android Studio and the SDK tools:
   <p><b>Windows:</b></p>
   <ol>
-    <li>Launch the downloaded EXE file, {@code android-studio-bundle-&lt;version&gt;.exe}.
+    <li>Launch the downloaded EXE file, {@code android-studio-bundle-&lt;version&gt;.exe}.</li>
     <li>Follow the setup wizard to install Android Studio.
+
+    <div class="caution"><p><strong>Known issue:</strong>
+      On some Windows systems, the launcher script does not find where Java is installed.
+      If you encounter this problem,
+      you need to set an environment variable indicating the correct location.</p>
+      <p>Select <strong>Start menu > Computer > System Properties >
+      Advanced System Properties</strong>. Then open <strong>Advanced tab > Environment
+      Variables</strong> and add a new system variable <code>JAVA_HOME</code> that points to
+      your JDK folder, for example <code>C:\Program Files\Java\jdk1.7.0_21</code>.</p>
+    </div>
+    </li>
+
   </ol>
   <p><b>Mac OS X:</b></p>
   <ol>
-    <li>Open the downloaded DMG file, {@code android-studio-bundle-&lt;version&gt;.dmg}.
+    <li>Open the downloaded DMG file, {@code android-studio-bundle-&lt;version&gt;.dmg}.</li>
     <li>Drag and drop Android Studio into the Applications folder.
+
+    <div class="caution"><p><strong>Known issue:</strong>
+      Depending on your security settings, when you attempt to open Android Studio, you might
+      see a warning that says the package is damaged and should be moved to the trash. If this
+      happens, go to <strong>System Preferences > Security &amp; Privacy</strong> and under
+      <strong>Allow applications downloaded from</strong>, select <strong>Anywhere</strong>.
+      Then open Android Studio again.</p>
+    </div>
+    </li>
+
   </ol>
   <p><b>Linux:</b></p>
   <ol>
@@ -332,6 +371,9 @@
 <p>Mac: <code>/Applications/Android\ Studio.app/sdk/</code></p>
 </div>
 
+<p>For a list of some known issues, see <a
+href="http://tools.android.com/knownissues">tools.android.com/knownissues</a>.</p>
+
 
 <h2 id="Start">Starting a Project</h2>
 
@@ -371,10 +413,164 @@
 
 
 
+<h2 id="Revisions">Revisions</h2>
+
+<p class="note"><strong>Note:</strong> <strong>There is not a patch update available from
+0.1.9 to 0.2</strong>. To update from Android Studio 0.1.x to 0.2.x, you must
+install a new Android Studio bundle from this page.  The reason for that is that we have made
+changes to the bundled SDK such that it includes a pre-configured local Maven repository
+which can serve up the v4 support library and which is required for creating new projects.</p>
+
+
+<div class="toggle-content opened">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
+      alt=""/>Android Studio v0.2.x</a> <em>(July 2013)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+  <ul>
+    <li>Merged in the latest IntelliJ codebase changes. Includes fixes for issues reported by Studio users such as tweaks to Linux font sizes and font rendering.</li>
+    <li>Android Gradle plug-in updated to 0.5.0.
+      <p class="caution"><strong>Caution:</strong> This new version is not backwards compatible.
+      When opening a project that uses an older version of the plug-in, Studio will show an error
+      stating <strong>Gradle &lt;project_name&gt; project refresh failed.</strong> See <a
+      href="#Troubleshooting">Troubleshooting</a> below for details.</p>
+      <p>The updated Gradle plug-in includes the following changes:</p>
+      <ul>
+        <li>Fixed IDE model to contain the output file even if it's customized through the DSL. Also
+        fixed the DSL to get/set the output file on the variant object so that it's not necessary to
+        use <code>variant.packageApplication or variant.zipAlign</code></li>
+        <li>Fixed dependency resolution so that we resolved the combination of (default config,
+        build types, flavor(s)) together instead of separately.</li>
+        <li>Fixed dependency for tests of library project to properly include all the dependencies
+        of the library itself.</li>
+        <li>Fixed case where two dependencies have the same leaf name.</li>
+        <li>Fixed issue where Proguard rules file cannot be applied on flavors.</li>
+      </ul>
+      <p>All Gradle plugin release notes are available are here: <a href=
+      "http://tools.android.com/tech-docs/new-build-system"
+      >http://tools.android.com/tech-docs/new-build-system</a>.</p>
+    </li>
+    <li>Gradle errors from aapt no longer point to merged output files in the build/ folder, they
+    point back to the real source locations.</li>
+    <li>Parallel Builds. It's now possible to use Gradle's parallel builds. Please be aware that
+    parallel builds are in "incubation" (see <a
+    href="http://www.gradle.org/docs/current/userguide/gradle_command_line.html">Gradle's
+    documentation</a>.) This feature is off by default. To enable it, go to
+    <strong>Preferences</strong> &gt; <strong>Compiler</strong> and check the box <em>Compile
+    independent modules in parallel</em>.</li>
+    <li>Further work on the new resource repository used for layout rendering, resource
+    folding in the editor, and more:
+      <ul>
+      <li>Basic support for .aar library dependencies (e.g. using a library without a local copy of
+      the sources). Still not working for resource XML validation and navigation in source editors.
+      </li>
+      <li>Cycle detection in resource references.</li>
+      <li>Quick Documentation (F1), which can show all translations of the string under the caret,
+      will now also show all resource overlays from the various Gradle flavors and build types, as
+      well as libraries. They are listed in reverse resource overlay order, with strikethrough on
+      the versions of the string that are masked.</li>
+      <li>Fixes to handle updating the merged resources when the set of module dependencies
+      change.</li>
+      <li>XML rendering fixes to properly handle character entity declarations and XML and unicode
+      escapes.</li>
+      </ul>
+    <li>Save screenshot support for the layout preview and layout editor windows.</li>
+    <li>Template bug fixes.</li>
+    <li>Lint bug fixes.</li>
+    <li>Various fixes for crash reports. Thank you, and keep filing crash reports!</li>
+  </ul>
+  </div>
+</div>
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+      alt=""/>Android Studio v0.1.x</a> <em>(May 2013)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+  <ul>
+    <li>Various bug fixes, including a fix for a common Windows installation issue.
+  </ul>
+  </div>
+</div>
+
+<p>&nbsp;</p>
+
+<p class="note"><strong>Note:</strong> Periodic updates are pushed to Android Studio
+without requiring you to update from here. To manually check for updates, select
+<strong>Help > Check for updates</strong> (on Mac, select <strong>Android Studio >
+Check for updates</strong>).</p>
 
 
 
 
+<h2 id="Troubleshooting">Troubleshooting</h2>
+
+
+<div class="figure" style="width:330px">
+<img src="{@docRoot}images/tools/studio_error_gradle5.png" width="330"/>
+<p class="img-caption"><strong>Figure 1.</strong> Error dialog when opening an existing project.</p>
+</div>
+
+<h3>Error: Gradle project refresh failed</h3>
+
+<p>Android Studio 0.2.0 has updated the Gradle plug-in to 0.5.0, which is not backwards compatible.
+When opening a project that uses an older version of the plug-in, Studio will display the error
+shown in figure 1 in the upper right corner of the IDE.
+To resolve the error, you must change the version of the Android Gradle plug-in to 0.5.0.</p>
+
+<ol>
+  <li>Click the link in the error dialog <strong>Search in build.gradle files</strong>. If the dialog
+is no longer visible, click <strong>Event Log</strong>
+<img src="{@docRoot}images/tools/studio_error_eventlog.png"
+style="vertical-align:bottom;margin:0;height:19px"/> in the bottom-right corner of the IDE,
+then click <strong>Search in build.gradle files</strong>.</li>
+  <li>Double-click the line under the <em>build.gradle</em> usage. For example:
+  <strong>classpath 'com.android.tools.build:gradle:0.4</strong>. This opens the project
+  <code>build.gradle</code> file.</li>
+  <li>Edit the <code>classpath</code> to change the gradle version to <code>0.5.+</code>.
+  For example:
+  <pre class="no-pretty-print">
+dependencies {
+  classpath 'com.android.tools.build:gradle:<strong>0.5.+</strong>'
+}
+</pre>
+  </li>
+  <li>Save the file and rebuild your project.</li>
+</ol>
+
+
+
+<div class="figure" style="width:330px">
+<img src="{@docRoot}images/tools/studio_error_supportlib.png" width="330"/>
+<p class="img-caption"><strong>Figure 2.</strong> Error dialog when creating a new project
+or opening a project using the support library.</p>
+</div>
+
+<h3>Error: Failed to import Gradle project</h3>
+
+<p>If, after updating to Android Studio 0.2.x and creating or opening a project, you receive an
+error stating <em>"Could not find any version that matches
+com.android.support:support-v4:13.0.+"</em>, then you must install the <strong>Android Support
+Repository</strong>. This was likely caused because you're pointing Android Studio to an external
+Android SDK location that does not have the new Maven repository included with Android Studio
+0.2.x. This new Maven repository is used by the new build system for the Support Library, instead
+of using the Support Library JAR files, so must be present in the SDK.</p>
+
+
+<ol>
+  <li>Open the <strong>Android SDK Manager</strong>.</li>
+  <li>Expand the <strong>Extras</strong> directory
+and install <strong>Android Support Repository</strong>.</li>
+</ol>
+
+<p>If you've encountered other problems in Android Studio, look at the following page
+for possible resolutions to known issues: <a href="http://tools.android.com/knownissues"
+>http://tools.android.com/knownissues</a>.</p>
+
 
 
 </div><!-- end main content -->
@@ -390,7 +586,7 @@
 
 
 
-  
+
 <script>
   var os;
   var bundlename;
@@ -410,25 +606,28 @@
   if (os) {
     /* set up primary ACE download button */
     $('#download-ide-button').show();
-    $('#download-ide-button').append("Download Android Studio v0.1 <br/><span class='small'>for " + os + "</span>");
+    $('#download-ide-button').append("Download Android Studio <span class='small'>v0.2.x</span>"
+        + "<br/> <span class='small'>for " + os + "</span>");
     $('#download-ide-button').click(function() {return onDownload(this,true);}).attr('href', bundlename);
 
   } else {
     $('.pax').show();
   }
-  
-  
+
+
   function onDownload(link, button) {
-  
+    var $studioLink;
+
     /* set text for download button */
     if (button) {
+      $studioLink = $("a#"+$(link).attr('href'));
       $("#downloadForRealz").html($(link).text());
     } else {
+      $studioLink = $(link);
       $("#downloadForRealz").html("Download " + $(link).text());
     }
-    
-    $studioLink = $("a#"+$(link).attr('href'));
-    $("#downloadForRealz").attr('href',$studioLink.attr('href'));
+
+    $("#downloadForRealz").attr('href', $studioLink.attr('href'));
 
     $("#tos").fadeIn('fast');
     $("#main").fadeOut('fast');
@@ -450,9 +649,9 @@
 
   function onDownloadForRealz(link) {
     if ($("input#agree").is(':checked')) {
-      $("div.sdk-terms").slideUp();
-      $("#sdk-terms-form,.sdk-terms-intro").fadeOut('slow');
-      $("#main").fadeIn('slow');
+      $("#tos").hide();
+      $("#main").show();
+      location.hash = "Updating";
       return true;
     } else {
       $("label#agreeLabel,#bitpicker input").parent().stop().animate({color: "#258AAF"}, 200,
diff --git a/docs/html/sitemap.txt b/docs/html/sitemap.txt
index 105f60d..46164c1 100644
--- a/docs/html/sitemap.txt
+++ b/docs/html/sitemap.txt
@@ -4214,7 +4214,6 @@
 http://developer.android.com/reference/org/w3c/dom/TypeInfo.html
 http://developer.android.com/reference/org/w3c/dom/UserDataHandler.html
 http://developer.android.com/reference/android/support/v4/content/pm/ActivityInfoCompat.html
-http://developer.android.com/guide/developing/debug-tasks.html
 http://developer.android.com/reference/renderscript/rs__math_8rsh.html
 http://developer.android.com/reference/renderscript/structrs__matrix4x4.html
 http://developer.android.com/reference/renderscript/rs__cl_8rsh.html
@@ -6473,7 +6472,6 @@
 http://developer.android.com/sdk/api_diff/3/changes/constructors_index_removals.html
 http://developer.android.com/sdk/api_diff/3/changes/constructors_index_additions.html
 http://developer.android.com/sdk/api_diff/3/changes/constructors_index_changes.html
-http://developer.android.com/tools/debug-tasks.html
 http://developer.android.com/sdk/api_diff/5/changes/classes_index_additions.html
 http://developer.android.com/sdk/api_diff/5/changes/classes_index_changes.html
 http://developer.android.com/sdk/api_diff/16/changes/classes_index_additions.html
diff --git a/docs/html/tools/adk/adk.jd b/docs/html/tools/adk/adk.jd
index 049b6e9..1651747 100644
--- a/docs/html/tools/adk/adk.jd
+++ b/docs/html/tools/adk/adk.jd
@@ -1,4 +1,5 @@
 page.title=Accessory Development Kit 2011 Guide
+page.tags="adk"
 @jd:body
 
   <div id="qv-wrapper">
diff --git a/docs/html/tools/adk/adk2.jd b/docs/html/tools/adk/adk2.jd
index 0b18583..c60e920 100644
--- a/docs/html/tools/adk/adk2.jd
+++ b/docs/html/tools/adk/adk2.jd
@@ -1,4 +1,5 @@
 page.title=Accessory Development Kit 2012 Guide
+page.tags="adk"
 @jd:body
 
 <div id="qv-wrapper">
diff --git a/docs/html/tools/adk/index.jd b/docs/html/tools/adk/index.jd
index d492e96..e035115 100644
--- a/docs/html/tools/adk/index.jd
+++ b/docs/html/tools/adk/index.jd
@@ -1,4 +1,5 @@
 page.title=Accessory Development Kit
+page.tags="adk"
 @jd:body
 
 <p>The Accessory Development Kit (ADK) is a reference implementation for hardware manufacturers and
diff --git a/docs/html/tools/avd.html b/docs/html/tools/avd.html
deleted file mode 100644
index 1d314a1..0000000
--- a/docs/html/tools/avd.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/tools/devices/index.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should be redirected. Please <a
-href="http://developer.android.com/tools/devices/index.html">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/tools/debug-tasks.html b/docs/html/tools/debug-tasks.html
deleted file mode 100644
index 2a5bc51..0000000
--- a/docs/html/tools/debug-tasks.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/tools/debugging/index.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should be redirected. Please <a
-href="http://developer.android.com/tools/debugging/index.html">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/tools/device.jd b/docs/html/tools/device.jd
index c7827b2..a1fb817 100644
--- a/docs/html/tools/device.jd
+++ b/docs/html/tools/device.jd
@@ -177,6 +177,10 @@
     <td><code>18d1</code></td>
   </tr>
   <tr>
+    <td>Haier</td>
+    <td><code>201E</code></td>
+  </tr>
+  <tr>
     <td>Hisense</td>
     <td><code>109b</code></td>
   </tr>
diff --git a/docs/html/tools/devices/emulator.jd b/docs/html/tools/devices/emulator.jd
index fda233d..ea1549d 100644
--- a/docs/html/tools/devices/emulator.jd
+++ b/docs/html/tools/devices/emulator.jd
@@ -1,6 +1,4 @@
-page.title=Using the Android Emulator
-parent.title=Managing Virtual Devices
-parent.link=index.html
+page.title=Using the Emulator
 @jd:body
 
 <div id="qv-wrapper">
diff --git a/docs/html/tools/eclipse-adt.html b/docs/html/tools/eclipse-adt.html
deleted file mode 100644
index 0d59d49..0000000
--- a/docs/html/tools/eclipse-adt.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/tools/projects/projects-eclipse.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should be redirected. Please <a
-href="http://developer.android.com/tools/projects/projects-eclipse.html">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/tools/extras/oem-usb.jd b/docs/html/tools/extras/oem-usb.jd
index 87734a1..5e0e893 100644
--- a/docs/html/tools/extras/oem-usb.jd
+++ b/docs/html/tools/extras/oem-usb.jd
@@ -250,14 +250,6 @@
 href="http://www.fmworld.net/product/phone/sp/android/develop/">http://www.fmworld.net/product/phone/sp/android/develop/</a>
     </td>
   </tr>
-  <tr>
-    <td>
-      Fujitsu Toshiba
-    </td>
-    <td><a
-href="http://www.fmworld.net/product/phone/sp/android/develop/">http://www.fmworld.net/product/phone/sp/android/develop/</a>
-    </td>
-  </tr>
   <tr><td>
        Garmin-Asus
     </td>	<td><a
@@ -327,6 +319,10 @@
 href="http://www.teleepoch.com/android.html">http://www.teleepoch.com/android.html</a></td>
 </tr>
 
+<tr><td>Toshiba</td>  <td><a
+href="http://support.toshiba.com/sscontent?docId=4001814">http://support.toshiba.com/sscontent?docId=4001814</a></td>
+</tr>
+
 <tr><td>Yulong Coolpad</td>	<td><a
 href="http://www.yulong.com/product/product/product/downloadList.html#downListUL">http://www.yulong.com/product/product/product/downloadList.html#downListUL</a></td>
 </tr>
diff --git a/docs/html/tools/extras/support-library.jd b/docs/html/tools/extras/support-library.jd
index 9fc2699..a82a98a 100644
--- a/docs/html/tools/extras/support-library.jd
+++ b/docs/html/tools/extras/support-library.jd
@@ -18,8 +18,7 @@
 <h2>See also</h2>
 <ol>
   <li><a
-href="{@docRoot}guide/practices/optimizing-for-3.0.html">Optimizing Apps for Android 3.0</a></li>
-  <li><a href="http://code.google.com/p/iosched/">Google I/O App source code</a></li>
+href="{@docRoot}training/basics/fragments/support-lib.html">Using the Support Library</a></li>
 </ol>
 
 </div>
@@ -49,6 +48,47 @@
 <div class="toggle-content opened">
   <p><a href="#" onclick="return toggleContent(this)">
     <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img" alt=""
+/>Support Package, revision 13</a> <em>(May 2013)</em>
+  </p>
+  <div class="toggle-content-toggleme">
+    <dl>
+      <dt>Changes for v4 support library:</dt>
+      <dd>
+        <ul>
+          <li>Added {@link android.support.v4.widget.DrawerLayout} for creating a
+            <a href="{@docRoot}training/implementing-navigation/nav-drawer.html">Navigation
+            Drawer</a> that can be pulled in from the edge of a window.</li>
+          <li>Added {@link android.support.v4.widget.SlidingPaneLayout} widget for creating linked
+            summary and detail views that appropriately adapt to various screen sizes.</li>
+          <li>Added {@link android.support.v4.app.ActionBarDrawerToggle} as a way to tie
+            together the functions of {@link android.support.v4.widget.DrawerLayout} and {@link
+            android.app.ActionBar}.</li>
+          <li>Added {@link android.support.v4.widget.ViewDragHelper} as a new common component
+            for dragging views within a parent view.</li>
+          <li>Added {@link android.support.v4.widget.ScrollerCompat} to provide {@link
+            android.widget.Scroller} and {@link android.widget.OverScroller} compatibility support.
+            </li>
+          <li>Added {@link android.support.v4.content.FileProvider} to allow sharing of private
+            files between applications.</li>
+          <li>Updated {@link android.support.v4.view.ViewPager} to throw an exception if the
+            associated {@link android.support.v4.view.PagerAdapter} class is modified without a call
+            to {@link android.support.v4.view.PagerAdapter#notifyDataSetChanged notifyDataSetChanged()}.
+            </li>
+          <li>Fixed an issue with {@link android.support.v4.view.ViewPager} children drawing sort
+            order.</li>
+          <li>Fixed {@link android.support.v4.view.GestureDetectorCompat} to dispatch missing
+            {@link android.view.GestureDetector.SimpleOnGestureListener#onSingleTapConfirmed} calls
+            between tap timeout and long press events.</li>
+        </ul>
+      </dd>
+    </dl>
+  </div>
+</div>
+
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
 />Support Package, revision 12</a> <em>(February 2013)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -667,8 +707,8 @@
 </div>
 
 <p>For more information about how you can optimize your application for the latest
-Android-powered devices, read <a href="{@docRoot}guide/practices/optimizing-for-3.0.html">Optimizing
-Apps for Android 3.0</a>.</p>
+Android-powered devices, read <a href="{@docRoot}guide/practices/tablets-and-handsets.html"
+>Supporting Tablets and Handsets</a>.</p>
 
 
 <h2 id="Docs">Reference Docs</h2>
diff --git a/docs/html/tools/help/aapt.html b/docs/html/tools/help/aapt.html
deleted file mode 100644
index ebd375d..0000000
--- a/docs/html/tools/help/aapt.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/tools/building/index.html#detailed-build">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should be redirected. Please <a
-href="http://developer.android.com/tools/building/index.html#detailed-build">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/tools/help/adb.jd b/docs/html/tools/help/adb.jd
index c8afca5..74f6c07 100644
--- a/docs/html/tools/help/adb.jd
+++ b/docs/html/tools/help/adb.jd
@@ -1,6 +1,7 @@
 page.title=Android Debug Bridge
 parent.title=Tools
 parent.link=index.html
+page.tags="adb"
 @jd:body
 
 <div id="qv-wrapper">
@@ -101,10 +102,10 @@
 <p class="table-caption"><strong>Table 1.</strong> Available adb commands</p>
 <table>
 <tr>
-	<th>Category</th>
-	<th>Command</th>
-	<th>Description</th>
-	<th>Comments</th>
+  <th>Category</th>
+  <th>Command</th>
+  <th>Description</th>
+  <th>Comments</th>
 </tr>
 
 <tr>
@@ -191,7 +192,7 @@
 <td rowspan="2">Ports and Networking</td>
 <td><code>forward&nbsp;&lt;local&gt;&nbsp;&lt;remote&gt;</code></td>
 <td>Forwards socket connections from a specified local port to a specified remote port on the emulator/device instance. </td>
-<td>Port specifications can use these schemes: 
+<td>Port specifications can use these schemes:
 <ul><li><code>tcp:&lt;portnum&gt;</code></li>
 <li><code>local:&lt;UNIX domain socket name&gt;</code></li>
 <li><code>dev:&lt;character device name&gt;</code></li>
@@ -226,10 +227,10 @@
 <tr>
 <td><code>wait-for-device</code></td>
 <td>Blocks execution until the device is online &mdash; that is, until the instance state is <code>device</code>.</td>
-<td>You can prepend this command to other adb commands, in which case adb will wait until the emulator/device instance is connected before issuing the other commands. Here's an example: 
+<td>You can prepend this command to other adb commands, in which case adb will wait until the emulator/device instance is connected before issuing the other commands. Here's an example:
 <pre class="no-pretty-print">adb wait-for-device shell getprop</pre>
 
-Note that this command does <em>not</em> cause adb to wait until the entire system is fully booted. For that reason, you should not prepend it to other commands that require a fully booted system. As an example, the <code>install</code> requires the Android package manager, which is available only after the system is fully booted. A command such as 
+Note that this command does <em>not</em> cause adb to wait until the entire system is fully booted. For that reason, you should not prepend it to other commands that require a fully booted system. As an example, the <code>install</code> requires the Android package manager, which is available only after the system is fully booted. A command such as
 
 <pre class="no-pretty-print">adb wait-for-device install &lt;app&gt;.apk</pre>
 
@@ -280,34 +281,34 @@
 
 <p>Before issuing adb commands, it is helpful to know what emulator/device instances are connected to the adb server. You can generate a list of attached emulators/devices using the <code>devices</code> command: </p>
 
-	<pre class="no-pretty-print">adb devices</pre>
+  <pre class="no-pretty-print">adb devices</pre>
 
 <p>In response, adb prints this status information for each instance:</p>
 
 <ul>
-	<li>Serial number &mdash; A string created by adb to uniquely identify an emulator/device instance by its 
-        console port number. The format of the serial number is <code>&lt;type&gt;-&lt;consolePort&gt;</code>. 
-        Here's an example serial number: <code>emulator-5554</code></li>
-	<li>State &mdash; The connection state of the instance may be one of the following:
-		<ul>
-		<li><code>offline</code> &mdash; the instance is not connected to adb or is not responding.</li>
-		<li><code>device</code> &mdash; the instance is now connected to the adb server. Note that this state does not 
-                    imply that the Android system is fully booted and operational, since the instance connects to adb 
-                    while the system is still booting. However, after boot-up, this is the normal operational state of 
-                    an emulator/device instance.</li>
-                <li><code>no device</code> &mdash; there is no emulator/device connected.
-		</ul>
-	</li>
+  <li>Serial number &mdash; A string created by adb to uniquely identify an emulator/device instance by its
+    console port number. The format of the serial number is <code>&lt;type&gt;-&lt;consolePort&gt;</code>.
+    Here's an example serial number: <code>emulator-5554</code></li>
+  <li>State &mdash; The connection state of the instance may be one of the following:
+    <ul>
+      <li><code>offline</code> &mdash; the instance is not connected to adb or is not responding.</li>
+      <li><code>device</code> &mdash; the instance is now connected to the adb server. Note that this state does not
+        imply that the Android system is fully booted and operational, since the instance connects to adb
+        while the system is still booting. However, after boot-up, this is the normal operational state of
+        an emulator/device instance.</li>
+      <li><code>no device</code> &mdash; there is no emulator/device connected.
+    </ul>
+  </li>
 </ul>
 
 <p>The output for each instance is formatted like this: </p>
 
-	<pre class="no-pretty-print">[serialNumber] [state]</pre>
+  <pre class="no-pretty-print">[serialNumber] [state]</pre>
 
 <p>Here's an example showing the <code>devices</code> command and its output:</p>
 
-	<pre class="no-pretty-print">adb devices
-List of devices attached 
+  <pre class="no-pretty-print">adb devices
+List of devices attached
 emulator-5554&nbsp;&nbsp;device
 emulator-5556&nbsp;&nbsp;device
 emulator-5558&nbsp;&nbsp;device</pre>
@@ -323,13 +324,13 @@
 when issuing adb commands. To do so, use the <code>-s</code> option in the commands. The usage
 for the <code>-s</code> option is:</p>
 
-    <pre class="no-pretty-print">adb -s &lt;serialNumber&gt; &lt;command&gt; </pre>
-	
+<pre class="no-pretty-print">adb -s &lt;serialNumber&gt; &lt;command&gt; </pre>
+
 <p>As shown, you specify the target instance for a command using its adb-assigned serial number.
 You can use the <code>devices</code> command to obtain the serial numbers of running
 emulator/device instances. For example: </p>
 
-	<pre class="no-pretty-print">adb -s emulator-5556 install helloWorld.apk</pre>
+<pre class="no-pretty-print">adb -s emulator-5556 install helloWorld.apk</pre>
 
 <p>Note that, if you issue a command without specifying a target emulator/device instance
 while multiple devices are available, adb generates an error.
@@ -377,10 +378,10 @@
 emulator/device instance. </p>
 
 <p>To copy a file or directory (and its sub-directories) <em>from</em> the emulator or device, use</p>
-<pre class="no-pretty-print">adb pull &lt;remote&gt; &lt;local&gt;</pre> 
+<pre class="no-pretty-print">adb pull &lt;remote&gt; &lt;local&gt;</pre>
 
 <p>To copy a file or directory (and its sub-directories) <em>to</em> the emulator or device, use</p>
-    <pre class="no-pretty-print">adb push &lt;local&gt; &lt;remote&gt;</pre> 
+    <pre class="no-pretty-print">adb push &lt;local&gt; &lt;remote&gt;</pre>
 
 <p>In the commands, <code>&lt;local&gt;</code> and <code>&lt;remote&gt;</code> refer to the
 paths to the target files/directory on your development machine (local) and on the
@@ -397,8 +398,8 @@
 
 <h2 id="shellcommands">Issuing Shell Commands</h2>
 
-<p>Adb provides a Unix shell that you can use to run a variety of commands on an emulator 
-or connected device. The command binaries are stored in the file system of the emulator or device, 
+<p>Adb provides a Unix shell that you can use to run a variety of commands on an emulator
+or connected device. The command binaries are stored in the file system of the emulator or device,
 at <code>/system/bin/...</code>
 
 <p>Two of the most common command tools are <a href="#am">activity manager</a> ({@code am}) and
@@ -408,11 +409,11 @@
 the adb remote shell on the emulator/device. To issue a single command without entering a
 remote shell, use the <code>shell</code> command like this: </p>
 
-	<pre class="no-pretty-print">adb [-d|-e|-s &lt;serialNumber&gt;] shell &lt;shell_command&gt;</pre>
-	
+  <pre class="no-pretty-print">adb [-d|-e|-s &lt;serialNumber&gt;] shell &lt;shell_command&gt;</pre>
+
 <p>Or enter a remote shell on an emulator/device like this:</p>
 
-	<pre class="no-pretty-print">adb [-d|-e|-s &lt;serialNumber&gt;] shell</pre>
+  <pre class="no-pretty-print">adb [-d|-e|-s &lt;serialNumber&gt;] shell</pre>
 
 <p>When you are ready to exit the remote shell, press CTRL+D or type
 <code>exit</code>. </p>
@@ -441,8 +442,8 @@
 <p class="table-caption"><strong>Table 2.</strong> Available activity manager commands</p>
 <table>
 <tr>
-	<th>Command</th>
-	<th>Description</th>
+  <th>Command</th>
+  <th>Description</th>
 </tr>
 
 <tr>
@@ -641,7 +642,7 @@
 <td><code>
 display-density &lt;dpi>
 </code></td>
-<td>Override emulator/device display density. 
+<td>Override emulator/device display density.
 This command is helpful for testing your app across different screen densities on high-density
 screen environment using a low density screen, and vice versa.
 <p>Example:<br><code>am display-density 480</code>
@@ -662,7 +663,7 @@
 to-intent-uri &lt;INTENT>
 </code></td>
 <td>Print the given intent specification as an {@code intent:} URI. <p>See the
-<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>. 
+<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
 </td>
 </tr>
 </table>
@@ -688,7 +689,7 @@
   <dt>{@code -d &lt;DATA_URI>}</dt>
       <dd>Specify the intent data URI, such as "content://contacts/people/1".
       You can declare this only once.
-  
+
   <dt>{@code -t &lt;MIME_TYPE>}</dt>
       <dd>Specify the intent MIME type, such as "image/png".
       You can declare this only once.
@@ -843,8 +844,8 @@
 <p class="table-caption"><strong>Table 3.</strong> Available package manager commands.</p>
 <table>
 <tr>
-	<th>Command</th>
-	<th>Description</th>
+  <th>Command</th>
+  <th>Description</th>
 </tr>
 
 <tr>
@@ -1097,12 +1098,12 @@
 
 <h3 id="sqlite">Examining sqlite3 databases from a remote shell</h3>
 
-<p>From an adb remote shell, you can use the 
-<a href="http://www.sqlite.org/sqlite.html">sqlite3</a> command-line program to 
-manage SQLite databases created by Android applications. The 
-<code>sqlite3</code> tool includes many useful commands, such as 
-<code>.dump</code> to print out the contents of a table and 
-<code>.schema</code> to print the SQL CREATE statement for an existing table. 
+<p>From an adb remote shell, you can use the
+<a href="http://www.sqlite.org/sqlite.html">sqlite3</a> command-line program to
+manage SQLite databases created by Android applications. The
+<code>sqlite3</code> tool includes many useful commands, such as
+<code>.dump</code> to print out the contents of a table and
+<code>.schema</code> to print the SQL CREATE statement for an existing table.
 The tool also gives you the ability to execute SQLite commands on the fly.</p>
 
 <p>To use <code>sqlite3</code>, enter a remote shell on the emulator instance, as described above, then invoke the tool using the <code>sqlite3</code> command. Optionally, when invoking <code>sqlite3</code> you can specify the full path to the database you want to explore. Emulator/device instances store SQLite3 databases in the folder <code><span chatdir="1"><span chatindex="259474B4B070F261">/data/data/<em>&lt;package_name&gt;</em>/databases</span></span>/</code>. </p>
@@ -1126,7 +1127,7 @@
 <h3 id="monkey">UI/Application Exerciser Monkey</h3>
 
 <p>The Monkey is a program that runs on your emulator or device and generates pseudo-random
-streams of user events such as clicks, touches, or gestures, as well as a number of system-level 
+streams of user events such as clicks, touches, or gestures, as well as a number of system-level
 events.  You can use the Monkey to stress-test applications that you are developing,
 in a random yet repeatable manner.</p>
 
@@ -1135,7 +1136,7 @@
 
 <pre class="no-pretty-print">adb shell monkey -v -p your.package.name 500</pre>
 
-<p>For more information about command options for Monkey, see the complete 
+<p>For more information about command options for Monkey, see the complete
 <a href="{@docRoot}tools/help/monkey.html" title="monkey">UI/Application Exerciser Monkey</a> documentation page.</p>
 
 
@@ -1155,15 +1156,15 @@
 <p class="table-caption"><strong>Table 4.</strong> Some other adb shell commands</p>
 <table>
 <tr>
-	<th>Shell Command</th>
-	<th>Description</th>
-	<th>Comments</th>
+  <th>Shell Command</th>
+  <th>Description</th>
+  <th>Comments</th>
 </tr>
 
 <tr>
 <td><code>dumpsys</code></td>
 <td>Dumps system data to the screen.</td>
-<td rowspan=4">The <a href="{@docRoot}tools/debugging/ddms.html">Dalvik Debug Monitor Server</a> 
+<td rowspan=4">The <a href="{@docRoot}tools/debugging/ddms.html">Dalvik Debug Monitor Server</a>
 (DDMS) tool offers integrated debug environment that you may find easier to use.</td>
 </tr>
 
diff --git a/docs/html/tools/help/adt.jd b/docs/html/tools/help/adt.jd
index 18e7443..4dac574 100644
--- a/docs/html/tools/help/adt.jd
+++ b/docs/html/tools/help/adt.jd
@@ -1,4 +1,5 @@
 page.title=Android Developer Tools
+page.tags="adt"
 @jd:body
 
   <div id="qv-wrapper">
diff --git a/docs/html/tools/help/draw9patch.jd b/docs/html/tools/help/draw9patch.jd
index 7cf0e4b..ebf2c6c 100644
--- a/docs/html/tools/help/draw9patch.jd
+++ b/docs/html/tools/help/draw9patch.jd
@@ -1,6 +1,5 @@
 page.title=Draw 9-patch
-parent.title=Tools
-parent.link=index.html
+page.tags="NinePatch"
 @jd:body
 
 <p>The Draw 9-patch tool allows you to easily create a 
diff --git a/docs/html/tools/index.jd b/docs/html/tools/index.jd
index f9d452c..e9094a7 100644
--- a/docs/html/tools/index.jd
+++ b/docs/html/tools/index.jd
@@ -1,6 +1,13 @@
 page.title=Developer Tools
 @jd:body
-
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
     
 <img src="{@docRoot}images/tools-home.png" style="float:right;" height="415" width="763" />
 
diff --git a/docs/html/tools/other-ide.html b/docs/html/tools/other-ide.html
deleted file mode 100644
index 2bfe876..0000000
--- a/docs/html/tools/other-ide.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/tools/projects/projects-cmdline.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should be redirected. Please <a
-href="http://developer.android.com/tools/projects/projects-cmdline.html">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/tools/othertools.html b/docs/html/tools/othertools.html
deleted file mode 100644
index ed45ccd..0000000
--- a/docs/html/tools/othertools.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/tools/index.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should be redirected. Please <a
-href="http://developer.android.com/tools/index.html">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/tools/publishing/app-signing.jd b/docs/html/tools/publishing/app-signing.jd
index 608780e..1de1fd7 100644
--- a/docs/html/tools/publishing/app-signing.jd
+++ b/docs/html/tools/publishing/app-signing.jd
@@ -466,7 +466,7 @@
 </tr>
 <tr>
 <td><code>-sigalg</code></td><td>The name of the signature algorithim to use in signing the APK.
-Use the value {@code MD5withRSA}.</td>
+Use the value {@code SHA1withRSA}.</td>
 </tr>
 <tr>
 <td><code>-digestalg</code></td><td>The message digest algorithim to use in processing the entries
@@ -492,7 +492,7 @@
 <code>my_application.apk</code>, using the example keystore created above.
 </p>
 
-<pre>$ jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore my-release-key.keystore
+<pre>$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore
 my_application.apk alias_name</pre>
 
 <p>Running the example command above, Jarsigner prompts you to provide
diff --git a/docs/html/tools/samples/index.jd b/docs/html/tools/samples/index.jd
index ed416e6..76ba37a 100644
--- a/docs/html/tools/samples/index.jd
+++ b/docs/html/tools/samples/index.jd
@@ -1,5 +1,5 @@
 page.title=Samples
-
+page.tags="example","code"
 @jd:body
 
 <p>To help you understand some fundamental Android APIs and coding practices, a variety of sample
diff --git a/docs/html/tools/sdk/OLD_RELEASENOTES.jd b/docs/html/tools/sdk/OLD_RELEASENOTES.jd
deleted file mode 100644
index b7fd12f..0000000
--- a/docs/html/tools/sdk/OLD_RELEASENOTES.jd
+++ /dev/null
@@ -1,528 +0,0 @@
-page.title=Release Notes for Older SDK Versions
-excludeFromSuggestions=true
-@jd:body
-
-<div class="special">
-  <p><strong>Note:</strong> These are the release notes for the "early-look" SDK versions, released
-  before the full Android 1.0 release in September 2008.
-  Release notes for the Android 1.0 and later SDK versions are provided in the main
-  <a href="{@docRoot}sdk/RELEASENOTES.html">Release Notes</a> document.</p>
-</div>
-
-
-
-<a name="0.9_r1" id="0.9_r1"></a>
-<h2>Android 0.9 SDK Beta (r1)</h2>
-
-<p>This beta SDK release contains a large number of bug fixes and improvements from the early-look SDKs.&nbsp; 
-The sections below describe the highlights of the release.
-
-<h3>New Features and Notable Changes</h3>
-
-<p><strong>Behavior and System Changes</strong></p>
-<ul>
-	<li>New Home screen and many user interface updates
-	</li>
-	<li>Minor changes to Activity lifecycle and task management
-	</li>
-	<li>New window option to request OpenGL acceleration for certain kinds of View structures
-	</li>
-</ul>
-<p>
-	<b>
-	Significant API Changes</b>
-</p>
-<ul>
-	<li>onFreeze(Bundle) renamed to onSaveInstanceState(Bundle), to better reflect the fact that it does not represent an actual change in application lifecycle
-	</li>
-	<li>IntentReceivers are now known as BroadcastReceivers (but still operate on Intents.)
-	</li>
-	<li>Various parts of the API cleaned up to use Intents instead of Bundles; Intent itself improved to reduce the need for separate payload Bundles.</li>
-	<li>ContentProvider Cursors have had significant changes to make them easier to create and remove certain data consistency bugs.
-	</li>
-	<li>Changes to menus to make them more flexible; also added context menus (similar to "right mouse button" menus)
-	</li>
-	<li>Changes to the Sensor API to make reading sensors more convenient and reduce the need to poll
-	</li>
-	<li>Improvements to the Camera API
-	</li>
-	<li>Significant changes to the Location API to make it easier to use and better self-documenting
-	</li>
-	<li>API cleanup on MapViews
-	</li>
-	<li>Performance-related changes to the MediaPlayer, as well as support for new types of ringtones
-	</li>
-	<li>Apache HTTPClient installation upgraded to 4.x of that API; 3.x version is removed
-	</li>
-	<li>HTTPClient 4.x removes multipart methods, include HttpMime which is an extension of Mime4j (http://james.apache.org/mime4j/index.html) in your project instead
-	</li>
-	<li>Improvements to WiFi and related networking
-	</li>
-	<li>New Preferences API to easily store small amounts of data
-	</li>
-	<li>Improvements to the Telephony API, including ability to obtain source number of incoming phone calls
-	</li>
-	<li>Variety of improvements to the View API
-	</li>
-	<li>Variety of improvements to component management, such as the ability to keep components private, better control over when processes are started, and ability to "alias" an Activity to more than one entry in AndroidManifest.xml
-	</li>
-	<li>Improvements to how the Browser and WebView, such as better control over content downloads
-	</li>
-	<li>A number of enhancements to XML layouts, such as the new &lt;merge&gt; tag
-	</li>
-	<li>Numerous improvements to the standard widgets
-	</li>
-	<li>Network access now requires that applications obtain a permission in their AndroidManifest.xml files.
-	</li>
-</ul>
-<p>
-	<b>
-	Maps &amp; Location</b>
-</p>
-<ul>
-	<li>The MapView will require an API key on final Android 1.0 devices. This key can be obtained at no cost from Google, and will allow access to the full MapView API. In this release, the API key must be provided but can be any dummy value.&nbsp; In the final 1.0-compatible SDKs, this will need to be a real key.
-	</li>
-	<li>The KML-based mock location provider supported in previous releases is no longer supported. In the current SDK, you can use the emulator console to send GPS fix updates to the emulator and applications running on it. Also, the DDMS tool provides an UI that you can use to easily upload GPX and KML files. DDMS handles playback of the KML or GPX tracks automatically. </li>
-</ul>
-<p>
-	<b>ADT Plugin for Eclipse</b></p>
-	<p>The ADT Plugin that accompanies this SDK includes a preview of the Graphical Layout Editor. Files located in &lt;project&gt;/res/layout[-qualifiers]/ will be opened with the new layout editor. This is very much a work in progress, and provided here for preview purpose. The editor feature is subject to change.
-</p>
-<ul>
-	<li>Dual page editor with a WYSIWYG page (the graphical editor) and an XML page with content assist.
-	</li>
-	<li>The interactivity in the editor itself is limited to selection at the moment. Actions on the layout elements can be done from the following standard Eclipse views: Outline (add/remove/up/down), and Properties (editing of all the element properties with a tooltip in the status bar).
-	</li>
-	<li>Top part of the editor allows you to display the layout in different configurations (language, orientation, size, etc...), and different themes.
-
-		<ul>
-			<li>All referenced resources (strings, bitmaps, etc...) are resolved based on the selected configuration/theme.
-			</li>
-			<li>A green check mark next to a resource qualifier indicates that the opened file matches the value of the qualifier. A warning sign indicates that the opened file does not specifies any value for this qualifier.
-			</li>
-			<li>If a different version of the opened layout matches the new configuration selection (in a different res/layout-qualifier folder) then the editor automatically switches to that new file.
-			</li>
-		</ul>
-	</li>
-	<li>Custom Views are supported, however if they do too much in their constructor/onDraw method, it may not work (the layout library used by the editor only includes a sub-part of the Android framework). Check the android console for errors/exceptions.
-	</li>
-</ul>
-
-<p>Known issues/limitations for Graphical Layout Editor include:</p>
-	
-		<ul>
-			<li>Font display is very close but not equals to on-device rendering since the font engine in Java slightly differs from the font engine in Android. This should not have any impact on your layouts.
-			</li>
-			<li>Creating new views in a relative layout automatically puts each new elements below each other using the <i>layout_below</i> attribute. However, until the layout file is saved, they will appear stacked on top of each other.
-			</li>
-			<li>Some XML based drawables don't draw. Fading in the scroll/list view appears as a white rectangle. Generally do not expect every single fancy drawing feature of the android framework to be supported in the layout editor (but we're working on it).
-			</li>
-			<li>Themes defined in the project are not added to the theme drop-down.
-			</li>
-			<li>No animation support!
-			</li>
-			<li>No support for WebView, MapView and SurfaceView.
-			</li>
-			<li>No UI support for &lt;merge&gt;, &lt;include&gt;, &lt;ViewStub&gt; elements. You can add these elements to your manifest using the xml editor only. 
-			</li>
-			<li>If a layout fails to render in a way that prevents the whole editor from opening, you can:
-
-			<ul>
-			<li>open that particular file in a different editor: right click the file in the package explorer and choose Open With... &gt; XML editor
-			</li>
-			<li>completely disable the layout editor, by setting a system wide environment variable called ANDROID_DISABLE_LAYOUT to any value.
-			</li>
-			</ul>
-			<li>If a layout fails to render, check the android console (in the standard Eclipse Console view). Errors/Exceptions will be displayed in there.
-			</li>
-	</ul>
-	</li>
-</ul>
-<p>Other ADT features/notes include:</p>
-<ul>
-	<li>There is a new launch option for activity. You can choose to launch the default activity (finds an activity configured to show up in the home screen), or a specific activity, or none.</li>
-	<li>Normal Java resources (non Java files placed in package folders) are now properly packaged in the final package, and can be accessed through normal java API such as ClassLoader.getResourceAsStream()</li>
-	<li>Launch configuration now has an option to wipe emulator data on launch. This always asks for confirmation.</li>
-	<li>Launch configuration now has an option to disable the boot animation. This will let the emulator start faster on older computers.</li>
-	<li>Installation of application is now more robust and will notify of installation failure. Also installation is blocking, removing issues where ADT tried to launch the activity before the app was installed.</li>
-
-</ul>
-
-<p><b>Ant Build Tools</b></p>
-
-<ul>
-  <li><span>External jar libraries are now directly supported by build.xml, just drop them in the libs directory.</li>
-</ul>
-
-<p><b>Emulator</b></p>
-
-<ul>
-  <li>The console port number of a given emulator instance is now displayed in its window's title bar.</li>
-  <li>You can define the console port number used by a given emulator instance.
-To do so, start the instance with the '-port &lt;port&gt;' option and
-specify which port the emulator should bind to for the console. &lt;port&gt; must be an *even* integer between 5554 and 5584 inclusive. The corresponding ADB port will be &lt;port&gt;+1.</li>
-  <li>The <code>-adb-port</code> command is deprecated. Please do not use it, as it will be removed soon and you cannot use both -port and -adb-port at the same time.</li>
-  <li>Voice/sms are automatically forwarded to other emulator instances running on the same machine, as long as you use their console port number as the destination phone number. For example, if you have two emulators running, the first one will typically use console port 5554, and the second one will use port 5556, dialing 5556 on the first emulator will generate an incoming call on the second emulator. You can also hold/unhold calls. This also works when sending SMS messages from one emulator to the other.</li>
-  <li>A new <code>-scale &lt;fraction&gt;</code> option allows you to scale the emulator window. </li>
-  <li>A new <code>-no-boot-anim</code> option tells the emulator to disable the boot animation. On slower systems, this can significantly reduce the time to boot the system in the emulator.</li>
-
-</ul>
-
-<p>
-	<b>Other Development Tools</b>
-</p>
-
-<p>The SDK includes several new development tools, such as</p>
-<ul>
-	<li><a href="{@docRoot}tools/help/hierarchy-viewer.html">HierarchyViewer</a> is a visual tool for inspecting and debugging your user interfaces and layout. </li>
-	<li><a href="{@docRoot}tools/help/draw9patch.html">Draw 9-patch</a> allows you to easily create a NinePatch graphic using a WYSIWYG editor. </li>
-	<li>The <a href="{@docRoot}tools/help/monkey.html">UI/Application Exerciser Monkey</a> generates pseudo-random system and user events, for testing your application. </li>
-</ul>
-<p>
-	<b>Application Signing</b>
-</p>
-<ul>
-	<li>Starting with this release, Android .apk files must be cryptographically signed, or the system will reject them upon installation.&nbsp; The purpose of this requirement is to securely and uniquely identify developers, so that the system can -- for example -- safely let multiple .apk files signed by the same developer share resources.&nbsp;
-	</li>
-	<li>There are no requirements on the key used to sign .apk files;&nbsp; locally-generated and self-signed keys are allowed.&nbsp; There is no PKI, and developers will not be required to purchase certificates, or similar. &nbsp; For developers who use the Eclipse/ADT plugin, application signing will be largely automatic.&nbsp; Developers who do not use Eclipse/ADT can use the standard Java jarsigner tool to sign .apk files.
-	</li>
-</ul>
-<p>
-	<b>Sample Code</b>
-</p>
-<ul>
-	<li>LunarLander has been converted to render into a SurfaceView via a background Thread, for better performance.
-	</li>
-	<li>New sample: the source code for the now-obsolete Home screen from M5 is included as an example of how to construct a Home screen replacement.
-	</li>
-</ul>
-<p>
-	<b>
-	Removed Functionality</b>
-</p>
-<ul>
-	<li>Due to significant API changes in the upstream open-source project and due to the timeline of getting certain Bluetooth profile implementations certified, a comprehensive Bluetooth API will not be possible or present in Android 1.0.
-	</li>
-	<li>Due to the security risks inherent in accepting arbitrary data from "outside" the device, the data messaging facility of the GTalkService will not be present in Android 1.0.&nbsp; The GTalkService will provide connectivity to Google's servers for Google Talk instant messaging, but the API has been removed from this release while we improve the service.&nbsp; Note that this will be a Google-specific service and is not part of the core of Android.
-	</li>
-	<li>We know that these changes will affect many developers who have worked with the prior early looks at the SDK, and we are very sorry for the resulting inconvenience.&nbsp; We look forward to the possibilty of restoring some or all of this functionality in a later version of the Android platform.
-	</li>
-</ul>
-<p>
-	<b>
-	Miscellaneous</b>
-</p>
-<ul>
-	<li>Many internal and non-public APIs have been removed from the documentation.&nbsp; Classes and methods that are not present in the documentation are non-public and should not be used, even though they may appear in tools such as IDEs.&nbsp; A future version of the SDK will ship with an android.jar file that contains only public classes, to help developers avoid accidentally using non-public APIs.
-	</li>
-	<li>A few extraneous APIs (such as unnecessary packages under java.awt) have been removed.
-	</li>
-	<li>Several additional tools are included, such as a utility for easily drawing 9-patch images.
-	</li>
-	<li>The DDMS utility has been refactored into library form. This is not of direct interest to application developers, but may be of interest to vendors interested in integrating the Android SDK into their products. Watch for more information about the ddmlib library soon.
-	</li>
-	<li>For performance and maintainability reasons, some APIs were moved into separate modules that must be explicitly included in the application via a directive in AndroidManifest.xml.&nbsp; Notable APIs that fall into this category are the MapView, and the java.awt.* classes, which each now reside in separate modules that must be imported.&nbsp; Developers who overlook this requirement will see ClassNotFoundExceptions that seem spurious. 
-	</li>
-	<li>Developers who use 'adb push' to install applications must now use 'adb install', since the full package manager is now implemented. 'adb push' will no longer work to install .apk files.
-	</li>
-	<li>The emulator supports a variety of new options, and some existing options have been changed.&nbsp; Please consult the updated emulator documentation for details.
-	</li>
-</ul>
-
-<h3>
-	Resolved Issues
-</h3>
-<p>
-	The list below is not comprehensive, but instead highlights the most interesting fixes since the last SDK release.
-</p>
-<ul>
-	<li>More of the standard Android user applications are now included, such as the Music and Messaging applications.
-	</li>
-	<li>Many bug fixes to the Media Player
-	</li>
-	<li>Emulator performance is improved, especially for startup
-	</li>
-	<li>More internal APIs are removed from class documentation.&nbsp; (However, this work is not quite yet complete.)
-	</li>
-	<li>It's now much easier to add media content to the SD card and have the ContentProvider locate and expose it to other applications.
-	</li>
-</ul>
-
-<h3>
-	Known Issues
-</h3>
-<ul>
-	<li>The final set of Intent patterns honored by Android 1.0 has not yet been fully documented.&nbsp; Documentation will be provided in future releases.
-	</li>
-	<li>We regret to inform developers that Android 1.0 will not support 3.5" floppy disks.
-	</li>
-	<li>Unfortunately, the ability to play audio streams from memory (such as via an InputStream or Reader) will not be possible in Android 1.0.&nbsp; As a workaround, we recommend that developers save media content to SD card and use MediaPlayer to play from a file URI, or embed a small HTTP server and play from a URI on localhost (such as http://127.0.0.1:4242/something).
-	</li>
-	<li>Android now supports modules or libraries that can be optionally linked into applications; a good example is the MapView, which has been moved into such a library. However, Android 1.0 will not support the ability for third-party developers to create such libraries for sharing with other applications.
-	</li>
-	<li>We believe that we have eliminated the problem with very long emulator startups on Windows, but had some trouble reproducing the issue.&nbsp; We are interested in feedback from developers, if this issue persists.
-	</li>
-</ul>
-
-
-
-
-<a name="m5-rc15"></a>
-<h2>Version m5-rc15</h2>
-
-<h3>New Features</h3>
-<p>m5-rc15 does not introduce any new features.</p>
-
-<h3>Resolved Issues</h3>
-<ul>
-    <li>1012640: Incorrect handling of BMP images.</li>
-</ul>
-
-<h3>Known Issues</h3>
-<p>Unless otherwise noted, Known Issues from m5-rc14 also apply to m5-rc15.</p>
-
-
-
-
-<a name="m5-rc14"></a>
-<h2>Version m5-rc14</h2>
-
-<h3>New Features</h3>
-
-<p>In addition to changes in the Android APIs, m5-rc14 also introduces changes to the Android Developer Tools:</p>
-
-<h4>emulator</h4>
-<ul>
-    <li>The Android emulator now support SD card images up to 128 GB in size.  The previous limit was 2 GB.</li>
-</ul>
-
-<h4>DDMS</h4>
-<ul>
-    <li>Support for managing multiple devices has been integrated into DDMS.  This should make it easier to debug applications that are run on multiple device scenarios.</li>
-</ul>
-
-<h4>ADT</h4>
-<ul>
-    <li>ADT now attempts to connect a debugger to any application that shows up
-    in the wait-for-debugger state, even if this application was not launched
-    from Eclipse.
-    <br /><br />
-    The connection is actually established only if there exists a project
-    in the Eclipse workspace that contains an <code>AndroidManifest.xml</code>
-    declaring a package matching the name of the process.
-    To force this connection from your code, use <code>Debug.waitForDebugger()</code>. Activities declaring that they require their own process through the
-    "process" attribute with a value like ":someProcess" will be
-    recognized and a debugger will be connected accordingly.
-    This should make it easier to debug intent receivers, services,
-    providers, and other activities not launched from the standard app
-    launcher.<br /><br /></li>
-    <li>ADT has launch modes for device target selection.  Automatic mode will: 1) launch an emulator if no device is present, 2) automatically target the device if only one is connected, and 3) prompt the user if 2 or more are connected.  Manual mode will always prompt the user.<br /><br /></li>
-    <li>ADT also contains the same support for multiple devices that has been introduced into DDMS.</li>
-</ul>
-
-<h4>AIDL</h4>
-<ul>
-    <li>AIDL files that import and reuse types is now supported by activityCreator.py and ADT.</li>
-</ul>
-
-<h4>traceview</h4>
-<ul>
-    <li>The <a href="{@docRoot}tools/help/traceview.html">traceview</a> tool is now included in the SDK.</li>
-</ul>
-
-<h3>Resolved Issues</h3>
-
-<p>The following Known Issues from m3-rc20 have been resolved:</p>
-<ul>
-    <li>917572: The activityCreator created incorrect IntelliJ scripts</li>
-    <li>917465: Unanswered incoming calls placed from the emulator console will result in an unfinished call UI if you press the call back button</li>
-    <li>917247: dmtracedump and traceview tools are not available in the SDK</li>
-    <li>912168: Extremely rapid or prolonged scrolling in the Maps application or MapsView will result in application errors</li>
-    <li>905852: adb emits warnings about deprecated API use on Mac OS X 10.5</li>
-    <li>905242: The Run dialog sometimes failed to show the Android Launcher</li>
-    <li>901122: The focus ring in the browser is sometimes incorrect</li>
-    <li>896274: On Windows, the emulator sometimes starts off-screen</li>
-    <li>778432: Icons for newly installed applications do not display</li>
-</ul>
-
-<h3>Known Issues</h3>
-
-<p>The following are known issues in m5-rc14:</p>
-
-<ul>
-    <li>1017312: The emulator window size has been reduced slightly, to allow it to be fully visible on smaller screens. This causes a slight clipping of the HVGA emulator skin but does not affect its function.</li>
-    <li>1021777: Setting a power requirement in a <code>Criteria</code> object passed to <code>{@link android.location.LocationManager#getBestProvider getBestProvider()}</code> will result in a value not being returned.</li>
-    <li>1025850: Emulator failing to launch from the Eclipse plugin due to wrong custom command line parameters do not report the error anywhere and silently fails.</li>
-</ul>
-
-<p>Unless otherwise noted, Known Issues from m3-rc20a also apply to m5-rc14.</p>
-
-
-
-
-<a name="m3-rc37a"></a>
-<h2>Version m3-rc37a</h2>
-
-<p>Version m3-rc37a and ADT 0.3.3 were released on December 14, 2007.</p>
-
-<h3>New Features</h3>
-
-<h4>Android Debug Bridge (ADB)</h4>
-<ul>
-<li>Now supports multiple emulators on one host computer. Please note that you need to use the <code>-data</code> option when starting secondary emulators, to allow those instances to save their data across sessions. Also, DDMS does not yet support debugging on multiple emulators yet. </li>
-</ul>
-
-<h4>ADT Plugin for Eclipse</h4>
-<ul>
-<li>Adds editor capabilities for working with Android manifest files, such as syntax highlighting and autocompletion. The editor capabilities require the Web Tools WST plugin for Eclipse, which is included in <a href="http://www.eclipse.org/downloads/moreinfo/compare.php">most Eclipse packages</a>. Not having WST does not prevent the ADT plugin from working. If necessary, you can download and install WST from the Web Tools Project <a href="http://download.eclipse.org/webtools/downloads">downloads page</a>. To update directly from an Eclipse installation, you can add a remote update site with this URL: http://download.eclipse.org/webtools/updates . Note that installing WST on Eclipse 3.4 will require installing other packages, as detailed on the WTP downloads page</a>.
-</li>
-<li>Now retries to launch the app on the emulator if it fails due to timing issues when the emulator is booting.</li>
-<li>Adds support for loading custom skins from the &lt;SDK&gt;/lib/images/skins/ directory. The Skin dropdown in the Emulator tab is now built from the content of the skins/ directory in order to support developer-made skins.</li>
-<li>Adds an Emulator control panel. This is a UI on top of the emulator console that allows you to change the state of the network and gsm connection, and to initiate incoming voice call. (This is also present in standalone DDMS.)</li>
-<li>Adds support for referenced projects. Android projects will add to the apk package any code from referenced projects.</li>
-<li>Eclipse console now warns if an .apk that is pushed to the device declares the same package as another already installed package.</li>
-<li>Java classes generated by the Eclipse plugin are now marked as derived automatically, so that Team plugins do not consider them as regular source.</li>
-</ul>
-
-<h4>Emulator Console</h4>
-<ul>
-<li>Now provides support for emulating inbound SMS messages. The ADT plugin and DDMS provide integrated access to 
-this capability. For more information about how to emulate inbound SMS from the console, 
-see <a href="{@docRoot}tools/help/emulator.html#sms">SMS Emulation</a>. </li>
-</ul>
-
-<h4>Emulator</h4>
-<ul><li>The default emulator skin has been changed to HVGA-P from QVGA-L. For information 
-about emulator skins and how to load a specific skin when starting the emulator, see 
-<a href="{@docRoot}tools/help/emulator.html#skins">Using Emulator Skins</a>.</li>
-</ul>
-
-<h3>Resolved Issues</h3>
-
-<h4>907947</h4>
-<p><code>adb -version</code> now returns a version number.</p>
-
-<h4>917462</h4>
-<p>Audio on Windows is fixed and is no longer 'choppy'. </p>
-
-<h4>Removed Manifest File Locking on Mac OS X</h4>
-
-<p>ADT plugin now uses a custom java editor for R.java/Manifest.java, to make those files non-editable. This is to replace the current locking mechanism which causes issues on Mac OS (preventing projects from being deleted). Note that your project must recompile at least once for the lock to be removed from the files.</p>
-
-<h4>The following known issues noted in m3-rc20 are now fixed:</h4>
-<p>
-<ul>
-<li>890937: Emulator does not support non-qwerty keyboards.
-<li>894618: <code>adb shell</code> may fail to connect when used the first time.
-<li>896274: On Windows, the emulator window may start off-screen.
-<li>899949: The emulator may fail to start with <code>-useaudio</code> on some environments.
-<li>912619: Emulator console listens on non-local ports 5554-5584.
-<li>917399: On Windows, running multiple emulator consoles can result in unexpected behavior when simulating incoming telephone calls.
-</ul>
-</p>
-
-<h3>Known Issues</h3>
-
-<p>Unless otherwise noted, Known Issues from m3-rc22a also apply to m3-rc37a.</p>
-
-
-
-
-<a name="m3-rc22a"></a>
-<h2>Version m3-rc22a</h2>
-
-<p>Version m3-rc22a and ADT 0.3.1 were released on November 16, 2007.</p>
-
-<h3>Resolved Issues</h3>
-
-<h4>920067</h4>
-<p>The New Android Project wizard provided by ADT 0.3.1 now properly displays error messages when used with Eclipse 3.2 on Windows.</p>
-
-<h4>920045</h4>
-<p>The <code>AndroidManifest.xml</code> files generated by ADT 0.3.1 now include the XML element required for displaying the associated app in the "Applications" menu. If you have applications created with ADT 0.3.0, simply ensure that your <code>AndroidManifest.xml</code> file contains the following highlighted line:</p>
-<pre>
-...
-    &lt;intent-filter&gt;
-        &lt;action android:value=&quot;android.intent.action.MAIN&quot; /&gt;
-        <strong>&lt;category android:value=&quot;android.intent.category.LAUNCHER&quot; /&gt;</strong>
-    &lt;/intent-filter&gt;
-...
-</pre>
-
-<h4>920098</h4>
-<p>ADT 0.3.1 is now compatible with Eclipse 3.4.</p>
-
-<h4>920282</h4>
-<p>Fixes a NullPointerException that is thrown in certain situations with the DDMS perspective in Eclipse.</p>
-
-<h4>918637</h4>
-<p>Address a keyboard lock-up issue when using <code>adb</code> on Mac OS X 10.4 and 10.5.</p>
-
-<h3>Known Issues</h3>
-
-<p>Unless otherwise noted, known issues from m3-rc20a also apply to m3-rc22a.</p>
-
-<a name="m3-rc20a"></a>
-
-<h2>Version m3-rc20a</h2>
-<h3>Known Issues</h3>
-
-<p>The following are known issues in m3-rc20a:</p>
-
-<h4>778432 - <span style="font-weight: normal; font-size: 13px; font-style: italic">Resolved in <a href="#m5-rc14">m5</a></span></h4>
-<p>In certain circumstances, icons for newly installed applications do not display as expected.</p>
-
-<h4>890937 - <span style="font-weight: normal; font-size: 13px; font-style: italic">Resolved in <a href="#m3-rc37a">m3-rc37a</a></span></h4>
-<p>The emulator currently does not support non-QWERTY keyboards.</p>
-
-<h4>894618 - <span style="font-weight: normal; font-size: 13px; font-style: italic">Resolved in <a href="#m3-rc37a">m3-rc37a</a></span></h4>
-<p>The adb shell command may fail to connect when used for the first time.</p>
-
-<h4>896274 - <span style="font-weight: normal; font-size: 13px; font-style: italic">Resolved in <a href="#m5-rc14">m5</a></span></h4>
-<p>On Windows, the emulator screen will sometimes show up off-screen when it is started. The workaround for this is to right-click on the emulator taskbar entry, select Move, and move the window using keyboard arrow keys</p>
-
-<h4>899949 - <span style="font-weight: normal; font-size: 13px; font-style: italic">Resolved in <a href="#m3-rc37a">m3-rc37a</a></span></h4>
-<p>The emulator may fail to start when using the <code>-useaudio</code> in some environments</p>
-
-<h4>901122 - <span style="font-weight: normal; font-size: 13px; font-style: italic">Resolved in <a href="#m5-rc14">m5</a></span></h4>
-<p>The focus ring shown in the browser may sometimes not properly wrap links.</p>
-
-<h4>905242 - <span style="font-weight: normal; font-size: 13px; font-style: italic">Resolved in <a href="#m5-rc14">m5</a></span></h4>
-<p>On Mac OS X 10.5, the Eclipse plugin's Run Dialog may sometimes fail to show the option to select the Android Launcher.</p>
-
-<h4>905852 - <span style="font-weight: normal; font-size: 13px; font-style: italic">Resolved in <a href="#m5-rc14">m5</a></span></h4>
-<p>On Mac OS X 10.5, adb will emit warnings about deprecated API use when first used.</p>
-
-<h4>912168 - <span style="font-weight: normal; font-size: 13px; font-style: italic">Resolved in <a href="#m5-rc14">m5</a></span></h4>
-<p>extremely rapid or prolonged scrolling in the Maps application or in a MapView will result in application errors.</p>
-
-<h4>912619 - <span style="font-weight: normal; font-size: 13px; font-style: italic">Resolved in <a href="#m3-rc37a">m3-rc37a</a></span></h4>
-<p>The emulator console listens for connections on ports 5554-5587. Future versions will only accept connections from localhost. It is recommend that you use a firewall to block external connections to those ports on your development machine.</p>
-
-<h4>912849</h4>
-<p>On Mac OS X 10.4, the emulator may hang if started in the background (i.e. <code>./emulator &amp;</code>).</p>
-
-<h4>914692</h4>
-<p>On Mac OS X 10.5, the emulator will emit warnings about deprecated API use when started from the command line.</p>
-
-<h4>917247 - <span style="font-weight: normal; font-size: 13px; font-style: italic">Resolved in <a href="#m5-rc14">m5</a></span></h4>
-<p>The dmtracedump and traceview tools are not available in the SDK.</p>
-
-<h4>917399 - <span style="font-weight: normal; font-size: 13px; font-style: italic">Resolved in <a href="#m3-rc37a">m3-rc37a</a></span></h4>
-<p>On Windows, running multiple emulator consoles can result in unexpected behavior when simulating incoming telephone calls.</p>
-
-<h4>917465 - <span style="font-weight: normal; font-size: 13px; font-style: italic">Resolved in <a href="#m5-rc14">m5</a></span></h4>
-<p>Unanswered incoming calls placed from the emulator console, will result in an unfinished call UI if you press the call back button.</p>
-
-<h4>917572 - <span style="font-weight: normal; font-size: 13px; font-style: italic">Resolved in <a href="#m5-rc14">m5</a></span></h4>
-<p>Using activityCreator with the <code>--ide intellij</code> option creates IntelliJ scripts with incorrect documentation location specified. To correct, change value for the <code>&lt;JAVADOC&gt;</code> element in the generated .ipr file from <code>file://.../docs/framework</code> to <code>file://.../docs/reference</code>.</p>
-
-<h4>917579</h4>
-<p>On Ubuntu 7.10 (Gusty), the Eclipse package installed by the <code>apt-get install eclipse</code> command uses java-gcj by default.  This configuration is not compatible with the Android Eclipse plugin (ADT) and will result in "Class not found" errors whenever you access an ADT feature.</p>
-    <p>The resolution for this issue is to install a Sun JDK</p>
-    <pre>sudo update-java-alternatives --jre java-1.5.0-sun</pre>
-    <p>and then configure Eclipse to use it by exporting the following environment variable:</p>
-    <pre>export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun</pre>
-    <p>or by adding following to your <code>.eclipse/eclipserc file</code>:</p>
-    <pre>JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun</pre>
-
diff --git a/docs/html/tools/sdk/RELEASENOTES.jd b/docs/html/tools/sdk/RELEASENOTES.jd
deleted file mode 100644
index cbcbb12..0000000
--- a/docs/html/tools/sdk/RELEASENOTES.jd
+++ /dev/null
@@ -1,804 +0,0 @@
-page.title=SDK Release Notes
-excludeFromSuggestions=true
-@jd:body
-
-<p>This document provides version-specific information about Android SDK
-releases. <!--For the latest known issues, please ensure that you're viewing this
-page at <a
-href="http://developer.android.com/sdk/RELEASENOTES.html">http://developer.
-android.com/sdk/RELEASENOTES.html</a>.--></p>
-
-<h2 id="multiversion_r1">Android SDK</h2>
-
-<p>The Android SDK has changed! If you've worked with the Android SDK before,
-you will notice several important differences:</p>
-
-<ul>
-<li style="margin-top:.5em">The SDK downloadable package includes <em>only</em>
-the latest version of the Android SDK Tools.</li>
-<li>Once you've installed the SDK, you now use the Android SDK and AVD Manager
-to download all of the SDK components that you need, such as Android platforms,
-SDK add-ons, tools, and documentation. </li>
-<li>The new approach is modular &mdash; you can install only the components you
-need and update any or all components without affecting your development
-environment.</li>
-<li>In short, once you've installed the new SDK, you will not need to download
-an SDK package again. Instead, you will use the Android SDK and AVD Manager to
-keep your development environment up-to-date. </li>
-</ul>
-
-<p>Note that if you are currently using the Android 1.6 SDK, you do not
-necessarily need to install the new SDK, since your existing SDK already
-includes the Android SDK and AVD Manager tool. To develop against Android 2.0.1,
-for example, you could just download the Android 2.0.1 platform into your existing
-SDK. </p>
-
-<p>Release notes for Android platforms and other SDK components are
-now available from the "SDK" tab, under "Downloadable SDK Components."</p>
-
-<ul>
-<li>Notes for the Android 2.0.1 platform are in the <a
-href="{@docRoot}about/versions/android-2.0.1.html">Android 2.0.1, Release 1</a> document. </li>
-<li>You can find information about tools changes in the <a
-href="{@docRoot}tools/sdk/tools-notes.html#notes">SDK Tools</a> and <a
-href="{@docRoot}tools/sdk/eclipse-adt.html#notes">ADT Plugin for Eclipse</a>.</li>
-</ul>
-
-<p>To get started with the SDK, review the Quick Start summary on the <a
-href="{@docRoot}sdk/index.html">Android SDK download page</a> or read <a
-href="{@docRoot}sdk/installing/index.html">Installing the SDK</a> for detailed
-installation instructions. </p>
-
-
-<h2 id="1.6_r1">Android 1.6 SDK, Release 1</h2>
-
-<p>This SDK provides updates to the development tools and Android system that
-you use to create applications for compliant Android-powered devices. </p>
-
-<h3>Release Overview</h3>
-
-<p>This SDK release includes several new features for developers. Highlights of the
-changes include: </p>
-
-  <ul>
-    <li>Emulator support for multiple screen sizes/densities, including new
-skins. </li>
-    <li>Android SDK and AVD Manager, a graphical UI to let you manage your
-SDK and AVD environments more easily. The tool lets you create and manage 
-your <a href="{@docRoot}tools/devices/managing-avds.html">Android Virtual
-Devices</a> and download new SDK packages (such as platform versions and 
-add-ons) into your environment.</li>
-    <li>Improved support for test packages in New Project Wizard</li>
-    <li>The reference documentation now offers a "Filter by API Level" 
-capability that lets you display only the parts of the API that are actually 
-available to your application, based on the <code>android:minSdkVersion</code>
-value the application declares in its manifest. For more information, see
-<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Android API Levels</a></li>
-  </ul>
-
-<p>For details about the Android platforms included in the SDK &mdash; including
-bug fixes, features, and API changes &mdash; please read the <a
-href="android-1.6.html">Android 1.6 version notes</a>.</p>
-
-<h3>Installation and Upgrade Notes</h3>
-
-<p>If you've been developing an application using an Android 1.1 SDK, you need
-to make a few changes to your development environment to migrate to the new SDK.
-Tools and documentation are provided to assist you. No changes to the source
-code of an existing application should be needed, provided that your application
-is not using Android internal structures or APIs.</p>
-
-<p>To ensure that your existing application will work properly on a device
-running the latest version of the Android platform, you are strongly encouraged
-to migrate the application to the new SDK, compile it using the platform
-matching the application's original API Level, and run it against the most
-current platform. </p>
-
-<h3>ADT Plugin for Eclipse</h3>
-
-<p>An updated version of the ADT Plugin for Eclipse is available with the
-Android 1.6 SDK. The new version, ADT 0.9.3, provides several new
-features, including integrated support for the Android SDK and AVD Manager
-and zipalign tool. In addition, the New Project Wizard now
-lets you create a test package containing tests for your application. These
-features are described in the sections below. </p>
-
-<p>If you are developing in Eclipse with ADT and want to get started with the
-Android 1.6 SDK, you should download and install a compatible version of the ADT
-Plugin (0.9.3 or higher). </p>
-
-<p>The new version of ADT is downloadable from the usual remote update site or
-is separately downloadable as a .zip archive. For instructions on how to
-download the plugin, please see <a
-href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin for Eclipse</a>. </p>
-
-<h3>Android SDK and AVD Manager</h3>
-
-<p>The SDK offers a new tool called Android SDK and AVD Manager that lets you 
-manage your SDK and AVD environments more efficiently. </p>
-
-<p>Using the tool, you can quickly check what Android platforms, add-ons,
-extras, and documentation packages are available in your SDK environment, what
-their versions are, and whether updated versions are available. You can then
-download one or more items from remote repositories and install them directly in
-your SDK environment. For example, the tool lets you obtain updates to SDK tools
-incrementally, as they are made available, without having to wait for the next
-SDK release. You can also download Android platform versions into your
-environment that were not included in the SDK package.</p>
-
-<p>The tool also lets you quickly create new AVDs, manage
-their properties, and run a target AVD from a single window. </p>
-
-<p>If you are developing in Eclipse with ADT, you can access the Android SDK 
-and AVD Manager from the <strong>Window</strong> menu. </p>
-
-<p>If you are developing in another IDE, you can access the Android SDK and 
-AVD Manager through the <code>android</code> command-line tool, located in the
-&lt;sdk&gt;/tools directory. You can launch the tool with a graphical UI by
-using the <code>android</code> command without specifying any options. You can
-also simply double-click the android.bat (Windows) or android (OS X/Linux) file.
-You can still use <code>android</code> commands to create and manage AVDs, 
-including AVDs with custom hardware configurations.</p>
-
-<h3>Integration with zipalign</h3>
-
-<p>The Android system offers a performance optimization for installed
-application packages whose contained uncompressed files are all aligned on
-4-byte boundaries. For these .apks, the system can read the files by mmap'ing
-the zip file, rather than by copying all the data out of them. This reduces
-the amount of memory used by the application at run time. The SDK includes
-a tool called <code>zipalign</code> that you can run against your .apks, to
-align them properly and enable them to benefit from this optimization.</p>
-
-<p>The ADT Plugin and the Ant build tools both provide integrated support for
-aligning your application packages. After you build an .apk, the SDK tools can
-sign and then run <code>zipalign</code> against it. The SDK includes the
-standalone version of the <code>zipalign</code> tool, so you can run also run it
-manually from the command line if you choose. </p>
-
-<ul>
-  <li>If you are developing in Eclipse with ADT, support for
-<code>zipalign</code> is integrated into the Export Wizard. When you use the
-Wizard to export a signed application package, ADT signs and then automatically
-runs <code>zipalign</code> against the exported package. If you use the Wizard 
-to export an unsigned application package, then it will not zipalign the 
-package because zipalign must be performed only after the APK has been signed. 
-You must manually sign and zipalign the package after export. </li>
-  <li>If you are developing using Ant and are compiling in release mode, the
-build tools will automatically sign and then <code>zipalign</code> the
-application package, provided that you have specified the location of a valid
-keystore in the build properties file. If you are compiling in debug mode, the
-build tools will sign the package with the debug key and then <code>zipalign</code>
-it.</li>
-  <li>To use <code>zipalign</code> manually, change to the SDK tools directory
-and use the command syntax <code>$ zipalign 4 &lt;infile&gt;
-&lt;outfile&gt;</code></li>
-</ul>
-
-<p>In general, note that you must <code>zipalign</code> an application only
-<em>after</em> it has been signed, as signing will disrupt the package
-alignment.</p>
-
-<h3>Support for Test Packages in New Project Wizard</h3>
-
-<p>The New Project Wizard available in the ADT 0.9.3 now lets you add a test
-package containing Instrumentation or other classes of tests while you are 
-creating or importing a new Android application project. </p>
-
-<h3>New USB Driver for Windows</h3>
-
-<p>If you are using Windows and want to develop or test your application on an
-Android-powered device (such as the T-Mobile G1), you need an appropriate USB
-driver. 
-
-<p>The Windows version of the Android 1.6 SDK includes a new, WinUSB-based
-driver that you can install. The driver is compatible with both 32- and 64-bit
-versions of Windows XP and Vista. The driver represents an upgrade from the USB
-driver included in previous Android SDKs, although installing the new driver is
-not required. </p>
-
-<p>If you installed the USB driver from a previous SDK release and it is working
-properly, you do not need to upgrade to the new driver. However, we recommend
-upgrading if you have had any problems with the older driver or simply want
-to upgrade to the latest version.</p>
-
-<p>For driver installation or
-upgrade instructions, see  <a
-href="{@docRoot}sdk/win-usb.html">USB Driver for Windows</a>.</p>
-</p>
-
-<h3>Emulator Skins, Android 1.6 Platform</h3>
-
-<p>The Android 1.6 platform included in the SDK provides a new set of emulator
-skins, including: </p>
-
-<ul>
-  <li>QVGA &mdash; 240 x 320, low density (120 dpi)</li>
-  <li>HVGA &mdash; 320 x 480, medium density (160 dpi)</li>
-  <li>WVGA800  &mdash; 480 x 800, high density (240 dpi)</li>
-  <li>WVGA854  &mdash; 480 x 854, high density (240 dpi)</li>
-</ul>
-
-<p>Besides these defaults, You can also create an AVD that overrides the default
-density for each skin, to create any combination of resolution/density (WVGA
-with medium density, for instance).  To do so, use the <code>android</code> tool
-command line to create a new AVD that uses a custom hardware configuration. See
-<a href="{@docRoot}tools/devices/managing-avds.html#createavd">Creating an
-AVD</a> for more information.</p>
-
-<h3>Other Notes and Resolved Issues</h3>
-
-<ul>
-  <li>This SDK release adds support for Eclipse 3.5 (Galileo) and deprecates
-support for Eclipse 3.3 (Europa). </li>
-  <li>We regret to inform developers that Android 1.6 will not include support
-for <a href="http://www.ietf.org/rfc/rfc2549">RFC 2549</a></li>
-  <li>The issue preventing adb from recognizing Samsung Galaxy devices (linux SDK
-only) has been fixed.</li>
-</ul>
-
-
-<h2 id="1.5_r3">Android 1.5 SDK, Release 3</h2>
-
-<p>Provides an updated Android 1.5 system image that includes permissions
-fixes, as described below, and a new application &mdash; an IME for Japanese 
-text input. Also provides the same set of developer tools included in the 
-previous SDK, but with bug fixes and several new features.</p>
-
-<h3>Permissions Fixes</h3>
-
-<p>The latest version of the Android platform, deployable to 
-Android-powered devices, includes fixes to the permissions-checking
-in certain areas of the framework. Specifically, the Android system
-now properly checks and enforces several existing permissions where it
-did not do so in the previous release. Because of these changes in 
-enforcement, you are strongly encouraged to test your application 
-against the new Android 1.5 system image included in this SDK, to ensure 
-that it functions normally. </p>
-
-<p>In particular, if your application uses any of the system areas listed below,
-you should add the required permissions to the application's manifest and then
-test the areas of your code that depend on the permission-protected services.
-Even if you believe your application does not use the permissions-protected
-services, you should compile and test your application under the latest platform
-version to ensure that users will not encounter problems when using your
-application. </p>
-
-<p>The changes to permissions are as follows:</p>
-
-<ul>
-<li>When an application requests access to device camera (through
-android.hardware.camera), the <code>CAMERA</code> permission check is now
-properly enforced. </li>
-<li>When an application requests access to device audio capture (through
-android.media.MediaRecorder), the <code>RECORD_AUDIO</code> permission check is
-now properly enforced.</li>
-</ul>
-
-<p>For more information, see the issue described in the oCert advisory
-below:</p>
-
-<p style="margin-left: 2em;"><a href="http://www.ocert.org/advisories/ocert-2009-011.html">http://www.ocert.org/advisories/ocert-2009-011.html</a> </p>
-
-<h3>Resolved Issues, Changes</h3>
-
-<ul>
-<li>The SDK includes a new version of the Google APIs add-on. The add-on
-provides an updated com.google.android.maps external library that fixes compile
-errors related to certain classes such as GeoPoint. For information about the
-Google APIs add-on and the library it provides, see:
-
-<p style="margin-left:2em;"><a
-href="http://code.google.com/android/add-ons/google-apis">http://code.google.com/android/add-ons/google-apis</a> </p></li>
-
-<li>The SDK add-on architecture now lets device manufacturers specify a USB
-Vendor ID in their add-ons. 
-<li>The <code>android</code> tool provides a new command that scans SDK add-ons
-for their USB Vendor IDs and makes them available to adb (OS X and Linux
-versions of the SDK only). The command is  <code>android update adb</code>. On
-Windows versions of the SDK, a custom USB driver is included that supports the
-"Google" and "HTC" Vendor IDs, which allow adb to recognize G1 and HTC
-Magic devices. For other devices, contact the device manufacturer 
-to obtain a USB driver, especially if you have an SDK add-on that defines 
-a new USB Vendor ID.</li>
-<li>The telephony, sensor, and geo fix issues in the emulator are now
-fixed.</li>
-<li>When you use adb to uninstall an upgraded application, the Android system
-now properly restores any permissions that had already been granted to the
-previous (downgrade) version of the application</li>
-</ul>
-
-<h2 id="1.5_r2">Android 1.5 SDK, Release 2</h2>
-
-<p>This SDK release provides the same developer tools as the Android 1.5 SDK,
-Release 1, but provides an updated Android 1.5 system image that includes a
-security patch for the issue described in the oCert advisory below:</p>
-
-<p style="margin-left:2em;"><a href="http://www.ocert.org/advisories/ocert-2009-006.html">http://www.ocert.org/advisories/ocert-2009-006.html</a></p>
-
-<h2 id="1.5_r1">Android 1.5 SDK, Release 1</h2>
-
-<p>This SDK provides updates to the development tools and Android system that
-you use to create applications for compliant Android-powered devices. </p>
-
-<h3>Release Overview</h3>
-
-<p>This SDK release includes many new features for developers. Highlights of the
-changes include: </p>
-
-  <ul>
-    <li>Multiple versions of the Android platform are included (Android 1.1,
-Android 1.5). The tools are updated to let you deploy your application
-on any platform in the SDK, which helps you ensure forward-compatibility and, 
-if applicable, backward-compatibility.</li>
-    <li>Introduces <a href="{@docRoot}tools/devices/managing-avds.html">Android
-Virtual Devices</a> &mdash; (AVD) configurations of options that you
-run in the emulator to better model actual devices. Each AVD gets its
-own dedicated storage area, making it much easier to work with multiple emulators 
-that are running concurrently.</li>
-    <li>Support for SDK add-ons, which extend the
-Android SDK to give you access to one or more external Android libraries and/or
-a customized (but compliant) system image that can run in the emulator. </li>
-    <li>The new Eclipse ADT plugin (version 0.9.x) offers new Wizards to let you
-create projects targeted for specific Android configurations, generate XML
-resources (such as layouts, animations, and menus), generate alternate layouts,
-and export and sign your application for publishing.</li>
-    <li>Improved JUnit support in ADT</li>
-    <li>Easier profiling of performance</li>
-    <li>Easier management of localized applications. You can now include or
-exclude locale resources when building your APK from a single
-Android project.</li>
-    <li>A new tool called "android" replaces the activitycreator script.</li>
-  </ul>
-
-<p>For details about the Android platforms included in the SDK &mdash; including
-bug fixes, features, and API changes &mdash; please read the <a
-href="{@docRoot}about/versions/android-1.5.html">Android 1.5 version notes</a>.</p>
-
-<h3>Installation and Upgrade Notes</h3>
-
-<p>If you've been developing an application using an Android 1.1 SDK, you need
-to make a few changes to your development environment to migrate to the new SDK.
-Tools and documentation are provided to assist you. No changes to the source
-code of an existing application should be needed, provided that your application
-is not using Android internal structures or APIs.</p>
-
-<p>To ensure that your existing application will work properly on a device
-running the latest version of the Android platform, you are strongly encouraged
-to migrate the application to the new SDK, compile it using the platform
-matching the application's original API Level, and run it against the most
-current platform. </p>
-
-<h3>SDK Add-Ons</h3>
-
-<p>This version of the SDK introduces support for SDK add-ons, which extend the
-Android SDK to give you access to one or more external Android libraries and/or
-a customized (but compliant) system image that can run in the emulator. The
-purpose of an SDK add-on is to give you a way to develop applications for a
-specific actual device (or family of devices) that extends the APIs available to
-Android applications through external libraries or system customizations. </p>
-
-<p>From the perspective of your Android development environment, an SDK add-on
-is similar to any of the Android platform targets included in the SDK &mdash; it
-includes an external library, a system image, as well as custom emulator skins
-and system properties. The add-on differs in that the Android platform it
-provides may include customized UI, resources, or behaviors, a different set of
-preinstalled applications, or other similar modifications. 
-
-<p>The SDK includes a single SDK add-on &mdash; the Google APIs add-on. The
-Google APIs add-on gives your application access to the com.google.android.maps
-external library that is included on many (if not most) Android-powered devices. 
-The Google APIs add-on also includes a {@link android.location.Geocoder Geocoder}
-backend service implementation. For more information, see the "Maps External 
-Library" section below. </p>
-
-<h3>Android Virtual Devices (AVDs)</h3>
-
-<p>The SDK now gives you the capability to compile an application against any
-one of several system targets, then run it in the emulator on top of any
-compatible system image. There are two types of targets:</p>
-<ul>
-<li>Targets that represent core Android platform versions. </li>
-<li>Targets that are SDK add-ons, which typically provide application access to
-one or more external libraries and/or a customized (but compliant) system image
-that can run in the emulator. 
-</ul>
-
-<p>A new tool called "android" lets you discover what targets and AVDs are
-available to use.</p>
-
-<p>For more information about AVDs, see <a
-href="{@docRoot}tools/devices/index.html">Creating and Managing Virtual Devices</a>
-
-<h3>Other Notes</h3>
-
-<p><strong>Maps External Library</strong></p>
-
-<p>In previous versions of the SDK, the com.google.android.maps package was
-included in the standard Android library and system image. In the Android 1.5
-SDK, that is not the case. The Android 1.5 library and system image do not
-include the Maps external library (com.google.android.maps). However, the Maps
-external library is available as part of the Google APIs add-on for the Android
-SDK, downloadable from this location: </p>
-
-<p style="margin-left:2em;"><a
-href="http://code.google.com/android/add-ons/google-apis">http://code.google.com
-/android/add-ons/google-apis</a> </p>
-
-<p>For your convenience, the Google APIs add-on is included in the SDK. </p>
-
-<p>For information about how to register for a Maps API Key, see 
-<a href="http://code.google.com/android/add-ons/google-apis/mapkey.html">
-Obtaining a Maps API Key</a>.</p>
-
-<p><strong>USB Drivers for Windows</strong></p>
-
-<p>If you are using Windows and want to develop or test your application on an
-Android-powered device (such as the T-Mobile G1), you need an appropriate USB
-driver. For your convenience, the Windows version of the Android SDK includes
-these USB drivers that you can install, to let you develop on the device:</p>
-
-<ul>
-<li>USB driver for 32-bit XP and Vista</li>
-<li>USB driver for 64-bit Vista only</li>
-</ul>
-
-<p>For driver installation or
-upgrade instructions, see  <a
-href="{@docRoot}sdk/win-usb.html">USB Driver for Windows</a>.</p>
-</p>
-
-<h3>Resolved Issues, Changes</h3>
-
-<p><strong>Media</strong></p>
-<ul>
-<li>Updated documentation for {@link android.media.SoundPool
-android.media.SoundPool}</li>
-<li>{@link android.webkit.WebView} objects no longer automatically save
-thumbnails. The {@link android.webkit.WebView#capturePicture() capturePicture()}
-method will need to be called manually.</li>
-</ul>
-
-<h3>Known Issues</h3>
-
-<p><strong>Sensor problems in Emulator</strong></p>
-
-<ul>
-<li>If your application uses the Sensor API and you are running it in the
-emulator on the Android 1.5 system image, you may experience problems. Your
-application may generate ANR messages or crash when using the sensors. The
-problem is being investigated.</li>
-</ul>
-
-<p><strong>Other</strong></p>
-
-<ul>
-<li>We regret to inform developers that Android 1.5 will not include support for
-the Zilog Z80 processor architecture.</li>
-</ul>
-
-
-<h2 id="1.1_r1">Android 1.1 SDK, Release 1</h2>
-
-<p>This SDK provides the development tools and Android system image you need to
-create applications for Android-powered devices. Applications developed on this
-SDK will be compatible with mobile devices running the Android 1.1 platform.
-</p>
-
-<p>This release provides an updated system image (Android 1.1), updated
-documentation, and the same set of development tools provided in the Android 1.0
-r2 SDK. The updated system image includes bug fixes and some smaller features,
-as well as a few minor API changes from the 1.0 version. </p>
-
-<p>For details about the Android 1.1 system image included in the SDK &mdash;
-including bug fixes, features, and API changes &mdash; please read the <a
-href="{@docRoot}about/versions/android-1.1.html">Android 1.1 version notes</a>.</p>
-
-<h3>App Versioning for Android 1.1</h3>
-
-<p>If you are using this SDK to build an application that is compatible
-<em>only</em> with Android-powered devices running the Android 1.1 platform,
-please note that you <strong>must</strong> set the the
-<code>android:minSdkVersion</code> attribute in the application's manifest to
-the API Level of Android 1.1 &mdash; "2".</p>
-
-<p>Specifically, you specify the <code>android:minSdkVersion</code> attribute in
-a <code>&lt;uses-sdk&gt;</code> element as a child of
-<code>&lt;manifest&gt;</code> in the manifest file. When set, the attribute
-looks like this: </p>
-
-<pre><code>&lt;manifest&gt;
-  ...
-  &lt;uses-sdk android:minSdkVersion="2" /&gt;
-  ...
-&lt;/manifest&gt;</code>
-</pre>
-
-<p>By setting <code>android:minSdkVersion</code> in this way, you ensure that
-users will only be able to install your application if their devices are running
-the Android 1.1 platform. In turn, this ensures that your application will
-function properly on their devices, especially if it uses APIs introduced in
-Android 1.1. </p>
-
-<p>If your application uses APIs introduced in Android 1.1 but does not declare
-<code>&lt;uses-sdk android:minSdkVersion="2" /&gt;</code>, then it will run properly on
-Android 1.1 devices but <em>not</em> on Android 1.0 devices. </p>
-
-<p>If your application does not use any new APIs introduced in Android 1.1, you
-can indicate Android 1.0 compatibility by removing <code>android:minSdkVersion</code> or
-setting the attribute to "1". However, before publishing your application, you
-must make sure to compile your application against the Android 1.0 system image
-(available in the Android 1.0 SDK), to ensure that it builds and functions
-properly for Android 1.0 devices. You should test the application against system
-images corresponding to the API Levels that the application is designed to be
-compatible with.</p>
-
-<p>If you are sure your application is not using Android 1.1 APIs and has no
-need to use them, you might find it easier to keep working in the Android 1.0
-SDK, rather than migrating to the Android 1.1 SDK and having to do additional
-testing.</p>
-
-
-<h3>ADT Plugin Compatibility</h3>
-
-<p>For this version of the SDK &mdash; Android 1.1 SDK, Release 1
-&mdash; the compatible version of the Android Development Tools (ADT)
-Plugin for Eclipse is <strong>0.8.0</strong>. If you are using a
-previous version of ADT, you should update to the latest version for use
-with this SDK. For information about how to update your ADT plugin, see
-<a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin for Eclipse</a>.</p>
-
-<h3>Installation and Upgrade Notes</h3>
-
-<p>If you've been developing an application using an Android 1.0 SDK no
-changes to your application are needed. You may want to wipe application
-user data (emulator option <code>-wipe-data</code>) when running your
-application on the Android 1.1 emulator for the first time.</p>
-
-<h3>Other Notes</h3>
-
-<p><strong>MapView API Key</strong></p>
-
-<p>com.google.android.maps.MapView is a class that lets you
-easily integrate Google Maps into your application. Before you can
-access the maps data, you will need to register with the Google Maps
-service and receive a Maps API Key, which you then add to your MapView
-for authentication to the server.</p>
-
-<p>Developers should note that the registration service for MapView is now
-active and Google Maps is actively enforcing the Maps API Key requirement. 
-For information about how to register for a Maps API Key, see 
-<a href="http://code.google.com/android/add-ons/google-apis/mapkey.html">
-Obtaining a Maps API Key</a>.</p>
-
-<p><strong>USB Drivers for Windows</strong></p>
-
-<p>If you using Windows and want to develop or test your application on an
-Android-powered device (such as the T-Mobile G1), you need an appropriate USB
-driver. For your convenience, the Windows version of the Android SDK includes
-these USB drivers that you can install, to let you develop on the device:</p>
-
-<ul>
-<li>USB driver for 32-bit XP and Vista</li>
-<li>USB driver for 64-bit Vista only</li>
-</ul>
-
-<p>The USB driver files are located in the
-<code>&lt;SDK&gt;/usb_driver</code> directory. For details and
-installation instructions, see <a
-href="{@docRoot}tools/device.html#setting-up">Connecting Hardware Devices</a>.</p>
-</p>
-
-<h3>Resolved Issues, Changes</h3>
-
-<p><strong>Emulator</strong></p>
-<ul>
-<li>Emulator now saves the user image in &lt;android&gt;/SDK1.1/</code></li>
-</ul>
-
-<h3>Known Issues</h3>
-
-<p><strong>JUnit and Eclipse/ADT</strong></p>
-<ul>
-<li>If you are developing in Eclipse/ADT and want to add JUnit test
-classes, you can do so. However, you need to set up a custom JUnit configuration
-before your tests will run properly. For detailed information about how to set
-up the JUnit configuration, see the troubleshooting topic <a
-href="{@docRoot}resources/faq/troubleshooting.html#addjunit">Running a Junit test class
-in Eclipse</a>.</li>
-</ul>
-
-<p><strong>Other</strong></p>
-
-<ul>
-<li>It is not possible to send MMS messages between emulator instances. </li>
-<li>In some cases, you may encounter problems when using the browser on an
-emulator started with the command-line option <code>-http-proxy</code>. </li>
-<li>On the OSX platform, if you manually remove the ~/.android directory
-using <code>rm -rf ~/.android</code>, then try to run 
-the emulator, it crashes. This happens because the emulator fails to create 
-a new .android directory before attempting to create the child SDK1.0 directory.
-To work around this issue, manually create a new .android directory using
-<code>mkdir ~/.android</code>, then run the emulator. The emulator 
-creates the SDK1.0 directory and starts normally. </li>
-<li>We regret to inform developers that Android 1.1 will not include support 
-for ARCNet network interfaces.</li>
-<li>The final set of Intent patterns honored by Android 1.0 has not yet been
-fully documented. Documentation will be provided in future releases.</li>
-<li>In ADT Editor, you can add at most ten new resource values at a time,
-in a given res/values/*.xml, using the form in the Android Resources pane. 
-If you add more than ten, the Android Resources pane will not display the
-attributes fields for the additional resource entries. To work around this 
-problem, you can close the file in the editor and open it again, or you 
-can edit the resource entries in the XML text mode. </li>
-<li>The emulator's battery-control commands (<code>power &lt;option&gt</code>)
-are not working in this release.</li>
-</ul>
-
-
-<h2 id="1.0_r2">Android 1.0 SDK, Release 2</h2>
-
-<p>This SDK release includes the Android 1.0 platform and application API.
-Applications developed on this SDK will be compatible with mobile devices
-running the Android 1.0 platform.</p>
-
-<p>This release includes mainly bug fixes, although some smaller features were
-added.</p>
-
-<h3>ADT Plugin Compatibility</h3>
-
-<p>For this release of the SDK, the compatible version of the Android
-Development Tools (ADT) Plugin for Eclipse is <strong>0.8.0</strong>. If you are
-using a previous version of ADT, you should update to the latest version for use
-with this SDK. For information about how to update your ADT plugin, see <a
-href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin for Eclipse</a>.</p>
-
-<h3>Other Notes</h3>
-
-<p><strong>T-Mobile G1 Compatibility</strong></p>
-
-<p>This version of the SDK has been tested for compatibility with the first 
-Android-powered mobile device, the T-Mobile
-G1. </p>
-
-<p><strong>MapView API Key</strong></p>
-
-<p>MapView is a class that lets you easily integrate Google Maps into your
-application. Before you can access the maps data, you will need to register with
-the Google Maps service and receive a Maps API Key, which you then add to your
-MapView for authentication to the server.</p>
-
-<p>Developers should note that the registration service for MapView is now
-active and Google Maps is actively enforcing the Maps API Key requirement. For
-information about how to register for a Maps API Key, see <a
-href="http://code.google.com/android/add-ons/google-apis/mapkey.html">http://code.google.com/android/add-ons/google-apis/mapkey.html</a>.
-</p>
-
-<p><strong>USB Driver for Windows</strong></p>
-<p>If you using Windows and want to develop or test your application on an
-Android-powered device (such as the T-Mobile G1), you need an appropriate USB
-driver. For your convenience, the Windows version of the Android SDK includes a
-USB driver that you can install, to let you develop on the device. The USB
-driver files are located in the <code>&lt;SDK&gt;/usb_driver</code> directory. 
-
-</p>
-
-<h3>Resolved Issues, Changes</h3>
-<ul>
-<li>The android.jar in this SDK release now includes several classes that were
-missing from the previous SDK. </li>
-<li>The android.R.styleable class and its fields were removed from the public
-API, to better ensure forward-compatibility for applications. The constants
-declared in android.R.styleable were platform-specific and subject to arbitrary
-change across versions, so were not suitable for use by applications. You can
-still access the platform's styleable attributes from your resources or code. To
-do so, declare a custom resource element using a
-<code>&lt;declare-styleable&gt;</code> in your project's res/values/R.attrs
-file, then declare the attribute inside. For examples, see 
-&lt;sdk&gt;/samples/ApiDemos/res/values/attrs.xml. For more information about
-custom resources, see <a
-href="{@docRoot}guide/topics/resources/available-resources.html#customresources">Custom
-Layout Resources</a>. Note that the android.R.styleable documentation is still
-provided in the SDK, but only as a reference of the platform's styleable
-attributes for the various elements.</li>
-<li>The VM now properly ensures that private classes are not 
-available to applications through reflection. If you were using reflection
-to access private classes in a previous release, you will now get a run-time 
-error. </li>
-
-<li>The Settings and Email applications are now included in the SDK and
-available in the emulator.</li>
-<li>We regret to inform developers that SDK 1.0_r2 does not support MFM, RLL, 
-or Winchester hard disk drives.</li>
-<li>In the emulator, the control key for enabling/disabling trackball mode 
-is changed from Control-T to F6. You can also enter trackball mode temporarily
-using the Delete key. While the key is pressed, you can send trackball events.</li>
-</ul>
-
-<p>Unless otherwise noted, Known Issues from the previous SDK release also apply
-to this release.</p>
-
-
-
-
-
-
-<h2 id="1.0_r1">Android 1.0 SDK, Release 1</h2>
-
-<p>This SDK release is the first to include the Android 1.0 platform and application API. Applications developed on this SDK will be compatible with mobile devices running the Android 1.0 platform, when such devices are available.</p>
-
-<p>This release includes mainly bug fixes, although some smaller features were added. The Android 1.0 also includes several API changes from the 0.9 version. For those porting from the M5 release, the SDK also includes the legacy changes overview and API Differences Reports. See the current Overview of Changes for more information. </p>
-
-<h3>ADT Plugin Compatibility</h3>
-
-<p>For this version of the SDK &mdash; Android 1.0 SDK, Release 1 &mdash; the compatible version of the Android Development Tools (ADT) Plugin for Eclipse is <strong>0.8.0</strong>. If you are using a previous version of ADT, you should update to the latest version for use with this SDK. For information about how to update your ADT plugin, see <a href="{@docRoot}sdk/1.0_r1/upgrading.html">Upgrading the SDK</a>.</p>
-
-<h3>Installation and Upgrade Notes</h3>
-
-<p>If you've been developing an application using a previous SDK version and you want the application to run on Android-powered mobile devices, you must port the application to the Android 1.0 SDK. Please see <a href="{@docRoot}sdk/1.0_r1/upgrading.html">Upgrading the SDK</a> for detailed instructions on how to make the transition to this release.  Be sure to wipe application user data (emulator option <code>-wipe-data</code>) when running your application on the Android 1.0 SDK emulator.</p>
-
-<h3>Other Notes</h3>
-
-<p><strong>MapView API Key</strong></p>
-
-<p>MapView is a class that lets you easily integrate Google Maps into your application. Before you can access the maps data, you will need to register with the Google Maps service and receive a Maps API Key, which you then add to your MapView for authentication to the server.</p>
-
-<p>Currently, the registration service for MapView is not yet active and Google Maps is not yet enforcing the Maps API Key requirement. However, note that the registration service will be activated soon, so that MapViews in any application deployed to a mobile device will require registration and a valid Maps API Key. </p>
-
-<p>As soon as the registration service becomes available, we will update the page at <a href="http://code.google.com/android/add-ons/google-apis/mapkey.html">http://code.google.com/android/add-ons/google-apis/mapkey.html</a> with details about how and where to register. Please check that page periodically for registration information, if you are using a MapView.</p>
-
-
-<h3>Resolved Issues, Changes</h3>
-
-<p><strong>Emulator</strong></p>
-<ul>
-<li>Emulator now saves the user image in &lt;android&gt;/SDK1.0/</code></li>
-<li>Fixed EsounD-related freezes on Linux.</li>
-<li>Fixed the documentation in -help-audio. '-audio list' doesn't work, one
- needs to call -help-audio-out and -help-audio-in to get the list of valid
- audio backends.</li>
-<li>Fixed scrollwheel Dpad emulation in rotated mode. before that, using the
- scroll-wheel would always generated Dpad Up/Down events, even when in
- landscape mode.</li>
-
-<li>Several Obsolete command options were removed.</li>
-<li>Setting the network speed through the console or the -netspeed option will
- properly modify the connectivity icon on the device.</li>
-<li>Setting the GSM voice registration state to 'roaming' in the console will
- properly modify the voice icon on the device</li>
-</ul>
-
-<p><strong>SQLite</strong></p>
-<ul>
-<li>SQLite is now included in the SDK package on all platforms. </li>
-</ul>
-
-<p><strong>Other</strong></p>
-
-<ul>
-<li>It is not possible to send MMS messages between emulator instances. </li>
-<li>In some cases, you may encounter problems when using the browser on an
-emulator started with the command-line option <code>-http-proxy</code>. </li>
-
-<li>We regret to inform developers that Android 1.0 will not include support for
-dot-matrix printers.</li>
-<li>On the OSX platform, if you manually remove the ~/.android directory
-using <code>rm -rf ~/.android</code>, then try to run 
-the emulator, it crashes. This happens because the emulator fails to create 
-a new .android directory before attempting to create the child SDK1.0 directory.
-To work around this issue, manually create a new .android directory using
-<code>mkdir ~/.android</code>, then run the emulator. The emulator 
-creates the SDK1.0 directory and starts normally. </li>
-<li>The final set of Intent patterns honored by Android 1.0 has not yet been
-fully documented. Documentation will be provided in future releases.</li>
-<li>In ADT Editor, you can add at most ten new resource values at a time,
-in a given res/values/*.xml, using the form in the Android Resources pane. 
-If you add more than ten, the Android Resources pane will not display the
-attributes fields for the additional resource entries. To work around this 
-problem, you can close the file in the editor and open it again, or you 
-can edit the resource entries in the XML text mode. </li>
-<li>The emulator's battery-control commands (<code>power &lt;option&gt</code>)
-are not working in this release.</li>
-
-</ul>
-
diff --git a/docs/html/tools/sdk/eclipse-adt.jd b/docs/html/tools/sdk/eclipse-adt.jd
index 2433ec9..7b0b5a8 100644
--- a/docs/html/tools/sdk/eclipse-adt.jd
+++ b/docs/html/tools/sdk/eclipse-adt.jd
@@ -57,6 +57,78 @@
 <div class="toggle-content opened">
   <p><a href="#" onclick="return toggleContent(this)">
     <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
+      alt=""/>ADT 22.0.4</a> <em>(July 2013)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+<dl>
+  <dt>Dependencies:</dt>
+
+  <dd>
+    <ul>
+      <li>Java 1.6 or higher is required for ADT 22.0.4.</li>
+      <li>Eclipse Helios (Version 3.6.2) or higher is required for ADT 22.0.4.</li>
+      <li>ADT 22.0.4 is designed for use with <a href="{@docRoot}tools/sdk/tools-notes.html">SDK
+      Tools r22.0.4</a>. If you haven't already installed SDK Tools r22.0.4 into your SDK, use the
+      Android SDK Manager to do so.</li>
+    </ul>
+  </dd>
+
+  <dt>General Notes:</dt>
+  <dd>
+    <ul>
+      <li>Fixed problem with compiling Renderscript code.</li>
+      <li>Improved Gradle export with better workflow and error reporting.</li>
+      <li>Improved Gradle multi-module export feature.</li>
+      <li>Updated build logic to force exporting of the classpath containers unless you are using
+        the Maven plugin.</li>
+    </ul>
+  </dd>
+
+</dl>
+</div>
+</div>
+
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+      alt=""/>ADT 22.0.1</a> <em>(May 2013)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+<dl>
+  <dt>Dependencies:</dt>
+
+  <dd>
+    <ul>
+      <li>Java 1.6 or higher is required for ADT 22.0.1.</li>
+      <li>Eclipse Helios (Version 3.6.2) or higher is required for ADT 22.0.1.</li>
+      <li>ADT 22.0.1 is designed for use with <a href="{@docRoot}tools/sdk/tools-notes.html">SDK
+      Tools r22.0.1</a>. If you haven't already installed SDK Tools r22 into your SDK, use the
+      Android SDK Manager to do so.</li>
+    </ul>
+  </dd>
+
+  <dt>General Notes:</dt>
+  <dd>
+    <ul>
+      <li>Fixed issue with Lint ServiceCast check and fully qualified class names.
+        (<a href="http://code.google.com/p/android/issues/detail?id=55403">Issue 55403</a>)</li>
+      <li>Fixed crash issue with Lint ArraySizeDetector check.
+        (<a href="http://code.google.com/p/android/issues/detail?id=54887">Issue 54887</a>)</li>
+      <li>Fixed problem with the Gradle export feature.</li>
+      <li>Fixed version check issue for the ADT Plugin.</li>
+    </ul>
+  </dd>
+
+</dl>
+</div>
+</div>
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
       alt=""/>ADT 22.0.0</a> <em>(May 2013)</em>
   </p>
 
@@ -131,7 +203,7 @@
         &gt; Rename</strong>.</li>
       <li>Updated XML Editor to improve double click handling.</li>
       <li>Added code completion improvements for custom views, theme references and class
-        references. For example, code completion in a {@code &lt;fragment android:name=””&gt;} tag
+        references. For example, code completion in a {@code &lt;fragment android:name="" &gt;} tag
         now suggests completion with a list of fragment classes. Similarly, code completion in the
         manifest now offers implementations suitable for the given tag.</li>
       <li>Updated the <strong>Project Import</strong> dialog so that it shows a table for all
diff --git a/docs/html/tools/sdk/installing.jd b/docs/html/tools/sdk/installing.jd
deleted file mode 100644
index d7f19577..0000000
--- a/docs/html/tools/sdk/installing.jd
+++ /dev/null
@@ -1,590 +0,0 @@
-page.title=Installing the SDK
-
-@jd:body
-
-
-<script type="text/javascript">
-function toggleDiv(link) {
-  var toggleable = $(link).parent();
-  if (toggleable.hasClass("closed")) {
-    //$(".toggleme", toggleable).slideDown("fast");
-    toggleable.removeClass("closed");
-    toggleable.addClass("open");
-    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot +
-"assets/images/triangle-opened.png"));
-  } else {
-    //$(".toggleme", toggleable).slideUp("fast");
-    toggleable.removeClass("open");
-    toggleable.addClass("closed");
-    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot +
-"assets/images/triangle-closed.png"));
-  }
-  return false;
-}
-</script>
-<style>
-.toggleable {
-  padding: .25em 1em 0em 1em;
-  margin-bottom: 0;
-}
-.toggleme {
-  padding: 1em 1em 0 2em;
-  line-height:1em;
-}
-.toggleable a {
-  text-decoration:none;
-}
-.toggleme a {
-  text-decoration:underline;
-}
-.toggleable.closed .toggleme {
-  display:none;
-}
-#jd-content .toggle-img {
-  margin:0;
-}
-</style>
-
-<div id="qv-wrapper">
-<div id="qv">
-
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#Preparing">1. Preparing Your Development Computer</a></li>
-    <li><a href="#Installing">2. Downloading the SDK Starter Package</a></li>
-    <li><a href="#InstallingADT">3. Installing the ADT Plugin for Eclipse</a></li>
-    <li><a href="#AddingComponents">4. Adding Platforms and Other Packages</a>
-      <ol>
-        <li><a href="#components">Available Packages</a></li>
-        <li><a href="#which">Recommended Packages</a></li>
-      </ol></li>
-    <li><a href="#sdkContents">5. Exploring the SDK (Optional)</a></li>
-    <li><a href="#NextSteps">Next Steps</a></li>
-    <li><a href="#troubleshooting">Troubleshooting</a></li>
-  </ol>
-
-<h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin for Eclipse</a></li>
-    <li><a href="{@docRoot}sdk/exploring.html">Exploring the SDK</a></li>
-  </ol>
-
-</div>
-</div>
-
-<p>This page describes how to install the Android SDK
-and set up your development environment for the first time.</p>
-
-<p>If you encounter any problems during installation, see the
-<a href="#troubleshooting">Troubleshooting</a> section at the bottom of
-this page.</p>
-
-<h4>Updating?</h4>
-
-<p>If you already have an Android SDK, use the Android SDK Manager tool to install
-updated tools and new Android platforms into your existing environment. For information about how to
-do that, see <a href="{@docRoot}sdk/exploring.html">Exploring the SDK</a>.</p>
-
-
-<h2 id="Preparing">Step 1. Preparing Your Development Computer</h2>
-
-<p>Before getting started with the Android SDK, take a moment to confirm that
-your development computer meets the <a href="requirements.html">System
-Requirements</a>. In particular, you might need to install the <a
-href="http://java.sun.com/javase/downloads/index.jsp">JDK</a>, if you don't have it already. </p>
-
-<p>If you will be developing in Eclipse with the Android Development
-Tools (ADT) Plugin&mdash;the recommended path if you are new to
-Android&mdash;make sure that you have a suitable version of Eclipse
-installed on your computer as described in the
-<a href="requirements.html">System Requirements</a> document.
-If you need to install Eclipse, you can download it from this location: </p>
-
-<p style="margin-left:2em;"><a href=
-"http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a></p>
-
-<p>The "Eclipse Classic" version is recommended. Otherwise, a Java or
-RCP version of Eclipse is recommended.</p>
-
-
-<h2 id="Installing">Step 2. Downloading the SDK Starter Package</h2>
-
-<p>The SDK starter package is not a full
-development environment&mdash;it includes only the core SDK Tools, which you can
-use to download the rest of the SDK packages (such as the latest Android platform).</p>
-
-<p>If you haven't already, get the latest version of the SDK starter package from the <a
-href="{@docRoot}sdk/index.html">SDK download page</a>.</p>
-
-<p>If you downloaded a {@code .zip} or {@code .tgz} package (instead of the SDK installer), unpack
-it to a safe location on your machine. By default, the SDK files are unpacked
-into a directory named <code>android-sdk-&lt;machine-platform&gt;</code>.</p>
-
-<p>If you downloaded the Windows installer ({@code .exe} file), run it now and it will check
-whether the proper Java SE Development Kit (JDK) is installed (installing it, if necessary), then
-install the SDK Tools into a default location (which you can modify).</p>
-
-<p>Make a note of the name and location of the SDK directory on your system&mdash;you will need to
-refer to the SDK directory later, when setting up the ADT plugin and when using
-the SDK tools from the command line.</p>
-
-
-<h2 id="InstallingADT">Step 3. Installing the ADT Plugin for Eclipse</h2>
-
-<p>Android offers a custom plugin for the Eclipse IDE, called Android
-Development Tools (ADT), that is designed to give you a powerful, integrated
-environment in which to build Android applications. It extends the capabilites
-of Eclipse to let you quickly set up new Android projects, create an application
-UI, debug your applications
-using the Android SDK tools, and even export signed (or unsigned) APKs in order
-to distribute your application. In general, developing in Eclipse with ADT is a
-highly recommended approach and is the fastest way to get started with Android.
-</p>
-
-<p>If you'd like to use ADT for developing Android applications, install it now.
-Read <a href="{@docRoot}tools/sdk/eclipse-adt.html#installing">Installing the ADT Plugin</a> for
-step-by-step installation instructions, then return here to continue the
-last step in setting up your Android SDK.</p>
-
-<p>If you prefer to work in a different IDE, you do not need to
-install Eclipse or ADT. Instead, you can directly use the SDK tools to build and
-debug your application. The <a href="{@docRoot}tools/workflow/index.html">Introduction</a>
-to Android application development outlines the major steps that you need to complete when
-developing in Eclipse or other IDEs.</p>
-
-
-
-<h2 id="AddingComponents">Step 4. Adding Platforms and Other Packages</h2>
-
-<p>The last step in setting up your SDK is using the Android SDK Manager (a
-tool included in the SDK starter package) to download essential SDK packages into your development
-environment.</p>
-
-<p>The SDK uses a modular structure that separates the major parts of the SDK&mdash;Android platform
-versions, add-ons, tools, samples, and documentation&mdash;into a set of separately installable
-packages. The SDK starter package, which you've already downloaded, includes only a single
-package: the latest version of the SDK Tools. To develop an Android application, you also need to
-download at least one Android platform and the associated platform tools. You can add other
-packages and platforms as well, which is highly recommended.</p>
-
-<p>If you used the Windows installer, when you complete the installation wizard, it will launch the
-Android SDK Manager with a default set of platforms and other packages selected
-for you to install. Simply click <strong>Install</strong> to accept the recommended set of
-packages and install them. You can then skip to <a href="#sdkContents">Step 5</a>, but we
-recommend you first read the section about the <a href="#components">Available Packages</a> to
-better understand the packages available from the Android SDK Manager.</p>
-
-<p>You can launch the Android SDK Manager in one of the following ways:</p>
-<ul>
-  <li>From within Eclipse, select <strong>Window &gt; Android SDK Manager</strong>.</li>
-  <li>On Windows, double-click the <code>SDK Manager.exe</code> file at the root of the Android
-SDK directory.</li>
-  <li>On Mac or Linux, open a terminal and navigate to the <code>tools/</code> directory in the
-Android SDK, then execute: <pre>android</pre> </li>
-</ul>
-
-<p>To download packages, use the graphical UI of the Android SDK
-Manager to browse the SDK repository and select new or updated
-packages (see figure 1). The Android SDK Manager installs the selected packages in
-your SDK environment. For information about which packages you should download, see <a
-href="#which">Recommended Packages</a>.</p>
-
-<img src="/images/sdk_manager_packages.png" />
-<p class="img-caption"><strong>Figure 1.</strong> The Android SDK Manager's
-<strong>Available Packages</strong> panel, which shows the SDK packages that are
-available for you to download into your environment.</p>
-
-
-<h3 id="components">Available Packages</h3>
-
-<p>By default, there are two repositories of packages for your SDK: <em>Android
-Repository</em> and <em>Third party Add-ons</em>.</p>
-
-<p>The <em>Android Repository</em> offers these types of packages:</p>
-
-<ul>
-<li><strong>SDK Tools</strong> &mdash; Contains tools for debugging and testing your application
-and other utility tools. These tools are installed with the Android SDK starter package and receive
-periodic updates. You can access these tools in the <code>&lt;sdk&gt;/tools/</code> directory of
-your SDK. To learn more about
-them, see <a href="{@docRoot}tools/index.html#tools-sdk">SDK Tools</a> in the
-developer guide.</li>
-
-<li><strong>SDK Platform-tools</strong> &mdash; Contains platform-dependent tools for developing
-and debugging your application. These tools support the latest features of the Android platform and
-are typically updated only when a new platform becomes available. You can access these tools in the
-<code>&lt;sdk&gt;/platform-tools/</code> directory. To learn more about them, see <a
-href="{@docRoot}tools/index.html#tools-platform">Platform Tools</a> in the
-developer guide.</li>
-
-<li><strong>Android platforms</strong> &mdash; An SDK platform is
-available for every production Android platform deployable to Android-powered devices. Each
-SDK platform package includes a fully compliant Android library, system image, sample code,
-and emulator skins. To learn more about a specific platform, see the list of platforms that appears
-under the section "Downloadable SDK Packages" on the left part of this page.</li>
-
-<li><strong>USB Driver for Windows</strong> (Windows only) &mdash; Contains driver files
-that you can install on your Windows computer, so that you can run and debug
-your applications on an actual device. You <em>do not</em> need the USB driver unless
-you plan to debug your application on an actual Android-powered device. If you
-develop on Mac OS X or Linux, you do not need a special driver to debug
-your application on an Android-powered device. See <a
-href="{@docRoot}tools/device.html">Using Hardware Devices</a> for more information
-about developing on a real device.</li>
-
-<li><strong>Samples</strong> &mdash; Contains the sample code and apps available
-for each Android development platform. If you are just getting started with
-Android development, make sure to download the samples to your SDK. <!--The download
-includes not only a set of very useful sample apps, but also the source for <a
-href="{@docRoot}training/basics/firstapp/index.html">Building Your First App</a> and other
-tutorials. --></li>
-
-<li><strong>Documentation</strong> &mdash; Contains a local copy of the latest
-multiversion documentation for the Android framework API. </li>
-</ul>
-
-<p>The <em>Third party Add-ons</em> provide packages that allow you to create a development
-environment using a specific Android external library (such as the Google Maps library) or a
-customized (but fully compliant) Android system image. You can add additional Add-on repositories by
-clicking <strong>Add Add-on Site</strong>.</p>
-
-
-<h3 id="which">Recommended Packages</h3>
-
-<p>The SDK repository contains a range of packages that you can download.
-Use the table below to determine which packages you need, based on whether you
-want to set up a basic, recommended, or full development environment:
-</p>
-
-<table style="width:95%">
-
-<tr>
-<th>Environment</th>
-<th>SDK&nbsp;Package</th>
-<th>Comments</th>
-</tr>
-
-<tr>
-<td rowspan="3" style="font-size:.9em;background-color:#FFE;">Basic</td>
-<td style="font-size:.9em;background-color:#FFE;">SDK Tools</td>
-<td style="font-size:.9em;background-color:#FFE;">If you've just installed
-the SDK starter package, then you already have the latest version of this package. The
-SDK Tools package is required to develop an Android application. Make sure you keep this up to
-date.</td>
-</tr>
-
-<tr>
-<td style="font-size:.9em;background-color:#FFE;">SDK Platform-tools</td>
-<td style="font-size:.9em;background-color:#FFE;">This includes more tools that are required
-for application development. These tools are platform-dependent and typically update only when
-a new SDK platform is made available, in order to support new features in the platform. These
-tools are always backward compatible with older platforms, but you must be sure that you have
-the latest version of these tools when you install a new SDK platform.</td>
-</tr>
-
-<tr>
-<td style="font-size:.9em;background-color:#FFE;">SDK platform</td>
-<td style="font-size:.9em;background-color:#FFE;">You need to download <strong
-style="color:red">at least one platform</strong> into your environment, so that
-you will be able to compile your application and set up an Android Virtual
-Device (AVD) to run it on (in the emulator). To start with, just download the
-latest version of the platform. Later, if you plan to publish your application,
-you will want to download other platforms as well, so that you can test your
-application on the full range of Android platform versions that your application supports.</td>
-</tr>
-<tr>
-<td colspan="2"
-style="border:none;text-align:center;font-size:1.5em;font-weight:bold;">+</td><td
-style="border:none"></td>
-</tr>
-<tr>
-<td rowspan="3">Recommended<br/>(plus Basic)</td>
-<td>Documentation</td>
-<td>The Documentation package is useful because it lets you work offline and
-also look up API reference information from inside Eclipse.</td>
-</tr>
-
-<tr>
-<td>Samples</td>
-<td>The Samples packages give you source code that you can use to learn about
-Android, load as a project and run, or reuse in your own app. Note that multiple
-samples packages are available &mdash; one for each Android platform version. When
-you are choosing a samples package to download, select the one whose API Level
-matches the API Level of the Android platform that you plan to use.</td>
-</tr>
-<tr>
-<td>Usb Driver</td>
-<td>The Usb Driver package is needed only if you are developing on Windows and
-have an Android-powered device on which you want to install your application for
-debugging and testing. For Mac OS X and Linux platforms, no
-special driver is needed.</td>
-</tr>
-<tr>
-<td colspan="2"
-style="border:none;text-align:center;font-size:1.5em;font-weight:bold;">+</td><td
-style="border:none"></td>
-</tr>
-<tr>
-<td rowspan="3">Full<br/>(plus Recommended)</td>
-<td>Google APIs</td>
-<td>The Google APIs add-on gives your application access to the Maps external
-library, which makes it easy to display and manipulate Maps data in your
-application. </td>
-</tr>
-<tr>
-<td>Additional SDK Platforms</td>
-<td>If you plan to publish your application, you will want to download
-additional platforms corresponding to the Android platform versions on which you
-want the application to run. The recommended approach is to compile your
-application against the lowest version you want to support, but test it against
-higher versions that you intend the application to run on. You can test your
-applications on different platforms by running in an Android Virtual Device
-(AVD) on the Android emulator.</td>
-</tr>
-
-</table>
-
-<p>Once you've installed at least the basic configuration of SDK packages, you're ready to start
-developing Android apps. The next section describes the contents of the Android SDK to familiarize
-you with the packages you've just installed.</p>
-
-<p>For more information about using the Android SDK Manager, see the <a
-href="{@docRoot}sdk/exploring.html">Exploring the SDK</a> document. </p>
-
-
-<h2 id="sdkContents">Step 5. Exploring the SDK (Optional)</h2>
-
-<p>Once you've installed the SDK and downloaded the platforms, documentation,
-and add-ons that you need, we suggest that you open the SDK directory and take a look at what's
-inside.</p>
-
-<p>The table below describes the full SDK directory contents, with packages
-installed. </p>
-
-<table>
-<tr>
-<th colspan="3">Name</th><th>Description</th>
-</tr>
-<tr>
-<td colspan="3"><code>add-ons/</code></td>
-<td>Contains add-ons to the Android SDK development
-environment, which let you develop against external libraries that are available on some
-devices. </td>
-</tr>
-<tr>
-<td colspan="3"><code>docs/</code></td>
-<td>A full set of documentation in HTML format, including the Developer's Guide,
-API Reference, and other information. To read the documentation, load the
-file <code>index.html</code> in a web browser.</td>
-</tr>
-<tr>
-<td colspan="3"><code>platform-tools/</code></td>
-<td>Contains platform-dependent development tools that may be updated with each platform release.
-The platform tools include the Android Debug Bridge ({@code adb}) as well as other tools that you
-don't typically use directly. These tools are separate from the development tools in the {@code
-tools/} directory because these tools may be updated in order to support new
-features in the latest Android platform.</td>
-</tr>
-<tr>
-<td colspan="3"><code>platforms/</code></td>
-<td>Contains a set of Android platform versions that you can develop
-applications against, each in a separate directory.  </td>
-</tr>
-<tr>
-<td style="width:2em;"></td>
-<td colspan="2"><code><em>&lt;platform&gt;</em>/</code></td>
-<td>Platform version directory, for example "android-11". All platform version directories contain
-a similar set of files and subdirectory structure. Each platform directory also includes the
-Android library (<code>android.jar</code>) that is used to compile applications against the
-platform version.</td>
-</tr>
-<tr>
-<td colspan="3"><code>samples/</code></td>
-<td>Sample code and apps that are specific to platform version.</td>
-</tr>
-<tr>
-<td colspan="3"><code>tools/</code></td>
-<td>Contains the set of development and profiling tools that are platform-independent, such
-as the emulator, the Android SDK Manager, the AVD Manager, <code>ddms</code>,
-<code>hierarchyviewer</code>
-and more. The tools in this directory may be updated at any time using the Android SDK
-Manager and are independent of platform releases.</td>
-</tr>
-<tr>
-<td colspan="3"><code>SDK Readme.txt</code></td>
-<td>A file that explains how to perform the initial setup of your SDK,
-including how to launch the Android SDK Manager tool on all
-platforms.</td>
-</tr>
-<tr>
-<td colspan="3"><code>SDK Manager.exe</code></td>
-<td>Windows SDK only. A shortcut that launches the Android SDK
-Manager tool, which you use to add packages to your SDK.</td>
-</tr>
-<!--<tr>
-<td colspan="3"><code>documentation.html</code></td>
-<td>A file that loads the entry page for the local Android SDK
-documentation.</td>
-</tr>-->
-
-</table>
-
-
-<p>Optionally, you might want to add the location of the SDK's <code>tools/</code> and
-<code>platform-tools</code> to your <code>PATH</code> environment variable, to provide easy
-access to the tools.</p>
-
-
-<div class="toggleable closed">
-  <a href="#" onclick="return toggleDiv(this)">
-        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px"
-width="9px" />
-        How to update your PATH</a>
-  <div class="toggleme">
-
-<p>Adding both <code>tools/</code> and <code>platform-tools/</code> to your PATH lets you run
-command line <a href="{@docRoot}tools/index.html">tools</a> without needing to
-supply the full path to the tool directories. Depending on your operating system, you can
-include these directories in your PATH in the following way:</p>
-
-<ul>
-
-  <li>On Windows, right-click on My Computer, and select Properties.
-  Under the Advanced tab, hit the Environment Variables button, and in the
-  dialog that comes up, double-click on Path (under System Variables). Add the full path to the
-  <code>tools/</code> and <code>platform-tools/</code> directories to the path. </li>
-
-  <li>On Linux, edit your <code>~/.bash_profile</code> or <code>~/.bashrc</code> file. Look
-  for a line that sets the PATH environment variable and add the
-  full path to the <code>tools/</code> and <code>platform-tools/</code> directories to it. If you
-  don't see a line setting the path, you can add one:
-  <pre>export PATH=${PATH}:&lt;sdk&gt;/tools:&lt;sdk&gt;/platform-tools</pre>
-  </li>
-
-  <li>On a Mac OS X, look in your home directory for <code>.bash_profile</code> and
-  proceed as for Linux. You can create the <code>.bash_profile</code> if
-  you don't already have one. </li>
-</ul>
-
-</div><!-- end toggleme -->
-</div><!-- end toggleable -->
-
-
-<h2 id="NextSteps">Next Steps</h2>
-<p>Once you have completed installation, you are ready to
-begin developing applications. Here are a few ways you can get started: </p>
-
-<p><strong>Set up the Hello World application</strong></p>
-<ul>
-  <li>If you have just installed the SDK for the first time, go to the <a
-  href="{@docRoot}training/basics/firstapp/index.html">Hello
-  World tutorial</a>. The tutorial takes you step-by-step through the process
-  of setting up your first Android project, including setting up an Android
-  Virtual Device (AVD) on which to run the application.
-</li>
-</ul>
-
-<p class="note">Following the Hello World tutorial is an essential
-first step in getting started with Android development. </p>
-
-<p><strong>Learn about Android</strong></p>
-<ul>
-  <li>Take a look at the <a href="{@docRoot}guide/index.html">Dev
-  Guide</a> and the types of information it provides.</li>
-  <li>Read an introduction to Android as a platform in <a
-  href="{@docRoot}guide/basics/what-is-android.html">What is
-  Android?</a></li>
-  <li>Learn about the Android framework and how applications run on it in
-  <a href="{@docRoot}guide/components/fundamentals.html">Application
-  Fundamentals</a>.</li>
-  <li>Take a look at the Android framework API specification in the <a
-  href="{@docRoot}reference/packages.html">Reference</a> tab.</li>
-</ul>
-
-<p><strong>Explore the development tools</strong></p>
-<ul>
-  <li>Get an overview of the <a
-  href="{@docRoot}tools/index.html">development
-  tools</a> that are available to you.</li>
-  <li>Read the <a href="{@docRoot}tools/workflow/index.html">Introduction</a> to Android
-application development.
-  </li>
-  <li>Read <a href="{@docRoot}tools/device.html">Using Hardware Devices</a> to learn
-how to set up an Android-powered device so you can run and test your application.</li>
-</ul>
-
-<p><strong>Follow the Notepad tutorial</strong></p>
-
-<ul>
-  <li>The <a href="{@docRoot}training/notepad/index.html">
-  Notepad Tutorial</a> shows you how to build a full Android application
-  and provides  helpful commentary on the Android system and API. The
-  Notepad tutorial helps you bring together the important design
-  and architectural concepts in a moderately complex application.
-  </li>
-</ul>
-<p class="note">Following the Notepad tutorial is an excellent
-second step in getting started with Android development. </p>
-
-<p><strong>Explore some code</strong></p>
-
-<ul>
-  <li>The Android SDK includes sample code and applications for each platform
-version. You can browse the samples in the <a
-href="{@docRoot}resources/index.html">Resources</a> tab or download them
-into your SDK using the Android SDK Manager. Once you've downloaded the
-samples, you'll find them in
-<code><em>&lt;sdk&gt;</em>/samples/<em>&lt;platform&gt;/</em></code>. </li>
-</ul>
-
-<p><strong>Visit the Android developer groups</strong></p>
-<ul>
-  <li>Take a look at the <a
-  href="{@docRoot}resources/community-groups.html">Community</a> pages to see a list of
-  Android developers groups. In particular, you might want to look at the
-  <a href="http://groups.google.com/group/android-developers">Android
-  Developers</a> group to get a sense for what the Android developer
-  community is like.</li>
-</ul>
-
-<h2 id="troubleshooting">Troubleshooting</h2>
-
-<h3>Ubuntu Linux Notes</h3>
-
-<ul>
-  <li>If you need help installing and configuring Java on your
-    development machine, you might find these resources helpful:
-    <ul>
-      <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/Java </a></li>
-      <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/JavaInstallation</a></li>
-    </ul>
-  </li>
-  <li>Here are the steps to install Java and Eclipse, prior to installing
-  the Android SDK and ADT Plugin.
-    <ol>
-      <li>If you are running a 64-bit distribution on your development
-      machine, you need to install the <code>ia32-libs</code> package using
-      <code>apt-get:</code>:
-      <pre>apt-get install ia32-libs</pre>
-      </li>
-      <li>Next, install Java: <pre>apt-get install sun-java6-jdk</pre></li>
-      <li>The Ubuntu package manager does not currently offer an Eclipse 3.3
-      version for download, so we recommend that you download Eclipse from
-      eclipse.org (<a
-      href="http://www.eclipse.org/downloads/">http://www.eclipse.org/
-      downloads/</a>). A Java or RCP version of Eclipse is recommended.</li>
-      <li>Follow the steps given in previous sections to install the SDK
-      and the ADT plugin. </li>
-    </ol>
-  </li>
-</ul>
-
-<h3>Other Linux Notes</h3>
-
-<ul>
-  <li>If JDK is already installed on your development computer, please
-  take a moment to make sure that it meets the version requirements listed
-  in the <a href="requirements.html">System Requirements</a>.
-  In particular, note that some Linux distributions may include JDK 1.4 or Gnu
-  Compiler for Java, both of which are not supported for Android development.</li>
-</ul>
diff --git a/docs/html/tools/sdk/older_releases.jd b/docs/html/tools/sdk/older_releases.jd
deleted file mode 100644
index 94baa92..0000000
--- a/docs/html/tools/sdk/older_releases.jd
+++ /dev/null
@@ -1,614 +0,0 @@
-page.title=SDK Archives
-excludeFromSuggestions=true
-@jd:body
-
-<p>This page provides a full list of archived and obsolete SDK releases,
-including non-current versions of active releases and "early look" versions that
-were released before Android 1.0. <strong>These are provided for
-informational and archival purposes only</strong>.</p>
-
-<div class="special">
-<p>If you are just starting to develop applications for Android, please
-download the current <a href="{@docRoot}sdk/index.html">Android
-SDK</a>. With the current Android SDK, you can add any current and previous
-version of the Android platform as a component and use it for
-development and testing.</p>
-<p>If you already have an Android SDK for platform version 1.6 or newer, then
-you do not need to install a new SDK&mdash;especially not one from this page.
-You should install older platforms as components of your existing SDK.
-See <a href="{@docRoot}sdk/exploring.html">Exploring the SDK</a>.</p>
-</div>
-
-
-<h2>Archived SDKs</h2>
-
-<p>The tables below provides Android SDKs that are current in terms of their
-platform version, but do not provide the latest Android development
-environment and tools. Instead of downloading one of these, as a separate
-SDK for each version of the platform, you should instead use the new
-version-neutral Android SDK to download each version of
-the Android platfrom as an individual component.</p>
-
-<p>Please download the current <a
-href="http://developer.android.com/sdk/index.html">Android SDK</a>.</p>
-
-
-<h3>Release 1.6 r1</h3>
- <p><em>September 2009 - <a href="RELEASENOTES.html#1.6_r1">Release
-Notes</a></em></p>
-
-  <table class="download">
-    <tr>
-      <th>Platform</th>
-      <th>Package</th>
-      <th>Size</th>
-      <th>MD5 Checksum</th>
-  </tr>
-  <tr>
-    <td>Windows</td>
-    <td>
-  <a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-windows-1.6_r1.zip">android-sdk-
-windows-1 .6_r1.zip</a>
-    </td>
-    <td>260529085 bytes</td>
-    <td>2bcbacbc7af0363058ca1cac6abad848</td>
-  </tr>
-  <tr class="alt-color">
-    <td>Mac OS X (intel)</td>
-    <td>
-  <a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-mac_x86-1.6_r1.zip">android-sdk-
-mac_x86-1 .6_r1.zip</a>
-    </td>
-    <td>247412515 bytes</td>
-    <td>eb13cc79602d492e89103efcf48ac1f6</td>
-  </tr>
-  <tr>
-    <td>Linux (i386)</td>
-    <td>
-  <a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-linux_x86-1.6_r1.tgz">android-
-sdk- linux_x86-1.6_r1.tgz</a>
-    </td>
-    <td>238224860 bytes</td>
-    <td>b4bf0e610ff6db2fb6fb09c49cba1e79</td>
-  </tr>
-  
-  </table>
-
-
-<h3>Release 1.5 r3</h3>
- <p><em>July 2009 - <a href="RELEASENOTES.html#1.5_r3">Release
-Notes</a></em></p>
-
-  <table class="download">
-    <tr>
-      <th>Platform</th>
-      <th>Package</th>
-      <th>Size</th>
-      <th>MD5 Checksum</th>
-  </tr>
-  <tr>
-    <td>Windows</td>
-    <td>
-  <a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-windows-1.5_r3.zip">android-sdk-
-windows-1 .5_r3.zip</a>
-    </td>
-    <td>191477853 bytes</td>
-    <td>1725fd6963ce69102ba7192568dfc711</td>
-  </tr>
-  <tr class="alt-color">
-    <td>Mac OS X (intel)</td>
-    <td>
-  <a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-mac_x86-1.5_r3.zip">android-sdk-
-mac_x86-1 .5_r3.zip</a>
-    </td>
-    <td>183024673 bytes</td>
-    <td>b1bafdaefdcec89a14b604b504e7daec</td>
-  </tr>
-  <tr>
-    <td>Linux (i386)</td>
-    <td>
-  <a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-linux_x86-1.5_r3.zip">android-
-sdk- linux_x86-1.5_r3.zip</a>
-    </td>
-    <td>178117561 bytes</td>
-    <td>350d0211678ced38da926b8c9ffa4fac</td>
-  </tr>
-  
-  </table>
-
-
-<h3>Release 1.1 r1</h3>
- <p><em>February 2009 - <a href="RELEASENOTES.html#1.1_r1">Release
-Notes</a></em></p>
-
-  <table class="download">
-    <tr>
-      <th>Platform</th>
-      <th>Package</th>
-      <th>Size</th>
-      <th>MD5 Checksum</th>
-  </tr>
-  <tr>
-    <td>Windows</td>
-    <td>
-  <a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-windows-1.1_r1.zip">android-sdk-
-windows-1
-.1_r1.zip</a>
-    </td>
-    <td>86038515 bytes</td>
-    <td>8c4b9080b430025370689e03d20842f3</td>
-  </tr>
-  <tr class="alt-color">
-    <td>Mac OS X (intel)</td>
-    <td>
-  <a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-mac_x86-1.1_r1.zip">android-sdk-
-mac_x86-1
-.1_r1.zip</a>
-    </td>
-    <td>79046151 bytes</td>
-    <td>becf0f1763d61eedce15d2a903d6c1dd</td>
-  </tr>
-  <tr>
-    <td>Linux (i386)</td>
-    <td>
-  <a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-linux_x86-1.1_r1.zip">android-
-sdk-
-linux_x86-1.1_r1.zip</a>
-    </td>
-    <td>79345522 bytes</td>
-    <td>ebcb16b0cd4aef198b4dd9a1418efbf1</td>
-  </tr>
-  
-  </table>
-
-
-<h3>Release 1.0 r2</h3>
- <p><em>November 2008 - <a href="RELEASENOTES.html#1.0_r2">Release
-Notes</a></em></p>
-
-  <table class="download">
-    <tr>
-      <th>Platform</th>
-      <th>Package</th>
-      <th>Size</th>
-      <th>MD5 Checksum</th>
-  </tr>
-  <tr>
-    <td>Windows</td>
-    <td>
-  <a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-windows-1.0_r2.zip">android-sdk-
-windows-1
-.0_r2.zip</a>
-    </td>
-    <td>98360564 bytes</td>
-    <td>a5e1af8ac145946b4a9627516ad4a711</td>
-  </tr>
-  <tr class="alt-color">
-    <td>Mac OS X (intel)</td>
-    <td>
-  <a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-mac_x86-1.0_r2.zip">android-sdk-
-mac_x86-1
-.0_r2.zip</a>
-    </td>
-    <td>93771410 bytes</td>
-    <td>87b99d5e9f59b78363a63200c11498e8</td>
-  </tr>
-  <tr>
-    <td>Linux (i386)</td>
-    <td>
-  <a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-linux_x86-1.0_r2.zip">android-
-sdk-
-linux_x86-1.0_r2.zip</a>
-    </td>
-    <td>94186463 bytes</td>
-    <td>a1f3b6d854596f850f5008856d0f380e</td>
-  </tr>
-  
-  </table>
-
-
-
-
-<h2>Obsolete SDK Releases</h2>
-
-<p>These tables provide Android SDK releases that have been superceded by
-an active release (shown above) and that are now obsolete.</p>
-
-
-<h3>Release 1.5 r2</h3>
- <p><em>May 2009 - <a href="RELEASENOTES.html#1.5_r2">Release
-Notes</a></em></p>
-
-  <table class="download">
-    <tr>
-      <th>Platform</th>
-      <th>Package</th>
-      <th>Size</th>
-      <th>MD5 Checksum</th>
-  </tr>
-  <tr>
-    <td>Windows</td>
-    <td>
-  <a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-windows-1.5_r2.zip">android-sdk-
-windows-1 .5_r2.zip</a>
-    </td>
-    <td>178346828 bytes</td>
-    <td>ba54ac6bda45921d442b74b6de6ff6a9</td>
-  </tr>
-  <tr class="alt-color">
-    <td>Mac OS X (intel)</td>
-    <td>
-  <a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-mac_x86-1.5_r2.zip">android-sdk-
-mac_x86-1 .5_r2.zip</a>
-    </td>
-    <td>169945128 bytes</td>
-    <td>f4e06a5194410243f213d0177713d6c9</td>
-  </tr>
-  <tr>
-    <td>Linux (i386)</td>
-    <td>
-  <a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-linux_x86-1.5_r2.zip">android-
-sdk- linux_x86-1.5_r2.zip</a>
-    </td>
-    <td>165035130 bytes</td>
-    <td>1d3c3d099e95a31c43a7b3e6ae307ed3</td>
-  </tr>
-  
-  </table>
-
-
-<h3>Release 1.5 r1</h3>
- <p><em>April 2009 - <a href="RELEASENOTES.html#1.5_r1">Release
-Notes</a></em></p>
-
-  <table class="download">
-    <tr>
-      <th>Platform</th>
-      <th>Package</th>
-      <th>Size</th>
-      <th>MD5 Checksum</th>
-  </tr>
-  <tr>
-    <td>Windows</td>
-    <td>
-  <a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-windows-1.5_r1.zip">android-sdk-
-windows-1 .5_r1.zip</a>
-    </td>
-    <td>176263368 bytes</td>
-    <td>42be980eb2d3efaced01ea6c32c0045f</td>
-  </tr>
-  <tr class="alt-color">
-    <td>Mac OS X (intel)</td>
-    <td>
-  <a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-mac_x86-1.5_r1.zip">android-sdk-
-mac_x86-1 .5_r1.zip</a>
-    </td>
-    <td>167848675 bytes</td>
-    <td>5b2a8d9f096032db4a75bfa0d689a51b</td>
-  </tr>
-  <tr>
-    <td>Linux (i386)</td>
-    <td>
-  <a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-linux_x86-1.5_r1.zip">android-
-sdk- linux_x86-1.5_r1.zip</a>
-    </td>
-    <td>162938845 bytes</td>
-    <td>2addfd315da0ad8b5bde6b09d5ff3b06</td>
-  </tr>
-  
-  </table>
-
-
-<h3>Release 1.0 r1</h3>
- <p><em>September 23, 2008 - <a href="RELEASENOTES.html#1.0_r1">Release
-Notes</a></em></p>
-
-  <table class="download">
-    <tr>
-      <th>Platform</th>
-      <th>Package</th>
-      <th>Size</th>
-      <th>MD5 Checksum</th>
-  </tr>
-  <tr>
-    <td>Windows</td>
-    <td>
-  <a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-windows-1.0_r1.zip">android-sdk-
-windows-1 .0_r1.zip</a>
-    </td>
-    <td>89.7 MB bytes</td>
-    <td>d69f4ee93d4010f726c04302662fd999</td>
-  </tr>
-  <tr class="alt-color">
-    <td>Mac OS X (intel)</td>
-    <td>
-  <a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-mac_x86-1.0_r1.zip">android-sdk-
-mac_x86-1 .0_r1.zip</a>
-    </td>
-    <td>87.5 MB bytes</td>
-    <td>564876ada22872e50c2866806de9fc5c</td>
-  </tr>
-  <tr>
-    <td>Linux (i386)</td>
-    <td>
-  <a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-linux_x86-1.0_r1.zip">android-
-sdk- linux_x86-1.0_r1.zip</a>
-    </td>
-    <td>87.8 MB bytes</td>
-    <td>2660b4029039b7d714e59827e9a9a11d</td>
-  </tr>
-  
-  </table>
-
-
-
-
-<h2>Non-Compatible SDK Releases</h2>
-
-<!-- <div class="special"> -->
-<p>The SDKs listed below are "early-look" versions that were released in
-  the year preceding the full release of Android 1.0 in September 2008. Because
-  these early-look SDKs were released before the Android 1.0 API specification was
-  finalized, they do not provide a compliant Android execution environment.
-  Consequently, applications that you develop in these SDKs will not be able to
-  run on any Android-powered devices.</p>
-
-<p>If you have an older application that you built in one of the early-look
-SDKs, you must migrate it to the Android 1.0 SDK (or later release) before you
-will be able to deploy it to an Android-powered device. To help with this
-migration, each SDK package below provides information about API changes from
-the previous version. You can find the migration information in the
-documentation included in each SDK package.</p>
-<!-- </div> -->
-
-<h4>Version 0.9 Beta</h4>
-<p><em>August 18, 2008 - <a href="OLD_RELEASENOTES.html#0.9_beta">Release Notes</a></em></p>
- <table>
-   <tr>
-     <th colspan="2">Package</th>
-     <th>Size</th>
-     <th>MD5 Checksum</th>
-   </tr>
-   <tr>
-     <td>Windows</td>
-     <td>
-<a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-windows-0.9_beta.zip">
-android-sdk-windows-0.9_beta.zip</a></td>
-     <td>93,126,573 bytes</td>
-     <td>305031ad8335d1b6040bdd5a65349d6d</td>
-   </tr>
-   <tr class="alt">
-     <td>Mac OS X (intel)</td>
-     <td>
-<a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-mac_x86-0.9_beta.zip">
-android-sdk-mac_x86-0.9_beta.zip</a></td>
-     <td>91,374,464 bytes</td>
-     <td>9a6969159091cede46302e11049fe3ca</td>
-   </tr>
-   <tr>
-     <td>Linux (i386)</td>
-     <td>
-<a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk-linux_x86-0.9_beta.zip"
->android-sdk-linux_x86-0.9_beta.zip</a></td>
-     <td>91,821,068 bytes</td>
-     <td>077e5ef549dd9c5be54bd88e6a8e196c</td>
-   </tr>
- </table>
-
-<h4>Version m5-rc15</h4>
- <p><em>March 3, 2008 - <a href="OLD_RELEASENOTES.html#m5-rc15">Release Notes</a></em></p>
- <table>
-   <tr>
-     <th colspan="2">Package</th>
-     <th>Size</th>
-     <th>MD5 Checksum</th>
-   </tr>
-   <tr>
-     <td>Windows</td>
-     <td>
-<a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk_m5-rc15_windows.zip">
-android-sdk_m5-rc15_windows.zip</a></td>
-     <td>79 MB</td>
-     <td>ecce40bc50201886d95ba2690cdbc5ce</td>
-   </tr>
-   <tr class="alt">
-     <td>Mac OS X (intel)</td>
-     <td>
-<a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk_m5-rc15_mac-x86.zip">
-android-sdk_m5-rc15_mac-x86.zip</a></td>
-     <td>76 MB</td>
-     <td>45a6385bbc1b2cb295409cfc81fb04b4</td>
-   </tr>
-   <tr>
-     <td>Linux (i386)</td>
-     <td>
-<a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk_m5-rc15_linux-x86.zip">
-android-sdk_m5-rc15_linux-x86.zip</a></td>
-     <td>76 MB</td>
-     <td>e913f785afecdeed34c30639fd8c5862</td>
-   </tr>
- </table>
-
- <h4>Version m5-rc14</h4>
- <p><em>February 12, 2008 - <a href="OLD_RELEASENOTES.html#m5-rc14">Release Notes</a></em></p>
- <table>
-   <tr>
-     <th colspan="2">Package</th>
-     <th>Size</th>
-     <th>MD5 Checksum</th>
-   </tr>
-   <tr>
-     <td>Windows</td>
-     <td>
-<a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk_m5-rc14_windows.zip">
-android-sdk_m5-rc14_windows.zip</a></td>
-     <td>79 MB</td>
-     <td>ecc75c1e69588350634ca25867ce05a0</td>
-   </tr>
-   <tr class="alt">
-     <td>Mac OS X (intel)</td>
-     <td>
-<a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk_m5-rc14_mac-x86.zip">
-android-sdk_m5-rc14_mac-x86.zip</a></td>
-     <td>76 MB</td>
-     <td>844c80d0adb1a326f5a9fff262c61efc</td>
-   </tr>
-   <tr>
-     <td>Linux (i386)</td>
-     <td>
-<a
-href="{@docRoot}sdk/download.html?v=archives/android-sdk_m5-rc14_linux-x86.zip">
-android-sdk_m5-rc14_linux-x86.zip</a></td>
-     <td>76 MB</td>
-     <td>f8b863c8a880afe9bb84124f5976aab1</td>
-   </tr>
- </table>
-
-
-
-
- <h4>Version m3-rc37a</h4>
- <p><em>December 14, 2007 - <a href="OLD_RELEASENOTES.html#m3-rc37a">Release Notes</a></em></p>
- <table>
-   <tr>
-     <th colspan="2">Package</th>
-     <th>Size</th>
-     <th>MD5 Checksum</th>
-   </tr>
-   <tr>
-     <td>Windows</td>
-     <td>
-<a
-href="{@docRoot}sdk/download.html?v=archives/android_sdk_windows_m3-rc37a.zip">
-android_sdk_windows_m3-rc37a.zip</a></td>
-     <td>58 MB</td>
-     <td>5db5aea20a2c2f010baefc4b1091a575</td>
-   </tr>
-   <tr class="alt">
-     <td>Mac OS X (intel)</td>
-     <td>
-<a
-href="{@docRoot}sdk/download.html?v=archives/android_sdk_darwin_m3-rc37a.zip">
-android_sdk_darwin_m3-rc37a.zip</a></td>
-     <td>54 MB</td>
-     <td>0b22e73fbd07b4af4009387afce3a37f</td>
-   </tr>
-   <tr>
-     <td>Linux (i386)</td>
-     <td>
-<a
-href="{@docRoot}sdk/download.html?v=archives/android_sdk_linux_m3-rc37a.zip">
-android_sdk_linux_m3-rc37a.zip</a></td>
-     <td>54 MB</td>
-     <td>41285beecc4f9926e6ecf5f12610b356</td>
-   </tr>
- </table>
-
-
-
-
- <h4>Version m3-rc22a</h4>
- <p><em>November 16, 2007 - <a href="OLD_RELEASENOTES.html#m3-rc22a">Release Notes</a></em></p>
- <table>
-   <tr>
-     <th colspan="2">Package</th>
-     <th>Size</th>
-     <th>MD5 Checksum</th>
-   </tr>
-   <tr>
-     <td>Windows</td>
-     <td>
-<a
-href="{@docRoot}sdk/download.html?v=archives/android_sdk_windows_m3-rc22a.zip">
-android_sdk_windows_m3-rc22a.zip</a></td>
-     <td>59 MB</td>
-     <td>aa3dee05a9872752a3bc4efd0f93e98b</td>
-   </tr>
-   <tr class="alt">
-     <td>Mac OS X (intel)</td>
-     <td>
-<a
-href="{@docRoot}sdk/download.html?v=archives/android_sdk_darwin_m3-rc22a.zip">
-android_sdk_darwin_m3-rc22a.zip</a></td>
-     <td>55 MB</td>
-     <td>0547f45614ad94c3af22c3c0aa6f709f</td>
-   </tr>
-   <tr>
-     <td>Linux (i386)</td>
-     <td>
-<a
-href="{@docRoot}sdk/download.html?v=archives/android_sdk_linux_m3-rc22a.zip">
-android_sdk_linux_m3-rc22a.zip</a></td>
-     <td>55 MB</td>
-     <td>84b3455de5cdfd841a172c13d24c382e</td>
-   </tr>
- </table>
-
-
-
-
- <h4>Version m3-rc20a</h4>
- <p><em>November 12, 2007 - <a href="OLD_RELEASENOTES.html#m3-rc20a">Release Notes</a></em></p>
- <table>
-   <tr>
-     <th colspan="2">Package</th>
-     <th>Size</th>
-     <th>MD5 Checksum</th>
-   </tr>
-   <tr>
-     <td>Windows</td>
-     <td>
-<a
-href="{@docRoot}sdk/download.html?v=archives/android_sdk_windows_m3-rc20a.zip">
-android_sdk_windows_m3-rc20a.zip</a></td>
-     <td>59 MB</td>
-     <td>a404b875708df7339ba77bdf2e08dc06</td>
-   </tr>
-   <tr class="alt">
-     <td>Mac OS X (intel)</td>
-     <td>
-<a
-href="{@docRoot}sdk/download.html?v=archives/android_sdk_darwin_m3-rc20a.zip">
-android_sdk_darwin_m3-rc20a.zip</a></td>
-     <td>55 MB</td>
-     <td>8fc29aeaa45eda84bfac854ebd02a6da</td>
-   </tr>
-   <tr>
-     <td>Linux (i386)</td>
-     <td>
-<a
-href="{@docRoot}sdk/download.html?v=archives/android_sdk_linux_m3-rc20a.zip">
-android_sdk_linux_m3-rc20a.zip</a></td>
-     <td>55 MB</td>
-     <td>9196759df9b69cd89a220b156f133364</td>
-   </tr>
- </table>
diff --git a/docs/html/tools/sdk/tools-notes.jd b/docs/html/tools/sdk/tools-notes.jd
index 003acf2..cd2d986 100644
--- a/docs/html/tools/sdk/tools-notes.jd
+++ b/docs/html/tools/sdk/tools-notes.jd
@@ -29,6 +29,83 @@
 <div class="toggle-content opened">
   <p><a href="#" onclick="return toggleContent(this)">
     <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
+      alt=""/>SDK Tools, Revision 22.0.4</a> <em>(July 2013)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+
+    <dl>
+    <dt>Dependencies:</dt>
+    <dd>
+      <ul>
+        <li>Android SDK Platform-tools revision 16 or later.</li>
+        <li>If you are developing in Eclipse with the
+          <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a>, note that this version of
+          SDK Tools is designed for use with ADT 22.0.4 and later. If you haven't already, update
+          ADT to 22.0.4.</li>
+        <li>If you are using <a href="{@docRoot}sdk/installing/studio.html">Android Studio</a>,
+          note that this version of the SDK Tools is designed to work with Android Studio
+          0.2.x and later.</li>
+        <li>If you are developing without an integrated development environment (IDE), you must have
+          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
+      </ul>
+    </dd>
+
+    <dt>General Notes:</dt>
+    <dd>
+      <ul>
+        <li>Fixed problem with compiling Renderscript code.</li>
+      </ul>
+    </dd>
+    </dl>
+  </div>
+</div>
+
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+      alt=""/>SDK Tools, Revision 22.0.1</a> <em>(May 2013)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+
+    <dl>
+    <dt>Dependencies:</dt>
+    <dd>
+      <ul>
+        <li>Android SDK Platform-tools revision 16 or later.</li>
+        <li>If you are developing in Eclipse with ADT, note that the SDK Tools r22.0.1 is
+          designed for use with ADT 22.0.1 and later. If you haven't already, update your
+        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.0.1.</li>
+        <li>If you are developing outside Eclipse, you must have
+          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
+      </ul>
+    </dd>
+
+    <dt>General Notes:</dt>
+    <dd>
+      <ul>
+        <li>Fixed issue with Lint ServiceCast check and fully qualified class names.
+          (<a href="http://code.google.com/p/android/issues/detail?id=55403">Issue 55403</a>)</li>
+        <li>Fixed crash issue with Lint ArraySizeDetector check.
+          (<a href="http://code.google.com/p/android/issues/detail?id=54887">Issue 54887</a>)</li>
+        <li>Fixed a problem with the monkeyrunner tool failing to import standard python classes.
+          (<a href="http://code.google.com/p/android/issues/detail?id=55632">Issue 55632</a>)</li>
+        <li>Fixed a problem with DDMS monitor not opening heap and network statistics views due to
+          a class not found exception.
+          (<a href="http://code.google.com/p/android/issues/detail?id=55394">Issue 55394</a>)</li>
+      </ul>
+
+    </dd>
+    </dl>
+  </div>
+</div>
+
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 22</a> <em>(May 2013)</em>
   </p>
 
diff --git a/docs/html/tools/sdk/win-usb.jd b/docs/html/tools/sdk/win-usb.jd
deleted file mode 100644
index d322340..0000000
--- a/docs/html/tools/sdk/win-usb.jd
+++ /dev/null
@@ -1,172 +0,0 @@
-page.title=Google USB Driver
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#notes">Revisions</a></li>
-    <li><a href="#WinUsbDriver">Downloading the Google USB Driver</a></li>
-  </ol>
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}tools/extras/oem-usb.html#InstallingDriver">Installing a USB Driver</a></li>
-    <li><a href="{@docRoot}tools/device.html">Using Hardware Devices</a></li>
-    <li><a href="{@docRoot}sdk/exploring.html">Exploring the SDK</a></li>
-  </ol>
-</div>
-</div>
-
-<p>The Google USB driver is a downloadable component for the Android SDK, available
-from the SDK Manager. The driver is for Windows only and provides the necessary drivers for the
-following devices:</p>
-  <ul>
-    <li>ADP1 / T-Mobile G1*</li>
-    <li>ADP2 / Google Ion / T-Mobile myTouch 3G*</li>
-    <li>Verizon Droid*</li>
-    <li>Nexus One</li>
-    <li>Nexus S</li>
-  </ul>
-  <p>* <em>Or similar hardware on other carriers</em></p>
-  
-  <p>All other devices require Windows drivers provided by the hardware manufacturer, as listed in
-the <a href="{@docRoot}tools/extras/oem-usb.html">OEM USB Drivers</a> document. The Galaxy Nexus
-driver is also distributed by <a
-href="http://www.samsung.com/us/support/downloads/verizon-wireless/SCH-I515MSAVZW">Samsung</a>
-(listed as model SCH-I515).</p>
-
-<p class="note"><strong>Note:</strong>
-If you're developing on Mac OS X or Linux, then you do not need to install a USB driver. To start
-developing with your device, also read <a href="{@docRoot}tools/device.html">Using
-Hardware Devices</a>.</p>
-
-<p>The sections below provide instructions on how to download and install the Google USB Driver
-for Windows. </p>
-
-
-
-
-<h2 id="notes">Revisions</h2>
-
-<p>The sections below provide notes about successive revisions of the USB Driver
-for Windows, as denoted by revision number. To determine what revision of the
-USB Driver for Windows you are using, refer to the "Installed Packages" listing
-in the Android SDK Manager.</p>
-
-<script type="text/javascript">
-function toggleDiv(link) {
-  var toggleable = $(link).parent();
-  if (toggleable.hasClass("closed")) {
-    //$(".toggleme", toggleable).slideDown("fast");
-    toggleable.removeClass("closed");
-    toggleable.addClass("open");
-    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot + "assets/images/triangle-opened.png"));
-  } else {
-    //$(".toggleme", toggleable).slideUp("fast");
-    toggleable.removeClass("open");
-    toggleable.addClass("closed");
-    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot + "assets/images/triangle-closed.png"));
-  }
-  return false;
-}
-</script>
-<style>
-.toggleable {
-padding: .25em 1em;
-}
-.toggleme {
-  padding: 1em 1em 0 2em;
-  line-height:1em;
-}
-.toggleable a {
-  text-decoration:none;
-}
-.toggleme a {
-  text-decoration:underline;
-}
-.toggleable.closed .toggleme {
-  display:none;
-}
-#jd-content .toggle-img {
-  margin:0;
-}
-</style>
-
-<div class="toggleable opened">
-  <a href="#" onclick="return toggleDiv(this)">
-        <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px"
-width="9px" />
-USB Driver for Windows, Revision 4</a> <em>(December 2010)</em>
-  <div class="toggleme">
-
-<dl>
-<dt><p>Adds support for the Nexus S.</p></dt>
-</dl>
- </div>
-</div>
-
-<div class="toggleable closed">
-  <a href="#" onclick="return toggleDiv(this)">
-        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px"
-width="9px" />
-USB Driver for Windows, Revision 3</a> <em>(January 2010)</em>
-  <div class="toggleme">
-
-<dl>
-<dt><p>Adds support for the Nexus One.</p></dt>
-</dl>
- </div>
-</div>
-
-<div class="toggleable closed">
-  <a href="#" onclick="return toggleDiv(this)">
-        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
-USB Driver for Windows, Revision 2</a> <em>(November 2009)</em>
-  <div class="toggleme">
-
-<dl>
-<dt><p>Adds support for the Verizon Droid (or similar hardware on
-other carriers).</p></dt>
-</dl>
- </div>
-</div>
-
-<div class="toggleable closed">
-  <a href="#" onclick="return toggleDiv(this)">
-        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
-USB Driver for Windows, Revision 1</a> <em>(October 2009)</em>
-  <div class="toggleme">
-
-<dl>
-<dt><p>Initial release of the WinUsb-based driver, with support
-for the T-Mobile G1 and myTouch 3G (and similar devices).</p></dt>
-</dl>
- </div>
-</div>
-
-
-<h2 id="WinUsbDriver">Downloading the Google USB Driver</h2>
-
-<div class="figure" style="width:536px;margin:0">
-  <img src="{@docRoot}images/developing/sdk-usb-driver.png" alt="" />
-  <p class="img-caption"><strong>Figure 1.</strong> The SDK Manager
-    with the Google USB Driver selected.</p>
-</div>
-
-<p>The USB Driver for Windows is available for download as an optional SDK
-component. You need the driver only if you are developing on Windows and 
-want to connect an Android-powered device (ADP, Nexus One, or Nexus S) to your
-development environment over USB. </p>
-
-<p>To download the driver, use the Android SDK Manager tool that is
-included with the <a href="{@docRoot}sdk/index.html">Android SDK</a>:</p>
-<ol>
-  <li>Launch the Android SDK Manager by double-clicking <code>SDK Manager.exe</code>,
-  at the root of your SDK directory.</li>
-  <li>Expand <em>Extras</em>.</li>
-  <li>Check <strong>Google USB Driver package</strong> and click <strong>Install</strong>.</li>
-  <li>Proceed to install the package. When done, the driver files are
-downloaded into the <code>&lt;sdk&gt;\extras\google\usb_driver\</code> directory.</li>
-</ol>
-
-<p>For installation information, read <a href="{@docRoot}tools/extras/oem-usb.html#InstallingDriver">Installing a USB Driver</a>.</p>
diff --git a/docs/html/tools/tools_toc.cs b/docs/html/tools/tools_toc.cs
index a63492e..6389880 100644
--- a/docs/html/tools/tools_toc.cs
+++ b/docs/html/tools/tools_toc.cs
@@ -53,7 +53,7 @@
         <ul>
           <li><a href="<?cs var:toroot ?>tools/devices/managing-avds.html"><span class="en">With AVD Manager</span></a></li>
           <li><a href="<?cs var:toroot ?>tools/devices/managing-avds-cmdline.html"><span class="en">From the Command Line</span></a></li>
-          <li><a href="<?cs var:toroot ?>tools/devices/emulator.html"><span class="en">Using the Android Emulator</span></a></li>
+          <li><a href="<?cs var:toroot ?>tools/devices/emulator.html"><span class="en">Using the Emulator</span></a></li>
         </ul>
       </li>
       <li><a href="<?cs var:toroot ?>tools/device.html"><span class="en">Using Hardware Devices</span></a></li>
diff --git a/docs/html/tools/workflow/app-signing.jd b/docs/html/tools/workflow/app-signing.jd
deleted file mode 100644
index ac45242..0000000
--- a/docs/html/tools/workflow/app-signing.jd
+++ /dev/null
@@ -1,618 +0,0 @@
-page.title=Signing Your Applications
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Quickview</h2>
-
-<ul>
-<li>All Android apps <em>must</em> be signed</li>
-<li>You can sign with a self-signed key</li>
-<li>How you sign your apps is critical &mdash; read this document carefully</li>
-<li>Determine your signing strategy early in the development process</li>
-</ul>
-
-<h2>In this document</h2>
-
-<ol>
-<li><a href="#signing">Signing Process</a></li>
-<li><a href="#strategies">Signing Strategies</a></li>
-<li><a href="#setup">Basic Setup for Signing</a></li>
-<li><a href="#debugmode">Signing in Debug Mode</a></li>
-<li><a href="#releasemode">Signing Release Mode</a>
-    <ol>
-    <li><a href="#cert">Obtain a suitable private key</a></li>
-    <li><a href="#releasecompile">Compile the application in release mode</a></li>
-    <li><a href="#signapp">Sign your application with your private key</a></li>
-    <li><a href="#align">Align the final APK package</a></li>
-    <li><a href="#ExportWizard">Compile and sign with Eclipse ADT</a></li>
-    </ol>
-</li>
-<li><a href="#secure-key">Securing Your Private Key</a></li>
-
-</ol>
-
-<h2>See also</h2>
-
-<ol>
-<li><a href="{@docRoot}tools/publishing/versioning.html">Versioning Your Applications</a></li>
-<li><a href="{@docRoot}tools/publishing/preparing.html">Preparing to Publish</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>The Android system requires that all installed applications be digitally signed with a
-certificate whose private key is held by the application's developer. The Android system uses the
-certificate as a means of identifying the author of an application and establishing trust
-relationships between applications. The certificate is not used to control which applications the
-user can install. The certificate does not need to be signed by a certificate authority: it is
-perfectly allowable, and typical, for Android applications to use self-signed certificates.</p>
-
-<p>The important points to understand about signing Android applications are:</p>
-
-<ul>
-  <li>All applications <em>must</em> be signed. The system will not install an application
-on an emulator or a device if it is not signed.</li>
-  <li>To test and debug your application, the build tools sign your application with a special debug
-    key that is created by the Android SDK build tools.</li>
-  <li>When you are ready to release your application for end-users, you must sign it with a suitable
-    private key. You cannot publish an application that is signed with the debug key generated
-    by the SDK tools.</li>
-  <li>You can use self-signed certificates to sign your applications. No certificate authority is
-    needed.</li>
-  <li>The system tests a signer certificate's expiration date only at install time. If an
-application's signer certificate expires after the application is installed, the application
-will continue to function normally.</li>
-  <li>You can use standard tools &mdash; Keytool and Jarsigner &mdash; to generate keys and
-sign your application {@code .apk} files.</li>
-  <li>After you sign your application for release, we recommend that you use the
-    <code>zipalign</code> tool to optimize the final APK package.</li>
-</ul>
-
-<p>The Android system will not install or run an application that is not signed appropriately. This
-applies wherever the Android system is run, whether on an actual device or on the emulator.
-For this reason, you must <a href="#setup">set up signing</a> for your application before you can
-run it or debug it on an emulator or device.</p>
-
-<h2 id="signing">Signing Process</h3>
-
-<p>The Android build process signs your application differently depending on which build mode you
-use to build your application. There are two build modes: <em>debug mode</em> and <em>release
-mode</em>. You use debug mode when you are developing and testing your application. You use
-release mode when you want to build a release version of your application that you can
-distribute directly to users or publish on an application marketplace such as Google Play.</p>
-
-<p>When you build in <em>debug mode</em> the Android SDK build tools use the Keytool utility
-(included in the JDK) to create a debug key. Because the SDK build tools created the debug key,
-they know the debug key's alias and password. Each time you compile your application in debug mode,
-the build tools use the debug key along with the Jarsigner utility (also included in the JDK) to
-sign your application's <code>.apk</code> file. Because the alias and password are known to the SDK
-build tools, the tools don't need to prompt you for the debug key's alias and password each time
-you compile.</p>
-
-<p>When you build in <em>release mode</em> you use your own private key to sign your application. If
-you don't have a private key, you can use the Keytool utility to create one for you. When you
-compile your application in release mode, the build tools use your private key along with the
-Jarsigner utility to sign your application's <code>.apk</code> file. Because the certificate and
-private key you use are your own, you will have to provide the password for the keystore and key
-alias.</p>
-
-<p>The debug signing process happens automatically when you run or debug your application using
-Eclipse with the ADT plugin. Debug signing also happens automatically when you use the Ant build
-script with the <code>debug</code> option. You can automate the release signing process by using the
-Eclipse Export Wizard or by modifying the Ant build script and building with the
-<code>release</code> option.</p>
-
-<h2 id="strategies">Signing Strategies</h2>
-
-<p>Some aspects of application signing may affect how you approach the development
-of your application, especially if you are planning to release multiple
-applications. </p>
-
-<p>In general, the recommended strategy for all developers is to sign
-all of your applications with the same certificate, throughout the expected
-lifespan of your applications. There are several reasons why you should do so: </p>
-
-<ul>
-<li>Application upgrade &ndash; As you release updates to your application, you
-will want to continue to sign the updates with the same certificate or set of
-certificates, if you want users to upgrade seamlessly to the new version. When
-the system is installing an update to an application, it compares the
-certificate(s) in the new version with those in the existing version. If the
-certificates match exactly, including both the certificate data and order, then
-the system allows the update. If you sign the new version without using matching
-certificates, you will also need to assign a different package name to the
-application &mdash; in this case, the user installs the new version as a
-completely new application. </li>
-
-<li>Application modularity &ndash; The Android system allows applications that
-are signed by the same certificate to run in the same process, if the
-applications so requests, so that the system treats them as a single application.
-In this way you can deploy your application in modules, and users can update
-each of the modules independently if needed.</li>
-
-<li>Code/data sharing through permissions &ndash; The Android system provides
-signature-based permissions enforcement, so that an application can expose
-functionality to another application that is signed with a specified
-certificate. By signing multiple applications with the same certificate and
-using signature-based permissions checks, your applications can share code and
-data in a secure manner. </li>
-
-</ul>
-
-<p>Another important consideration in determining your signing strategy is
-how to set the validity period of the key that you will use to sign your
-applications.</p>
-
-<ul>
-<li>If you plan to support upgrades for a single application, you should ensure
-that your key has a validity period that exceeds the expected lifespan of
-that application. A validity period of 25 years or more is recommended.
-When your key's validity period expires, users will no longer be
-able to seamlessly upgrade to new versions of your application.</li>
-
-<li>If you will sign multiple distinct applications with the same key,
-you should ensure that your key's validity period exceeds the expected
-lifespan of <em>all versions of all of the applications</em>, including
-dependent applications that may be added to the suite in the future. </li>
-
-<li>If you plan to publish your application(s) on Google Play, the
-key you use to sign the application(s) must have a validity period
-ending after 22 October 2033. Google Play enforces this requirement
-to ensure that users can seamlessly upgrade applications when
-new versions are available. </li>
-</ul>
-
-<p>As you design your application, keep these points in mind and make sure to
-use a <a href="#cert">suitable certificate</a> to sign your applications. </p>
-
-<h2 id="setup">Basic Setup for Signing</h2>
-
-<p>Before you begin, make sure that the Keytool utility and Jarsigner utility are available to
-the SDK build tools. Both of these tools are available in the JDK. In most cases, you can tell
-the SDK build tools how to find these utilities by setting your <code>JAVA_HOME</code> environment
-variable so it references a suitable JDK. Alternatively, you can add the JDK version of Keytool and
-Jarsigner to your <code>PATH</code> variable.</p>
-
-<p>If you are developing on a version of Linux that originally came with GNU Compiler for
-Java, make sure that the system is using the JDK version of Keytool, rather than the gcj
-version. If Keytool is already in your <code>PATH</code>, it might be pointing to a symlink at
-<code>/usr/bin/keytool</code>. In this case, check the symlink target to be sure it points
-to the Keytool in the JDK.</p>
-
-<h2 id="debugmode">Signing in Debug Mode</h2>
-
-<p>The Android build tools provide a debug signing mode that makes it easier for you
-to develop and debug your application, while still meeting the Android system
-requirement for signing your APK.
-When using debug mode to build your app, the SDK tools invoke Keytool to automatically create
-a debug keystore and key. This debug key is then used to automatically sign the APK, so
-you do not need to sign the package with your own key.</p>
-
-<p>The SDK tools create the debug keystore/key with predetermined names/passwords:</p>
-<ul>
-<li>Keystore name: "debug.keystore"</li>
-<li>Keystore password: "android"</li>
-<li>Key alias: "androiddebugkey"</li>
-<li>Key password: "android"</li>
-<li>CN: "CN=Android Debug,O=Android,C=US"</li>
-</ul>
-
-<p>If necessary, you can change the location/name of the debug keystore/key or
-supply a custom debug keystore/key to use. However, any custom debug
-keystore/key must use the same keystore/key names and passwords as the default
-debug key (as described above). (To do so in Eclipse/ADT, go to
-<strong>Windows</strong> &gt; <strong>Preferences</strong> &gt;
-<strong>Android</strong> &gt; <strong>Build</strong>.) </p>
-
-<p class="caution"><strong>Caution:</strong> You <em>cannot</em> release your application
-to the public when signed with the debug certificate.</p>
-
-<h3>Eclipse Users</h3>
-
-<p>If you are developing in Eclipse/ADT (and have set up Keytool and Jarsigner as described above in
-<a href="#setup">Basic Setup for Signing</a>),
-signing in debug mode is enabled by default. When you run or debug your
-application, ADT signs the {@code .apk} file with the debug certificate, runs {@code zipalign} on
-the package, then installs it on
-the selected emulator or connected device. No specific action on your part is needed,
-provided ADT has access to Keytool.</p>
-
-<h3>Ant Users</h3>
-
-<p>If you are using Ant to build your {@code .apk} file, debug signing mode
-is enabled by using the <code>debug</code> option with the <code>ant</code> command
-(assuming that you are using a <code>build.xml</code> file generated by the
-<code>android</code> tool). When you run <code>ant debug</code> to
-compile your app, the build script generates a keystore/key and signs the APK for you.
-The script then also aligns the APK with the <code>zipalign</code> tool.
-No other action on your part is needed. Read
-<a href="{@docRoot}tools/building/building-cmdline.html#DebugMode">Building and Running Apps
-on the Command Line</a> for more information.</p>
-
-
-<h3 id="debugexpiry">Expiry of the Debug Certificate</h3>
-
-<p>The self-signed certificate used to sign your application in debug mode (the default on
-Eclipse/ADT and Ant builds) will have an expiration date of 365 days from its creation date.</p>
-
-<p>When the certificate expires, you will get a build error. On Ant builds, the error
-looks like this:</p>
-
-<pre>debug:
-[echo] Packaging bin/samples-debug.apk, and signing it with a debug key...
-[exec] Debug Certificate expired on 8/4/08 3:43 PM</pre>
-
-<p>In Eclipse/ADT, you will see a similar error in the Android console.</p>
-
-<p>To fix this problem, simply delete the <code>debug.keystore</code> file.
-The default storage location for AVDs is in <code>~/.android/</code> on OS X and Linux,
-in <code>C:\Documents and Settings\&lt;user>\.android\</code> on Windows XP, and in
-<code>C:\Users\&lt;user>\.android\</code> on Windows Vista and Windows 7.</p>
-
-
-<p>The next time you build, the build tools will regenerate a new keystore and debug key.</p>
-
-<p>Note that, if your development machine is using a non-Gregorian locale, the build
-tools may erroneously generate an already-expired debug certificate, so that you get an
-error when trying to compile your application. For workaround information, see the
-troubleshooting topic <a href="{@docRoot}resources/faq/troubleshooting.html#signingcalendar">
-I&nbsp;can't&nbsp;compile my app because the build tools generated an expired debug
-certificate</a>. </p>
-
-
-<h2 id="releasemode">Signing in Release Mode</h2>
-
-<p>When your application is ready for release to other users, you must:</p>
-<ol>
-  <li><a href="#cert">Obtain a suitable private key</a></li>
-  <li><a href="#releasecompile">Compile the application in release mode</a></li>
-  <li><a href="#signapp">Sign your application with your private key</a></li>
-  <li><a href="#align">Align the final APK package</a></li>
-</ol>
-
-<p>If you are developing in Eclipse with the ADT plugin, you can use the Export Wizard
-to perform the compile, sign, and align procedures. The Export Wizard even allows you to
-generate a new keystore and private key in the process. So if you use Eclipse, you can
-skip to <a href="#ExportWizard">Compile and sign with Eclipse ADT</a>.</p>
-
-
-
-<h3 id="cert">1. Obtain a suitable private key</h3>
-
-<p>In preparation for signing your application, you must first ensure that
-you have a suitable private key with which to sign. A suitable private
-key is one that:</p>
-
-<ul>
-<li>Is in your possession</li>
-<li>Represents the personal, corporate, or organizational entity to be identified
-with the application</li>
-<li>Has a validity period that exceeds the expected lifespan of the application
-or application suite. A validity period of more than 25 years is recommended.
-<p>If you plan to publish your application(s) on Google Play, note that a
-validity period ending after 22 October 2033 is a requirement. You can not upload an
-application if it is signed with a key whose validity expires before that date.
-</p></li>
-<li>Is not the debug key generated by the Android SDK tools. </li>
-</ul>
-
-<p>The key may be self-signed. If you do not have a suitable key, you must
-generate one using Keytool. Make sure that you have Keytool available, as described
-in <a href="#setup">Basic Setup</a>.</p>
-
-<p>To generate a self-signed key with Keytool, use the <code>keytool</code>
-command and pass any of the options listed below (and any others, as
-needed). </p>
-
-<p class="warning"><strong>Warning:</strong> Keep your private key secure.
-Before you run Keytool, make sure to read
-<a href="#secure-key">Securing Your Private Key</a> for a discussion of how to keep
-your key secure and why doing so is critically important to you and to users. In
-particular, when you are generating your key, you should select strong passwords
-for both the keystore and key.</p>
-
-<table>
-<tr>
-<th>Keytool Option</th>
-<th>Description</th>
-</tr>
-<tr>
-<td><code>-genkey</code></td><td>Generate a key pair (public and private
-keys)</td>
-</tr>
-<tr>
-<td><code>-v</code></td><td>Enable verbose output.</td>
-</tr>
-<tr>
-<td><code>-alias &lt;alias_name&gt;</code></td><td>An alias for the key. Only
-the first 8 characters of the alias are used.</td>
-</tr>
-<tr>
-<td><code>-keyalg &lt;alg&gt;</code></td><td>The encryption algorithm to use
-when generating the key. Both DSA and RSA are supported.</td>
-</tr>
-<tr>
-<td><code>-keysize &lt;size&gt;</code></td><td>The size of each generated key
-(bits). If not supplied, Keytool uses a default key size of 1024 bits. In
-general, we recommend using a key size of 2048 bits or higher. </td>
-</tr>
-<tr>
-<td><code>-dname &lt;name&gt;</code></td><td><p>A Distinguished Name that describes
-who created the key. The value is used as the issuer and subject fields in the
-self-signed certificate. </p><p>Note that you do not need to specify this option
-in the command line. If not supplied, Jarsigner prompts you to enter each
-of the Distinguished Name fields (CN, OU, and so on).</p></td>
-</tr>
-<tr>
-<td><code>-keypass &lt;password&gt;</code></td><td><p>The password for the
-key.</p> <p>As a security precaution, do not include this option in your command
-line. If not supplied, Keytool prompts you to enter the password. In this way,
-your password is not stored in your shell history.</p></td>
-</tr>
-<tr>
-<td><code>-validity &lt;valdays&gt;</code></td><td><p>The validity period for the
-key, in days. </p><p><strong>Note:</strong> A value of 10000 or greater is recommended.</p></td>
-</tr>
-<tr>
-<td><code>-keystore&nbsp;&lt;keystore-name&gt;.keystore</code></td><td>A name
-for the keystore containing the private key.</td>
-</tr>
-<tr>
-<td><code>-storepass &lt;password&gt;</code></td><td><p>A password for the
-keystore.</p><p>As a security precaution, do not include this option in your
-command line. If not supplied, Keytool prompts you to enter the password. In
-this way, your password is not stored in your shell history.</p></td>
-</tr>
-</table>
-
-<p>Here's an example of a Keytool command that generates a private key:</p>
-
-<pre>$ keytool -genkey -v -keystore my-release-key.keystore
--alias alias_name -keyalg RSA -keysize 2048 -validity 10000</pre>
-
-<p>Running the example command above, Keytool prompts you to provide
-passwords for the keystore and key, and to provide the Distinguished
-Name fields for your key. It then generates the keystore as a file called
-<code>my-release-key.keystore</code>. The keystore and key are
-protected by the passwords you entered. The keystore contains
-a single key, valid for 10000 days. The alias is a name that you &mdash;
-will use later, to refer to this keystore when signing your application. </p>
-
-<p>For more information about Keytool, see the documentation at
-<a
-href="http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html">
-http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html</a></p>
-
-
-
-<h3 id="releasecompile">2. Compile the application in release mode</h3>
-
-<p>In order to release your application to users, you must compile it in release mode.
-In release mode, the compiled application is not signed by default and you will need
-to sign it with your private key.</p>
-
-<p class="caution"><strong>Caution:</strong>
-You can not release your application unsigned, or signed with the debug key.</p>
-
-<h4>With Eclipse</h4>
-
-<p>To export an <em>unsigned</em> APK from Eclipse, right-click the project in the Package
-Explorer and select <strong>Android Tools</strong> > <strong>Export Unsigned Application
-Package</strong>. Then specify the file location for the unsigned APK.
-(Alternatively, open your <code>AndroidManifest.xml</code> file in Eclipse, select
-the <strong>Manifest</strong> tab, and click <strong>Export an unsigned APK</strong>.)</p>
-
-<p>Note that you can combine the compiling and signing steps with the Export Wizard. See
-<a href="#ExportWizard">Compiling and signing with Eclipse ADT</a>.</p>
-
-<h4>With Ant</h4>
-
-<p>If you are using Ant, you can enable release mode by using the <code>release</code> option
-with the <code>ant</code> command. For example, if you are running Ant from the
-directory containing your {@code build.xml} file, the command would look like this:</p>
-
-<pre>$ ant release</pre>
-
-<p>By default, the build script compiles the application APK without signing it. The output file
-in your project {@code bin/} will be <code><em>&lt;your_project_name></em>-unsigned.apk</code>.
-Because the application APK is still unsigned, you must manually sign it with your private
-key and then align it using {@code zipalign}.</p>
-
-<p>However, the Ant build script can also perform the signing
-and aligning for you, if you have provided the path to your keystore and the name of
-your key alias in the project's {@code ant.properties} file. With this information provided,
-the build script will prompt you for your keystore and alias password when you perform
-<code>ant release</code>, it will sign the package and then align it. The final output
-file in {@code bin/} will instead be
-<code><em>&lt;your_project_name></em>-release.apk</code>. With these steps
-automated for you, you're able to skip the manual procedures below (steps 3 and 4).
-To learn how to specify your keystore and alias in the {@code ant.properties} file,
-see <a href="{@docRoot}tools/building/building-cmdline.html#ReleaseMode">
-Building and Running Apps on the Command Line</a>.</p>
-
-
-
-<h3 id="signapp">3. Sign your application with your private key</h3>
-
-<p>When you have an application package that is ready to be signed, you can do sign it
-using the Jarsigner tool. Make sure that you have Jarsigner available on your
-machine, as described in <a href="#setup">Basic Setup</a>. Also, make sure that
-the keystore containing your private key is  available.</p>
-
-<p>To sign your application, you run Jarsigner, referencing both the
-application's APK and the keystore containing the private key with which to
-sign the APK. The table below shows the options you could use. </p>
-
-<table>
-<tr>
-<th>Jarsigner Option</th>
-<th>Description</th>
-</tr>
-<tr>
-<td><code>-keystore&nbsp;&lt;keystore-name&gt;.keystore</code></td><td>The name of
-the keystore containing your private key.</td>
-</tr>
-<tr>
-<td><code>-verbose</code></td><td>Enable verbose output.</td>
-</tr>
-<tr>
-<td><code>-sigalg</code></td><td>The name of the signature algorithim to use in signing the APK.
-Use the value {@code MD5withRSA}.</td>
-</tr>
-<tr>
-<td><code>-digestalg</code></td><td>The message digest algorithim to use in processing the entries
-of an APK. Use the value {@code SHA1}.</td>
-</tr>
-<tr>
-<td><code>-storepass &lt;password&gt;</code></td><td><p>The password for the
-keystore. </p><p>As a security precaution, do not include this option
-in your command line unless you are working at a secure computer.
-If not supplied, Jarsigner prompts you to enter the password. In this
-way, your password is not stored in your shell history.</p></td>
-</tr>
-<tr>
-<td><code>-keypass &lt;password&gt;</code></td><td><p>The password for the private
-key. </p><p>As a security precaution, do not include this option
-in your command line unless you are working at a secure computer.
-If not supplied, Jarsigner prompts you to enter the password. In this
-way, your password is not stored in your shell history.</p></td>
-</tr>
-</table>
-
-<p>Here's how you would use Jarsigner to sign an application package called
-<code>my_application.apk</code>, using the example keystore created above.
-</p>
-
-<pre>$ jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore my-release-key.keystore
-my_application.apk alias_name</pre>
-
-<p>Running the example command above, Jarsigner prompts you to provide
-passwords for the keystore and key. It then modifies the APK
-in-place, meaning the APK is now signed. Note that you can sign an
-APK multiple times with different keys.</p>
-
-<p class="caution"><strong>Caution:</strong> As of JDK 7, the default signing algorithim has
-changed, requiring you to specify the signature and digest algorithims ({@code -sigalg} and {@code
--digestalg}) when you sign an APK.</p>
-
-<p>To verify that your APK is signed, you can use a command like this:</p>
-
-<pre>$ jarsigner -verify my_signed.apk</pre>
-
-<p>If the APK is signed properly, Jarsigner prints "jar verified".
-If you want more details, you can try one of these commands:</p>
-
-<pre>$ jarsigner -verify -verbose my_application.apk</pre>
-
-<p>or</p>
-
-<pre>$ jarsigner -verify -verbose -certs my_application.apk</pre>
-
-<p>The command above, with the <code>-certs</code> option added, will show you the
-"CN=" line that describes who created the key.</p>
-
-<p class="note"><strong>Note:</strong> If you see "CN=Android Debug", this means the APK was
-signed with the debug key generated by the Android SDK. If you intend to release
-your application, you must sign it with your private key instead of the debug
-key.</p>
-
-<p>For more information about Jarsigner, see the documentation at
-<a href="http://docs.oracle.com/javase/6/docs/technotes/tools/windows/jarsigner.html">
-http://docs.oracle.com/javase/6/docs/technotes/tools/windows/jarsigner.html</a></p>
-
-
-<h3 id="align">4. Align the final APK package</h3>
-
-<p>Once you have signed the APK with your private key, run <code>zipalign</code> on the file.
-This tool ensures that all uncompressed data starts with a particular byte alignment,
-relative to the start of the file. Ensuring alignment at 4-byte boundaries provides
-a performance optimization when installed on a device. When aligned, the Android
-system is able to read files with {@code mmap()}, even if
-they contain binary data with alignment restrictions, rather than copying all
-of the data from the package. The benefit is a reduction in the amount of
-RAM consumed by the running application.</p>
-
-<p>The <code>zipalign</code> tool is provided with the Android SDK, inside the
-<code>tools/</code> directory. To align your signed APK, execute:</p>
-
-<pre>$ zipalign -v 4 <em>your_project_name</em>-unaligned.apk <em>your_project_name</em>.apk</pre>
-
-<p>The {@code -v} flag turns on verbose output (optional). {@code 4} is the
-byte-alignment (don't use anything other than 4). The first file argument is
-your signed {@code .apk} file (the input) and the second file is the destination {@code .apk} file
-(the output). If you're overriding an existing APK, add the {@code -f} flag.</p>
-
-<p class="caution"><strong>Caution:</strong> Your input APK must be signed with your
-private key <strong>before</strong> you optimize the package with {@code zipalign}.
-If you sign it after using {@code zipalign}, it will undo the alignment.</p>
-
-<p>For more information, read about the
-<a href="{@docRoot}tools/help/zipalign.html">zipalign</a> tool.
-
-
-<h3 id="ExportWizard">Compile and sign with Eclipse ADT</h3>
-
-<p>If you are using Eclipse with the ADT plugin, you can use the Export Wizard to
-export a <em>signed</em> APK (and even create a new keystore,
-if necessary). The Export Wizard performs all the interaction with
-the Keytool and Jarsigner for you, which allows you to sign the package using a GUI
-instead of performing the manual procedures to compile, sign,
-and align, as discussed above. Once the wizard has compiled and signed your package,
-it will also perfom package alignment with {@code zipalign}.
-Because the Export Wizard uses both Keytool and Jarsigner, you should
-ensure that they are accessible on your computer, as described above
-in the <a href="#setup">Basic Setup for Signing</a>.</p>
-
-<p>To create a signed and aligned APK in Eclipse:</p>
-
-<ol>
-  <li>Select the project in the Package
-Explorer and select <strong>File > Export</strong>.</li>
-  <li>Open the Android folder, select Export Android Application,
-  and click <strong>Next</strong>.
-  <p>The Export Android Application wizard now starts, which will
-  guide you through the process of signing your application,
-  including steps for selecting the private key with which to sign the APK
-  (or creating a new keystore and private key).</p>
-  <li>Complete the Export Wizard and your application will be compiled,
-  signed, aligned, and ready for distribution.</li>
-</ol>
-
-
-
-<h2 id="secure-key">Securing Your Private Key</h2>
-
-<p>Maintaining the security of your private key is of critical importance, both
-to you and to the user. If you allow someone to use your key, or if you leave
-your keystore and passwords in an unsecured location such that a third-party
-could find and use them, your authoring identity and the trust of the user
-are compromised. </p>
-
-<p>If a third party should manage to take your key without your knowledge or
-permission, that person could sign and distribute applications that maliciously
-replace your authentic applications or corrupt them. Such a person could also
-sign and distribute applications under your identity that attack other
-applications or the system itself, or corrupt or steal user data. </p>
-
-<p>Your reputation as a developer entity depends on your securing your private
-key properly, at all times, until the key is expired. Here are some tips for
-keeping your key secure: </p>
-
-<ul>
-<li>Select strong passwords for the keystore and key.</li>
-<li>When you generate your key with Keytool, <em>do not</em> supply the
-<code>-storepass</code> and <code>-keypass</code> options at the command line.
-If you do so, your passwords will be available in your shell history,
-which any user on your computer could access.</li>
-<li>Similarly, when signing your applications with Jarsigner,
-<em>do not</em> supply the <code>-storepass</code> and <code>-keypass</code>
-options at the command line. </li>
-<li>Do not give or lend anyone your private key, and do not let unauthorized
-persons know your keystore and key passwords.</li>
-</ul>
-
-<p>In general, if you follow common-sense precautions when generating, using,
-and storing your key, it will remain secure. </p>
\ No newline at end of file
diff --git a/docs/html/tools/workflow/publishing/app-signing.jd b/docs/html/tools/workflow/publishing/app-signing.jd
deleted file mode 100644
index ac45242..0000000
--- a/docs/html/tools/workflow/publishing/app-signing.jd
+++ /dev/null
@@ -1,618 +0,0 @@
-page.title=Signing Your Applications
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Quickview</h2>
-
-<ul>
-<li>All Android apps <em>must</em> be signed</li>
-<li>You can sign with a self-signed key</li>
-<li>How you sign your apps is critical &mdash; read this document carefully</li>
-<li>Determine your signing strategy early in the development process</li>
-</ul>
-
-<h2>In this document</h2>
-
-<ol>
-<li><a href="#signing">Signing Process</a></li>
-<li><a href="#strategies">Signing Strategies</a></li>
-<li><a href="#setup">Basic Setup for Signing</a></li>
-<li><a href="#debugmode">Signing in Debug Mode</a></li>
-<li><a href="#releasemode">Signing Release Mode</a>
-    <ol>
-    <li><a href="#cert">Obtain a suitable private key</a></li>
-    <li><a href="#releasecompile">Compile the application in release mode</a></li>
-    <li><a href="#signapp">Sign your application with your private key</a></li>
-    <li><a href="#align">Align the final APK package</a></li>
-    <li><a href="#ExportWizard">Compile and sign with Eclipse ADT</a></li>
-    </ol>
-</li>
-<li><a href="#secure-key">Securing Your Private Key</a></li>
-
-</ol>
-
-<h2>See also</h2>
-
-<ol>
-<li><a href="{@docRoot}tools/publishing/versioning.html">Versioning Your Applications</a></li>
-<li><a href="{@docRoot}tools/publishing/preparing.html">Preparing to Publish</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>The Android system requires that all installed applications be digitally signed with a
-certificate whose private key is held by the application's developer. The Android system uses the
-certificate as a means of identifying the author of an application and establishing trust
-relationships between applications. The certificate is not used to control which applications the
-user can install. The certificate does not need to be signed by a certificate authority: it is
-perfectly allowable, and typical, for Android applications to use self-signed certificates.</p>
-
-<p>The important points to understand about signing Android applications are:</p>
-
-<ul>
-  <li>All applications <em>must</em> be signed. The system will not install an application
-on an emulator or a device if it is not signed.</li>
-  <li>To test and debug your application, the build tools sign your application with a special debug
-    key that is created by the Android SDK build tools.</li>
-  <li>When you are ready to release your application for end-users, you must sign it with a suitable
-    private key. You cannot publish an application that is signed with the debug key generated
-    by the SDK tools.</li>
-  <li>You can use self-signed certificates to sign your applications. No certificate authority is
-    needed.</li>
-  <li>The system tests a signer certificate's expiration date only at install time. If an
-application's signer certificate expires after the application is installed, the application
-will continue to function normally.</li>
-  <li>You can use standard tools &mdash; Keytool and Jarsigner &mdash; to generate keys and
-sign your application {@code .apk} files.</li>
-  <li>After you sign your application for release, we recommend that you use the
-    <code>zipalign</code> tool to optimize the final APK package.</li>
-</ul>
-
-<p>The Android system will not install or run an application that is not signed appropriately. This
-applies wherever the Android system is run, whether on an actual device or on the emulator.
-For this reason, you must <a href="#setup">set up signing</a> for your application before you can
-run it or debug it on an emulator or device.</p>
-
-<h2 id="signing">Signing Process</h3>
-
-<p>The Android build process signs your application differently depending on which build mode you
-use to build your application. There are two build modes: <em>debug mode</em> and <em>release
-mode</em>. You use debug mode when you are developing and testing your application. You use
-release mode when you want to build a release version of your application that you can
-distribute directly to users or publish on an application marketplace such as Google Play.</p>
-
-<p>When you build in <em>debug mode</em> the Android SDK build tools use the Keytool utility
-(included in the JDK) to create a debug key. Because the SDK build tools created the debug key,
-they know the debug key's alias and password. Each time you compile your application in debug mode,
-the build tools use the debug key along with the Jarsigner utility (also included in the JDK) to
-sign your application's <code>.apk</code> file. Because the alias and password are known to the SDK
-build tools, the tools don't need to prompt you for the debug key's alias and password each time
-you compile.</p>
-
-<p>When you build in <em>release mode</em> you use your own private key to sign your application. If
-you don't have a private key, you can use the Keytool utility to create one for you. When you
-compile your application in release mode, the build tools use your private key along with the
-Jarsigner utility to sign your application's <code>.apk</code> file. Because the certificate and
-private key you use are your own, you will have to provide the password for the keystore and key
-alias.</p>
-
-<p>The debug signing process happens automatically when you run or debug your application using
-Eclipse with the ADT plugin. Debug signing also happens automatically when you use the Ant build
-script with the <code>debug</code> option. You can automate the release signing process by using the
-Eclipse Export Wizard or by modifying the Ant build script and building with the
-<code>release</code> option.</p>
-
-<h2 id="strategies">Signing Strategies</h2>
-
-<p>Some aspects of application signing may affect how you approach the development
-of your application, especially if you are planning to release multiple
-applications. </p>
-
-<p>In general, the recommended strategy for all developers is to sign
-all of your applications with the same certificate, throughout the expected
-lifespan of your applications. There are several reasons why you should do so: </p>
-
-<ul>
-<li>Application upgrade &ndash; As you release updates to your application, you
-will want to continue to sign the updates with the same certificate or set of
-certificates, if you want users to upgrade seamlessly to the new version. When
-the system is installing an update to an application, it compares the
-certificate(s) in the new version with those in the existing version. If the
-certificates match exactly, including both the certificate data and order, then
-the system allows the update. If you sign the new version without using matching
-certificates, you will also need to assign a different package name to the
-application &mdash; in this case, the user installs the new version as a
-completely new application. </li>
-
-<li>Application modularity &ndash; The Android system allows applications that
-are signed by the same certificate to run in the same process, if the
-applications so requests, so that the system treats them as a single application.
-In this way you can deploy your application in modules, and users can update
-each of the modules independently if needed.</li>
-
-<li>Code/data sharing through permissions &ndash; The Android system provides
-signature-based permissions enforcement, so that an application can expose
-functionality to another application that is signed with a specified
-certificate. By signing multiple applications with the same certificate and
-using signature-based permissions checks, your applications can share code and
-data in a secure manner. </li>
-
-</ul>
-
-<p>Another important consideration in determining your signing strategy is
-how to set the validity period of the key that you will use to sign your
-applications.</p>
-
-<ul>
-<li>If you plan to support upgrades for a single application, you should ensure
-that your key has a validity period that exceeds the expected lifespan of
-that application. A validity period of 25 years or more is recommended.
-When your key's validity period expires, users will no longer be
-able to seamlessly upgrade to new versions of your application.</li>
-
-<li>If you will sign multiple distinct applications with the same key,
-you should ensure that your key's validity period exceeds the expected
-lifespan of <em>all versions of all of the applications</em>, including
-dependent applications that may be added to the suite in the future. </li>
-
-<li>If you plan to publish your application(s) on Google Play, the
-key you use to sign the application(s) must have a validity period
-ending after 22 October 2033. Google Play enforces this requirement
-to ensure that users can seamlessly upgrade applications when
-new versions are available. </li>
-</ul>
-
-<p>As you design your application, keep these points in mind and make sure to
-use a <a href="#cert">suitable certificate</a> to sign your applications. </p>
-
-<h2 id="setup">Basic Setup for Signing</h2>
-
-<p>Before you begin, make sure that the Keytool utility and Jarsigner utility are available to
-the SDK build tools. Both of these tools are available in the JDK. In most cases, you can tell
-the SDK build tools how to find these utilities by setting your <code>JAVA_HOME</code> environment
-variable so it references a suitable JDK. Alternatively, you can add the JDK version of Keytool and
-Jarsigner to your <code>PATH</code> variable.</p>
-
-<p>If you are developing on a version of Linux that originally came with GNU Compiler for
-Java, make sure that the system is using the JDK version of Keytool, rather than the gcj
-version. If Keytool is already in your <code>PATH</code>, it might be pointing to a symlink at
-<code>/usr/bin/keytool</code>. In this case, check the symlink target to be sure it points
-to the Keytool in the JDK.</p>
-
-<h2 id="debugmode">Signing in Debug Mode</h2>
-
-<p>The Android build tools provide a debug signing mode that makes it easier for you
-to develop and debug your application, while still meeting the Android system
-requirement for signing your APK.
-When using debug mode to build your app, the SDK tools invoke Keytool to automatically create
-a debug keystore and key. This debug key is then used to automatically sign the APK, so
-you do not need to sign the package with your own key.</p>
-
-<p>The SDK tools create the debug keystore/key with predetermined names/passwords:</p>
-<ul>
-<li>Keystore name: "debug.keystore"</li>
-<li>Keystore password: "android"</li>
-<li>Key alias: "androiddebugkey"</li>
-<li>Key password: "android"</li>
-<li>CN: "CN=Android Debug,O=Android,C=US"</li>
-</ul>
-
-<p>If necessary, you can change the location/name of the debug keystore/key or
-supply a custom debug keystore/key to use. However, any custom debug
-keystore/key must use the same keystore/key names and passwords as the default
-debug key (as described above). (To do so in Eclipse/ADT, go to
-<strong>Windows</strong> &gt; <strong>Preferences</strong> &gt;
-<strong>Android</strong> &gt; <strong>Build</strong>.) </p>
-
-<p class="caution"><strong>Caution:</strong> You <em>cannot</em> release your application
-to the public when signed with the debug certificate.</p>
-
-<h3>Eclipse Users</h3>
-
-<p>If you are developing in Eclipse/ADT (and have set up Keytool and Jarsigner as described above in
-<a href="#setup">Basic Setup for Signing</a>),
-signing in debug mode is enabled by default. When you run or debug your
-application, ADT signs the {@code .apk} file with the debug certificate, runs {@code zipalign} on
-the package, then installs it on
-the selected emulator or connected device. No specific action on your part is needed,
-provided ADT has access to Keytool.</p>
-
-<h3>Ant Users</h3>
-
-<p>If you are using Ant to build your {@code .apk} file, debug signing mode
-is enabled by using the <code>debug</code> option with the <code>ant</code> command
-(assuming that you are using a <code>build.xml</code> file generated by the
-<code>android</code> tool). When you run <code>ant debug</code> to
-compile your app, the build script generates a keystore/key and signs the APK for you.
-The script then also aligns the APK with the <code>zipalign</code> tool.
-No other action on your part is needed. Read
-<a href="{@docRoot}tools/building/building-cmdline.html#DebugMode">Building and Running Apps
-on the Command Line</a> for more information.</p>
-
-
-<h3 id="debugexpiry">Expiry of the Debug Certificate</h3>
-
-<p>The self-signed certificate used to sign your application in debug mode (the default on
-Eclipse/ADT and Ant builds) will have an expiration date of 365 days from its creation date.</p>
-
-<p>When the certificate expires, you will get a build error. On Ant builds, the error
-looks like this:</p>
-
-<pre>debug:
-[echo] Packaging bin/samples-debug.apk, and signing it with a debug key...
-[exec] Debug Certificate expired on 8/4/08 3:43 PM</pre>
-
-<p>In Eclipse/ADT, you will see a similar error in the Android console.</p>
-
-<p>To fix this problem, simply delete the <code>debug.keystore</code> file.
-The default storage location for AVDs is in <code>~/.android/</code> on OS X and Linux,
-in <code>C:\Documents and Settings\&lt;user>\.android\</code> on Windows XP, and in
-<code>C:\Users\&lt;user>\.android\</code> on Windows Vista and Windows 7.</p>
-
-
-<p>The next time you build, the build tools will regenerate a new keystore and debug key.</p>
-
-<p>Note that, if your development machine is using a non-Gregorian locale, the build
-tools may erroneously generate an already-expired debug certificate, so that you get an
-error when trying to compile your application. For workaround information, see the
-troubleshooting topic <a href="{@docRoot}resources/faq/troubleshooting.html#signingcalendar">
-I&nbsp;can't&nbsp;compile my app because the build tools generated an expired debug
-certificate</a>. </p>
-
-
-<h2 id="releasemode">Signing in Release Mode</h2>
-
-<p>When your application is ready for release to other users, you must:</p>
-<ol>
-  <li><a href="#cert">Obtain a suitable private key</a></li>
-  <li><a href="#releasecompile">Compile the application in release mode</a></li>
-  <li><a href="#signapp">Sign your application with your private key</a></li>
-  <li><a href="#align">Align the final APK package</a></li>
-</ol>
-
-<p>If you are developing in Eclipse with the ADT plugin, you can use the Export Wizard
-to perform the compile, sign, and align procedures. The Export Wizard even allows you to
-generate a new keystore and private key in the process. So if you use Eclipse, you can
-skip to <a href="#ExportWizard">Compile and sign with Eclipse ADT</a>.</p>
-
-
-
-<h3 id="cert">1. Obtain a suitable private key</h3>
-
-<p>In preparation for signing your application, you must first ensure that
-you have a suitable private key with which to sign. A suitable private
-key is one that:</p>
-
-<ul>
-<li>Is in your possession</li>
-<li>Represents the personal, corporate, or organizational entity to be identified
-with the application</li>
-<li>Has a validity period that exceeds the expected lifespan of the application
-or application suite. A validity period of more than 25 years is recommended.
-<p>If you plan to publish your application(s) on Google Play, note that a
-validity period ending after 22 October 2033 is a requirement. You can not upload an
-application if it is signed with a key whose validity expires before that date.
-</p></li>
-<li>Is not the debug key generated by the Android SDK tools. </li>
-</ul>
-
-<p>The key may be self-signed. If you do not have a suitable key, you must
-generate one using Keytool. Make sure that you have Keytool available, as described
-in <a href="#setup">Basic Setup</a>.</p>
-
-<p>To generate a self-signed key with Keytool, use the <code>keytool</code>
-command and pass any of the options listed below (and any others, as
-needed). </p>
-
-<p class="warning"><strong>Warning:</strong> Keep your private key secure.
-Before you run Keytool, make sure to read
-<a href="#secure-key">Securing Your Private Key</a> for a discussion of how to keep
-your key secure and why doing so is critically important to you and to users. In
-particular, when you are generating your key, you should select strong passwords
-for both the keystore and key.</p>
-
-<table>
-<tr>
-<th>Keytool Option</th>
-<th>Description</th>
-</tr>
-<tr>
-<td><code>-genkey</code></td><td>Generate a key pair (public and private
-keys)</td>
-</tr>
-<tr>
-<td><code>-v</code></td><td>Enable verbose output.</td>
-</tr>
-<tr>
-<td><code>-alias &lt;alias_name&gt;</code></td><td>An alias for the key. Only
-the first 8 characters of the alias are used.</td>
-</tr>
-<tr>
-<td><code>-keyalg &lt;alg&gt;</code></td><td>The encryption algorithm to use
-when generating the key. Both DSA and RSA are supported.</td>
-</tr>
-<tr>
-<td><code>-keysize &lt;size&gt;</code></td><td>The size of each generated key
-(bits). If not supplied, Keytool uses a default key size of 1024 bits. In
-general, we recommend using a key size of 2048 bits or higher. </td>
-</tr>
-<tr>
-<td><code>-dname &lt;name&gt;</code></td><td><p>A Distinguished Name that describes
-who created the key. The value is used as the issuer and subject fields in the
-self-signed certificate. </p><p>Note that you do not need to specify this option
-in the command line. If not supplied, Jarsigner prompts you to enter each
-of the Distinguished Name fields (CN, OU, and so on).</p></td>
-</tr>
-<tr>
-<td><code>-keypass &lt;password&gt;</code></td><td><p>The password for the
-key.</p> <p>As a security precaution, do not include this option in your command
-line. If not supplied, Keytool prompts you to enter the password. In this way,
-your password is not stored in your shell history.</p></td>
-</tr>
-<tr>
-<td><code>-validity &lt;valdays&gt;</code></td><td><p>The validity period for the
-key, in days. </p><p><strong>Note:</strong> A value of 10000 or greater is recommended.</p></td>
-</tr>
-<tr>
-<td><code>-keystore&nbsp;&lt;keystore-name&gt;.keystore</code></td><td>A name
-for the keystore containing the private key.</td>
-</tr>
-<tr>
-<td><code>-storepass &lt;password&gt;</code></td><td><p>A password for the
-keystore.</p><p>As a security precaution, do not include this option in your
-command line. If not supplied, Keytool prompts you to enter the password. In
-this way, your password is not stored in your shell history.</p></td>
-</tr>
-</table>
-
-<p>Here's an example of a Keytool command that generates a private key:</p>
-
-<pre>$ keytool -genkey -v -keystore my-release-key.keystore
--alias alias_name -keyalg RSA -keysize 2048 -validity 10000</pre>
-
-<p>Running the example command above, Keytool prompts you to provide
-passwords for the keystore and key, and to provide the Distinguished
-Name fields for your key. It then generates the keystore as a file called
-<code>my-release-key.keystore</code>. The keystore and key are
-protected by the passwords you entered. The keystore contains
-a single key, valid for 10000 days. The alias is a name that you &mdash;
-will use later, to refer to this keystore when signing your application. </p>
-
-<p>For more information about Keytool, see the documentation at
-<a
-href="http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html">
-http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html</a></p>
-
-
-
-<h3 id="releasecompile">2. Compile the application in release mode</h3>
-
-<p>In order to release your application to users, you must compile it in release mode.
-In release mode, the compiled application is not signed by default and you will need
-to sign it with your private key.</p>
-
-<p class="caution"><strong>Caution:</strong>
-You can not release your application unsigned, or signed with the debug key.</p>
-
-<h4>With Eclipse</h4>
-
-<p>To export an <em>unsigned</em> APK from Eclipse, right-click the project in the Package
-Explorer and select <strong>Android Tools</strong> > <strong>Export Unsigned Application
-Package</strong>. Then specify the file location for the unsigned APK.
-(Alternatively, open your <code>AndroidManifest.xml</code> file in Eclipse, select
-the <strong>Manifest</strong> tab, and click <strong>Export an unsigned APK</strong>.)</p>
-
-<p>Note that you can combine the compiling and signing steps with the Export Wizard. See
-<a href="#ExportWizard">Compiling and signing with Eclipse ADT</a>.</p>
-
-<h4>With Ant</h4>
-
-<p>If you are using Ant, you can enable release mode by using the <code>release</code> option
-with the <code>ant</code> command. For example, if you are running Ant from the
-directory containing your {@code build.xml} file, the command would look like this:</p>
-
-<pre>$ ant release</pre>
-
-<p>By default, the build script compiles the application APK without signing it. The output file
-in your project {@code bin/} will be <code><em>&lt;your_project_name></em>-unsigned.apk</code>.
-Because the application APK is still unsigned, you must manually sign it with your private
-key and then align it using {@code zipalign}.</p>
-
-<p>However, the Ant build script can also perform the signing
-and aligning for you, if you have provided the path to your keystore and the name of
-your key alias in the project's {@code ant.properties} file. With this information provided,
-the build script will prompt you for your keystore and alias password when you perform
-<code>ant release</code>, it will sign the package and then align it. The final output
-file in {@code bin/} will instead be
-<code><em>&lt;your_project_name></em>-release.apk</code>. With these steps
-automated for you, you're able to skip the manual procedures below (steps 3 and 4).
-To learn how to specify your keystore and alias in the {@code ant.properties} file,
-see <a href="{@docRoot}tools/building/building-cmdline.html#ReleaseMode">
-Building and Running Apps on the Command Line</a>.</p>
-
-
-
-<h3 id="signapp">3. Sign your application with your private key</h3>
-
-<p>When you have an application package that is ready to be signed, you can do sign it
-using the Jarsigner tool. Make sure that you have Jarsigner available on your
-machine, as described in <a href="#setup">Basic Setup</a>. Also, make sure that
-the keystore containing your private key is  available.</p>
-
-<p>To sign your application, you run Jarsigner, referencing both the
-application's APK and the keystore containing the private key with which to
-sign the APK. The table below shows the options you could use. </p>
-
-<table>
-<tr>
-<th>Jarsigner Option</th>
-<th>Description</th>
-</tr>
-<tr>
-<td><code>-keystore&nbsp;&lt;keystore-name&gt;.keystore</code></td><td>The name of
-the keystore containing your private key.</td>
-</tr>
-<tr>
-<td><code>-verbose</code></td><td>Enable verbose output.</td>
-</tr>
-<tr>
-<td><code>-sigalg</code></td><td>The name of the signature algorithim to use in signing the APK.
-Use the value {@code MD5withRSA}.</td>
-</tr>
-<tr>
-<td><code>-digestalg</code></td><td>The message digest algorithim to use in processing the entries
-of an APK. Use the value {@code SHA1}.</td>
-</tr>
-<tr>
-<td><code>-storepass &lt;password&gt;</code></td><td><p>The password for the
-keystore. </p><p>As a security precaution, do not include this option
-in your command line unless you are working at a secure computer.
-If not supplied, Jarsigner prompts you to enter the password. In this
-way, your password is not stored in your shell history.</p></td>
-</tr>
-<tr>
-<td><code>-keypass &lt;password&gt;</code></td><td><p>The password for the private
-key. </p><p>As a security precaution, do not include this option
-in your command line unless you are working at a secure computer.
-If not supplied, Jarsigner prompts you to enter the password. In this
-way, your password is not stored in your shell history.</p></td>
-</tr>
-</table>
-
-<p>Here's how you would use Jarsigner to sign an application package called
-<code>my_application.apk</code>, using the example keystore created above.
-</p>
-
-<pre>$ jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore my-release-key.keystore
-my_application.apk alias_name</pre>
-
-<p>Running the example command above, Jarsigner prompts you to provide
-passwords for the keystore and key. It then modifies the APK
-in-place, meaning the APK is now signed. Note that you can sign an
-APK multiple times with different keys.</p>
-
-<p class="caution"><strong>Caution:</strong> As of JDK 7, the default signing algorithim has
-changed, requiring you to specify the signature and digest algorithims ({@code -sigalg} and {@code
--digestalg}) when you sign an APK.</p>
-
-<p>To verify that your APK is signed, you can use a command like this:</p>
-
-<pre>$ jarsigner -verify my_signed.apk</pre>
-
-<p>If the APK is signed properly, Jarsigner prints "jar verified".
-If you want more details, you can try one of these commands:</p>
-
-<pre>$ jarsigner -verify -verbose my_application.apk</pre>
-
-<p>or</p>
-
-<pre>$ jarsigner -verify -verbose -certs my_application.apk</pre>
-
-<p>The command above, with the <code>-certs</code> option added, will show you the
-"CN=" line that describes who created the key.</p>
-
-<p class="note"><strong>Note:</strong> If you see "CN=Android Debug", this means the APK was
-signed with the debug key generated by the Android SDK. If you intend to release
-your application, you must sign it with your private key instead of the debug
-key.</p>
-
-<p>For more information about Jarsigner, see the documentation at
-<a href="http://docs.oracle.com/javase/6/docs/technotes/tools/windows/jarsigner.html">
-http://docs.oracle.com/javase/6/docs/technotes/tools/windows/jarsigner.html</a></p>
-
-
-<h3 id="align">4. Align the final APK package</h3>
-
-<p>Once you have signed the APK with your private key, run <code>zipalign</code> on the file.
-This tool ensures that all uncompressed data starts with a particular byte alignment,
-relative to the start of the file. Ensuring alignment at 4-byte boundaries provides
-a performance optimization when installed on a device. When aligned, the Android
-system is able to read files with {@code mmap()}, even if
-they contain binary data with alignment restrictions, rather than copying all
-of the data from the package. The benefit is a reduction in the amount of
-RAM consumed by the running application.</p>
-
-<p>The <code>zipalign</code> tool is provided with the Android SDK, inside the
-<code>tools/</code> directory. To align your signed APK, execute:</p>
-
-<pre>$ zipalign -v 4 <em>your_project_name</em>-unaligned.apk <em>your_project_name</em>.apk</pre>
-
-<p>The {@code -v} flag turns on verbose output (optional). {@code 4} is the
-byte-alignment (don't use anything other than 4). The first file argument is
-your signed {@code .apk} file (the input) and the second file is the destination {@code .apk} file
-(the output). If you're overriding an existing APK, add the {@code -f} flag.</p>
-
-<p class="caution"><strong>Caution:</strong> Your input APK must be signed with your
-private key <strong>before</strong> you optimize the package with {@code zipalign}.
-If you sign it after using {@code zipalign}, it will undo the alignment.</p>
-
-<p>For more information, read about the
-<a href="{@docRoot}tools/help/zipalign.html">zipalign</a> tool.
-
-
-<h3 id="ExportWizard">Compile and sign with Eclipse ADT</h3>
-
-<p>If you are using Eclipse with the ADT plugin, you can use the Export Wizard to
-export a <em>signed</em> APK (and even create a new keystore,
-if necessary). The Export Wizard performs all the interaction with
-the Keytool and Jarsigner for you, which allows you to sign the package using a GUI
-instead of performing the manual procedures to compile, sign,
-and align, as discussed above. Once the wizard has compiled and signed your package,
-it will also perfom package alignment with {@code zipalign}.
-Because the Export Wizard uses both Keytool and Jarsigner, you should
-ensure that they are accessible on your computer, as described above
-in the <a href="#setup">Basic Setup for Signing</a>.</p>
-
-<p>To create a signed and aligned APK in Eclipse:</p>
-
-<ol>
-  <li>Select the project in the Package
-Explorer and select <strong>File > Export</strong>.</li>
-  <li>Open the Android folder, select Export Android Application,
-  and click <strong>Next</strong>.
-  <p>The Export Android Application wizard now starts, which will
-  guide you through the process of signing your application,
-  including steps for selecting the private key with which to sign the APK
-  (or creating a new keystore and private key).</p>
-  <li>Complete the Export Wizard and your application will be compiled,
-  signed, aligned, and ready for distribution.</li>
-</ol>
-
-
-
-<h2 id="secure-key">Securing Your Private Key</h2>
-
-<p>Maintaining the security of your private key is of critical importance, both
-to you and to the user. If you allow someone to use your key, or if you leave
-your keystore and passwords in an unsecured location such that a third-party
-could find and use them, your authoring identity and the trust of the user
-are compromised. </p>
-
-<p>If a third party should manage to take your key without your knowledge or
-permission, that person could sign and distribute applications that maliciously
-replace your authentic applications or corrupt them. Such a person could also
-sign and distribute applications under your identity that attack other
-applications or the system itself, or corrupt or steal user data. </p>
-
-<p>Your reputation as a developer entity depends on your securing your private
-key properly, at all times, until the key is expired. Here are some tips for
-keeping your key secure: </p>
-
-<ul>
-<li>Select strong passwords for the keystore and key.</li>
-<li>When you generate your key with Keytool, <em>do not</em> supply the
-<code>-storepass</code> and <code>-keypass</code> options at the command line.
-If you do so, your passwords will be available in your shell history,
-which any user on your computer could access.</li>
-<li>Similarly, when signing your applications with Jarsigner,
-<em>do not</em> supply the <code>-storepass</code> and <code>-keypass</code>
-options at the command line. </li>
-<li>Do not give or lend anyone your private key, and do not let unauthorized
-persons know your keystore and key passwords.</li>
-</ul>
-
-<p>In general, if you follow common-sense precautions when generating, using,
-and storing your key, it will remain secure. </p>
\ No newline at end of file
diff --git a/docs/html/tools/workflow/publishing/preparing.jd b/docs/html/tools/workflow/publishing/preparing.jd
deleted file mode 100644
index 99250373..0000000
--- a/docs/html/tools/workflow/publishing/preparing.jd
+++ /dev/null
@@ -1,358 +0,0 @@
-page.title=Preparing for Release
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Quickview</h2>
-    <ul>
-      <li>Learn which resources you'll need to release your app.</li>
-      <li>Find out how to configure and build your app for release.</li>
-      <li>Learn best practices for releasing your app.</li>
-    </ul>
-    <h2>In this document</h2>
-    <ol>
-      <li><a href="#publishing-intro">Introduction</a></li>
-      <li><a href="#publishing-gather">Gathering Materials and Resources</a></li>
-      <li><a href="#publishing-configure">Configuring Your Application</a></li>
-      <li><a href="#publishing-build">Building Your Application</a></li>
-      <li><a href="#publishing-resources">Preparing External Servers and Resources</a></li>
-      <li><a href="#publishing-test">Testing Your Application for Release</a></li>
-    </ol>
-    <h2>See also</h2>
-    <ol>
-      <li><a href="{@docRoot}tools/publishing/publishing_overview.html">Publishing Overview</a></li>
-      <li><a href="{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a></li>
-      <li><a href="{@docRoot}tools/publishing/publishing.html">Publishing on Google Play</a></li>
-    </ol>
-  </div>
-</div>
-
-<p>Before you distribute your Android application to users you need to prepare it for release. The
-preparation process is a required <a href="{@docRoot}tools/workflow/index.html">development
-task</a> for all Android applications and is the first step in the publishing process (see figure
-1).</p>
-
-<p>When you prepare your application for release, you configure, build, and test a release
-version of your application. The configuration tasks are straightforward, involving basic code
-cleanup and code modification tasks that help optimize your application. The build process is
-similar to the debug build process and can be done using JDK and Android SDK tools. The testing
-tasks serve as a final check, ensuring that your application performs as expected under real-world
-conditions. When you are finished preparing your application for release you have a signed
-<code>.apk</code> file, which you can distribute directly to users or distribute through an
-application marketplace such as Google Play.</p>
-
-<p>This document summarizes the main tasks you need to perform to prepare your application for
-release. The tasks that are described in this document apply to all Android applications regardless
-how they are released or distributed to users. If you are releasing your application through Google
-Play, you should also read <a href="{@docRoot}tools/publishing/publishing.html">Publishing on
-Google Play</a> to be sure your release-ready application satisfies all Google Play
-requirements.</p>
-
-<p class="note"><strong>Note:</strong> As a best practice, your application should meet all of your
-release criteria for functionality, performance, and stability before you perform the tasks outlined
-in this document.</p>
-
-<img src="{@docRoot}images/publishing/publishing_overview_prep.png"
-     alt="Shows how the preparation process fits into the development process"
-     height="190"
-     id="figure1" />
-<p class="img-caption">
-  <strong>Figure 1.</strong> Preparing for release is a required <a
-href="{@docRoot}tools/workflow/index.html">development
-task</a> and is the first step in the publishing process.
-</p>
-
-<h2 id="publishing-intro">Introduction</h2>
-
-<p>To release your application to users you need to create a release-ready package that users can
-install and run on their Android-powered devices. The release-ready package contains the same
-components as the debug <code>.apk</code> file &mdash; compiled source code, resources, manifest
-file, and so on &mdash; and it is built using the same build tools. However, unlike the debug
-<code>.apk</code> file, the release-ready <code>.apk</code> file is signed with your own certificate
-and it is optimized with the zipalign tool.</p>
-
-<div class="figure" style="width:331px">
-  <img src="{@docRoot}images/publishing/publishing_preparing.png"
-       alt="Shows the five tasks you perform to prepare your app for release"
-       height="450" />
-  <p class="img-caption">
-    <strong>Figure 2.</strong> You perform five main tasks to prepare your application for
-    release.
-  </p>
-</div>
-
-<p>The signing and optimization tasks are usually seamless if you are building your application with
-Eclipse and the ADT plugin or with the Ant build script (included with the Android SDK). For
-example, you can use the Eclipse Export Wizard to compile, sign, and optimize your application all
-at once. You can also configure the Ant build script to do the same when you build from the command
-line.</p>
-
-<p>To prepare your application for release you typically perform five main tasks (see figure 2).
-Each main task may include one or more smaller tasks depending on how you are releasing your
-application. For example, if you are releasing your application through Google Play you may want
-to add special filtering rules to your manifest while you are configuring your application for
-release. Similarly, to meet Google Play publishing guidelines you may have to prepare screenshots
-and create promotional text while you are gathering materials for release.</p>
-
-<p>You usually perform the tasks listed in figure 2 after you have throroughly debugged and tested
-your application. The Android SDK contains several tools to help you test and debug your Android
-applications. For more information, see the <a
-href="{@docRoot}tools/debugging/index.html">Debugging</a> and <a
-href="{@docRoot}tools/testing/index.html">Testing</a> sections in the Dev Guide.</p>
-
-<h2 id="publishing-gather">Gathering Materials and Resources</h2>
-
-<p>To begin preparing your application for release you need to gather several supporting items. At a
-minimum this includes cryptographic keys for signing your application and an application icon. You
-might also want to include an end-user license agreement.</p>
-
-<h4 id="publishing-keys">Cryptographic keys</h4>
-
-<p>The Android system requires that each installed application be digitally signed with a
-certificate that is owned by the application's developer (that is, a certificate for which the
-developer holds the private key). The Android system uses the certificate as a means of identifying
-the author of an application and establishing trust relationships between applications. The
-certificate that you use for signing does not need to be signed by a certificate authority; the
-Android system allows you to sign your applications with a self-signed certificate. To learn about
-certificate requirements, see <a href="{@docRoot}tools/publishing/app-signing.html#cert">Obtain a
-suitable private key</a>.</p>
-
-<p class="caution"><strong>Important:</strong> Your application must be signed with a cryptographic
-key whose validity period ends after 22 October 2033.</p>
-
-<p>You may also have to obtain other release keys if your application accesses a service or uses a
-third-party library that requires you to use a key that is based on your private key. For example,
-if your application uses the <a
-href="http://code.google.com/android/add-ons/google-apis/reference/com/google/android/maps/MapView.html">MapView</a>
-class, which is part of the <a
-href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google Maps external
-library</a>, you will need to register your application with the Google Maps service and obtain
-a Maps API key. For information about getting a Maps API key, see <a
-href="http://code.google.com/android/add-ons/google-apis/mapkey.html"> Obtaining a Maps API
-key</a>.</p>
-
-<h4>Application Icon</h4>
-
-<p>Be sure you have an application icon and that it meets the recommended <a
-href="{@docRoot}guide/practices/ui_guidelines/icon_design_launcher.html">icon guidelines</a>. Your
-application's icon helps users identify your application on a device's Home
-screen and in the Launcher window. It also appears in Manage Applications, My Downloads, and
-elsewhere. In addition, publishing services such as Google Play display your icon to users.</p>
-
-<p class="note"><strong>Note:</strong> If you are releasing your application on Google Play, you
-need to create a high resolution
-  version of your icon. See <a
-href="https://www.google.com/support/androidmarket/developer/bin/answer.py?answer=1078870">Graphic
-Assets for your Application</a> for more information.</p>
-
-<h4>End-user License Agreement</h4>
-
-<p>Consider preparing an End User License Agreement (EULA) for your application. A EULA can help
-protect your person, organization, and intellectual property, and we recommend that you provide one
-with your application.</p>
-
-<h4>Miscellaneous Materials</h4>
-
-<p>You might also have to prepare promotional and marketing materials to publicize your application.
-For example, if you are releasing your application on Google Play you will need to prepare some
-promotional text and you will need to create screenshots of your application. For more
-information, see
-<a href="https://www.google.com/support/androidmarket/developer/bin/answer.py?answer=1078870">
-Graphic Assets for your Application</a></p>
-
-<h2 id="publishing-configure">Configuring Your Application for Release</h2>
-
-<p>After you gather all of your supporting materials you can start configuring your application
-for release. This section provides a summary of the configuration changes we recommend that you make
-to your source code, resource files, and application manifest prior to releasing your application.
-Although most of the configuration changes listed in this section are optional, they are
-considered good coding practices and we encourage you to implement them. In some cases,
-you may have already made these configuration changes as part of your development process.</p>
-
-<h4>Choose a good package name</h4>
-
-<p>Make sure you choose a package name that is suitable over the life of your application. You
-cannot change the package name after you distribute your application to users. You can set the
-package name in application's manifest file. For more information, see the <a
-href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a> attribute
-documentation.</p>
-
-<h4>Turn off logging and debugging</h4>
-
-<p>Make sure you deactivate logging and disable the debugging option before you build your
-application for release. You can deactivate logging by removing calls to
-{@link android.util.Log} methods in your source files. You can disable debugging by removing the
-<code>android:debuggable</code> attribute from the <code>&lt;application&gt;</code> tag in your
-manifest file, or by setting the <code>android:debuggable</code> attribute to
-<code>false</code> in your manifest file. Also, remove any log files or static test files that
-were created in your project.</p>
-
-<p>Also, you should remove all {@link android.os.Debug} tracing calls that you
-added to your code, such as {@link android.os.Debug#startMethodTracing()} and
-{@link android.os.Debug#stopMethodTracing()} method calls.</p>
-
-<h4>Clean up your project directories</h4>
-
-<p>Clean up your project and make sure it conforms to the directory structure described in <a
-href="{@docRoot}tools/projects/index.html#ApplicationProjects">Android Projects</a>.
-Leaving stray or orphaned files in your project can prevent your application from compiling and
-cause your application to behave unpredictably. At a minimum you should do the following cleanup
-tasks:</p>
-
-<ul>
-  <li>Review the contents of your <code>jni/</code>, <code>lib/</code>, and <code>src/</code>
-  directories.  The <code>jni/</code> directory should contain only source files associated with the
-  <a href="{@docRoot}tools/sdk/ndk/index.html">Android NDK</a>, such as
-  <code>.c</code>, <code>.cpp</code>, <code>.h</code>, and <code>.mk</code> files. The
-  <code>lib/</code> directory should contain only third-party library files or private library
-  files, including prebuilt shared and static libraries (for example, <code>.so</code> files). The
-  <code>src/</code> directory should contain only the source files for your application
-  (<code>.java</code> and <code>.aidl</code> files). The <code>src/</code> directory should not
-  contain any <code>.jar</code> files.</li>
-  <li>Check your project for private or proprietary data files that your application does not use
-  and remove them. For example, look in your project's <code>res/</code> directory for old
-  drawable files, layout files, and values files that you are no longer using and delete them.</li>
-  <li>Check your <code>lib/</code> directory for test libraries and remove them if they are no
-  longer being used by your application.</li>
-  <li>Review the contents of your <code>assets/</code> directory and your <code>res/raw/</code>
-    directory for raw asset files and static files that you need to update or remove prior to
-    release.</li>
-</ul>
-
-<h4>Review and update your manifest settings</h4>
-
-<p>Verify that the following manifest items are set correctly:</p>
-
-<ul>
-  <li><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
-  &lt;uses-permission&gt;</a> element
-    <p>You should specify only those permissions that are relevant and required for your application.</p>
-  </li>
-  <li><code>android:icon</code> and <code>android:label</code> attributes
-    <p>You must specify values for these attributes, which are located in the
-    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a>
-    element.</p>
-  </li>
-  <li><code>android:versionCode</code> and <code>android:versionName</code> attributes.
-    <p>We recommend that you specify values for these attributes, which are located in the
-      <a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a>
-      element. For more information see
-      <a href="{@docRoot}tools/publishing/versioning.html">Versioning your Application</a>.</p>
-  </li>
-</ul>
-
-<p>There are several additional manifest elements that you can set if you are releasing your
-application on Google Play. For example, the <code>android:minSdkVersion</code> and
-<code>android:targetSdkVersion</code> attributes, which are located in the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"> &lt;uses-sdk&gt;</a> element. For more
-information about these and other Google Play settings, see <a
-href="{@docRoot}/guide//appendix/market-filters.html">Filters on Google Play</a>.</p>
-
-<h4>Address compatibility issues</h4>
-
-<p>Android provides several tools and techniques to make your application compatible with a wide
-range of devices. To make your application available to the largest number of users, consider
-doing the following:</p>
-
-<ul>
-  <li><strong>Add support for multiple screen configurations</strong>
-    <p>Make sure you meet the
-    <a href="{@docRoot}guide/practices/screens_support.html#screen-independence">
-    best practices for supporting multiple screens</a>. By supporting multiple screen configurations
-    you can create an application that functions properly and looks good on any of the screen sizes
-    supported by Android.</p>
-  </li>
-  <li><strong>Optimize your application for Android 3.0 devices.</strong>
-    <p>If your application is designed for devices older than Android 3.0, make it compatible
-    with Android 3.0 devices by following the guidelines and best practices described in
-    <a href="{@docRoot}guide/practices/optimizing-for-3.0.html">Optimizing Apps for Android 3.0
-    </a>.</p>
-  </li>
-  <li><strong>Consider using the Support Library</strong>
-    <p>If your application is designed for devices running Android 3.x, make your application
-    compatible with older versions of Android by adding the
-    <a href="{@docRoot}tools/extras/support-library.html">Support Library</a> to your
-    application project. The Support Library provides static support libraries that you can add to
-    your Android application, which enables you to use APIs that are either not available on
-    older platform versions or use utility APIs that are not part of the framework APIs.</p>
-  </li>
-</ul>
-
-<h4>Update URLs for servers and services</h4>
-
-<p>If your application accesses remote servers or services, make sure you are using the production
-URL or path for the server or service and not a test URL or path.</p>
-
-<h4>Implement Licensing (if you are releasing on Google Play)</h4>
-
-<p>If you are releasing a paid application through Google Play, consider adding support for
-Google Play Licensing. Licensing lets you control access to your application based on whether the
-current user has purchased it. Using Google Play Licensing is optional even if you are
-releasing your app through Google Play.</p>
-
-<p>For more information about Google Play Licensing Service and how to use it in your
-application, see <a href="{@docRoot}google/play/licensing/index.html">Application Licensing</a>.</p>
-
-<h2 id="publishing-build">Building Your Application for Release</h2>
-
-<p>After you finish configuring your application you can build it into a release-ready
-<code>.apk</code> fle that is signed and optimized. The JDK includes the tools for signing the
-<code>.apk</code> file (Keytool and Jarsigner); the Android SDK includes the tools for compiling and
-optimizing the <code>.apk</code> file. If you are using Eclipse with the ADT plugin or you are using
-the Ant build script from the command line, you can automate the entire build process.</p>
-
-<h3>Building with Eclipse</h3>
-
-<p>You can use the Eclipse Export Wizard to build a release-ready <code>.apk</code> file that is
-signed with your private key and optimized. To learn how to run the Export Wizard, see
-<a href="{@docRoot}tools/publishing/app-signing.html#ExportWizard">Compile and sign with Eclipse
-ADT</a>. The Export Wizard compiles your application for release, signs your application with your
-private key, and optimizes your application with the zipalign tool. The Export Wizard should run
-successfully if you have run or debugged your application from Eclipse and you have no errors in
-your application (see <a href="{@docRoot}tools/building/building-eclipse.html">Building
-and Running from Eclipse with ADT</a> for more information.</p>
-
-<p>The Export Wizard assumes that you have a <a href="#billing-keys">certificate and private key</a>
-suitable for signing your application. If you do not have a suitable certificate and private key,
-the Export Wizard will help you generate one (see
-<a href="{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a> for more
-information about the signing process and signing guidelines.</p>
-
-<h3>Building with Ant</h3>
-
-<p>You can use the Ant build script (included in the Android SDK) to build a release-ready
-<code>.apk</code> file that is signed with your private key and optimized. To learn how to do this,
-see <a href="{@docRoot}tools/building/building-cmdline.html#ReleaseMode">Building in
-Release Mode</a>. This build method assumes you have a <a href="#billing-keys">certificate and
-private key</a> suitable for signing your application. If you do not have a suitable certificate and
-private key, the Export Wizard will help you generate one (see
-<a href="{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a> for more
-information about the signing process and signing guidelines.</p>
-
-<h2 id="publishing-resources">Preparing External Servers and Resources</h2>
-
-<p>If your application relies on a remote server, make sure the server is secure and that it is
-configured for production use. This is particularly important if you are implementing <a
-href="{@docRoot}google/play/billing/index.html">in-app billing</a> in your application and you are
-performing the signature verification step on a remote server.</p>
-
-<p>Also, if your application fetches content from a remote server or a real-time service (such as a
-content feed), be sure the content you are providing is up to date and production-ready.</p>
-
-<h2 id="publishing-test">Testing Your Application for Release</h2>
-
-<p>Testing the release version of your application helps ensure that your application runs properly
-under realistic device and network conditions. Ideally, you should test your application on at least
-one handset-sized device and one tablet-sized device to verify that your user interface elements are
-sized correctly and that your application's performance and battery efficiency are acceptable.</p>
-
-<p>As a starting point for testing, see
-<a href="{@docRoot}tools/testing/what_to_test.html">What to Test</a>. This article provides
-a summary of common Android situations that you should consider when you are testing. When you are
-done testing and you are satisfied that the release version of your application
-behaves correctly, you can release your application to users. For more information, see
-<a href="{@docRoot}tools/publishing/publishing_overview.html#publishing-release">Releasing Your
-Application to Users</a>. If you are publishing your application on Google Play, see
-<a href="{@docRoot}tools/publishing/publishing.html">Publishing on Google Play</a>.</p>
-
-
diff --git a/docs/html/tools/workflow/publishing/publishing.jd b/docs/html/tools/workflow/publishing/publishing.jd
deleted file mode 100644
index ab6321c..0000000
--- a/docs/html/tools/workflow/publishing/publishing.jd
+++ /dev/null
@@ -1,703 +0,0 @@
-page.title=Publishing on Google Play
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Quickview</h2>
-
-<ul>
-<li>Learn how to publish and update apps on Google Play.</li>
-<li>Find out how to create links to apps that are published on Google Play.</li>
-<li>Learn about Google Play features.</li>
-</ul>
-
-
-<h2>In this document</h2>
-
-<ol>
-<li><a href="#overview">About Google Play</a>
-<li><A href="#marketpublish">Publishing Apps on Google Play</a></li>
-<li><a href="#marketupgrade">Publishing Updates on Google Play</a></li>
-<li><a href="#marketLicensing">Using Google Play Licensing Service</a></li>
-<li><a href="#marketinappbilling">Using Google Play In-app Billing</a></li>
-<li><a href="#marketintent">Linking to Your Apps on Google Play</a>
-  <ol>
-    <li><a href="#OpeningDetails">Opening an app's details page</a></li>
-    <li><a href="#PerformingSearch">Performing a search</a></li>
-    <li><a href="#BuildaButton">Build a Google Play button</a></li>
-    <li><a href="#UriSummary">Summary of URI formats</a></li>
-  </ol>
-</li>
-</ol>
-
-<h2>See also</h2>
-
-<ol>
-<li><a href="{@docRoot}tools/publishing/publishing_overview.html">Publishing Overview</a></li>
-<li><a href="{@docRoot}tools/publishing/preparing.html">Preparing for Release</a></li>
-</ol>
-
-<div id="qv-extra">
-  <img id="rule" src="{@docRoot}assets/images/grad-rule-qv.png">
-  <div id="qv-sub-rule">
-    <img src="{@docRoot}assets/images/icon_play.png" style="float:left;margin:0;padding:0 5px;">
-    <h2 style="color:#669999;">Already know about Google Play and want to get started?</h2>
-    <p>Go to <a href="http://play.google.com/apps/publish">Google Play</a>, create a developer
-account, and upload your application. For more information about required assets, listing details,
-and publishing options, see <a
-href="http://market.android.com/support/bin/answer.py?answer=113469">Upload
-Applications</a>.</p>
-  </div>
-</div>
-
-</div>
-</div>
-
-<p>One of the most effective ways to get your application into users' hands is to
-publish it on an application marketplace like Google Play. Publishing on Google Play is a
-straightforward process that you can do in just a few simple steps&mdash;register, configure,
-upload, and publish. Registration takes only a few minutes and needs to be done only once.
-The configuration and publishing steps can all be done through the Google Play Developer Console
-after you register as a Google Play developer.</p>
-
-<p>To start publishing on Google Play, first read this topic and then go to the <a
-href="https://play.google.com/apps/publish">Google Play Developer Console</a> and register as
-a Google Play developer.</p>
-
-
-<h2 id="overview">About Google Play</h2>
-
-<p>Google Play is a robust publishing platform that helps you publicize, sell, and distribute
-your Android applications to users around the world. When you release your applications through
-Google Play you have access to a suite of developer tools that let you analyze your sales,
-identify market trends, and control who your applications are being distributed to. You also have
-access to several revenue-enhancing features, such as <a
-href="{@docRoot}google/play/billing/index.html">in-app billing</a> and
-<a href="{@docRoot}google/play/licensing/index.html">application licensing</a>.</p>
-
-<p>Before you can publish applications on Google Play, you need to <a
-href="http://play.google.com/apps/publish">register</a> as a Google Play developer. During the
-registration process you will need to create a developer profile, pay a registration fee, and agree
-to the <a href="http://www.android.com/us/developer-distribution-agreement.html">Google Play
-Developer Distribution Agreement</a>. After you register you can access the Developer
-Console, where you can upload applications, configure publishing options, and monitor publishing
-data. If you want to sell your applications or use the in-app billing feature, you will also need
-to set up a Google Wallet merchant account. For more information about the registration process,
-see <a href="https://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=113468">
-Developer Registration</a>.</p>
-
-<h2 id="marketpublish">Publishing Apps on Google Play</h2>
-
-<p>Publishing your application on Google Play is a simple process that involves three basic
-tasks (see figure 1):</p>
-
-<ul>
-  <li>Creating various graphical assets that
-accompany your app on Google Play.</li>
-  <li>Using the Google Play <a
-href="http://play.google.com/apps/publish">Developer Console</a> to configure publishing options,
-specify listing details, and upload your app and graphical assets to Google Play.</li>
-  <li>Reviewing your publishing settings and changing the release
-status of your app from Unpublished to Published.</li>
-</ul>
-
-<img src="{@docRoot}images/publishing/publishing_android_market.png"
-     alt="Shows the three steps that are required to publish on Google Play"
-     height="168"
-     id="figure1" />
-<p class="img-caption">
-  <strong>Figure 1.</strong> To publish apps on Google Play you must first <a
-href="{@docRoot}tools/publishing/preparing.html">prepare your app for release</a> and then perform
-three simple tasks.
-</p>
-
-<p class="caution"><strong>Important:</strong> You must <a
-href="{@docRoot}tools/publishing/preparing.html">prepare your application for release</a> before you
-can publish it on Google Play. When you prepare your application for release you configure it for
-release and build it in release mode. Building in release mode signs your application's {@code .apk}
-file with your private release key. You cannot publish an application on Google Play unless it is
-signed with your own private release key.</p>
-
-<h3>Preparing promotional materials</h3>
-
-<p>To fully leverage the marketing and publicity capabilities of Google Play, you need to create
-several graphical assets that accompany your app on Google Play, such as screenshots, videos,
-promotional graphics, and promotional text. At a minimum you must provide two screenshots of your
-application and a high resolution application icon. The screenshots are displayed on the details
-page for your application on Google Play, and the high resolution application icon is displayed
-in various locations throughout Google Play. The high resolution icon does not replace the
-launcher icon for your application, rather, it serves as a supplemental icon and should look
-the same as your launcher icon. Promotional video,
-graphics, and text are optional, although we strongly recommended that you prepare these for your
-app. For more information about the graphic assets that accompany your application, see <a
-href="http://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=1078870">Graphic
-Assets for your Application</a>.</p>
-
-<h3>Configuring options and uploading assets</h3>
-
-<p>Google Play lets you target your application to a worldwide pool of users and devices. To
-reach these users you can use the Developer Console to configure various publishing
-options and listing details for your app. For example, you can choose the <a
-href="http://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=138294&topic=
-2365624&ctx=topic">countries</a> you want to reach, the listing languages you want to use, and the
-<a
-href="http://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=138412&topic=
-15867&ctx=topic">price</a> you want to charge in each country. You can also configure listing
-details such as the application type, <a
-href="https://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=113475&topic=
-2365760&ctx=topic">category</a>, and <a
-href="http://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=188189&topic=
-2364761&ctx=topic">content rating</a>. In addition, if you want to sell items within your app using
-the in-app billing feature, you can use the Developer Console to <a
-href="http://grendel.sea.corp.google.com:48014/google/play/billing/billing_admin.html#billing-list
-- setup">create a product list</a> and control which items are available for purchase in your
-app.</p>
-
-<p>When you are finished setting publishing options and listing details, you can upload your assets
-and your application to Google Play. You can also upload your application as a draft
-(unpublished) application, which lets you do final testing before you publish it for final
-release.</p>
-
-<p>To learn more about Google Play publishing settings, see the following resources:</p>
-
-<ul>
-  <li><a
-href="http://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=113469&topic=
-236562&ctx=topic">Upload Applications</a>&mdash;provides a summary of the publishing settings
-you can configure for an app.</li>
-  <li><a
-href="http://support.google.com/androidmarket/developer/bin/topic.py?hl=en&topic=15867">Selling
-Your Apps</a>&mdash;provides guidance about pricing, supported currencies, tax rates, and many
-other topics related to selling apps.</li>
-  <li><a
-href="https://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=1169947&topic=
-15867&ctx=topic">Selling Apps in Multiple Currencies</a>&mdash;provides a description of how
-pricing, payouts, and exchange rates work.</li>
-</ul>
-
-<h3>Publishing your application</h3>
-
-<p>When you are satisfied that your publishing settings are correctly configured and your uploaded
-application is ready to be released to the public, you can simply click <strong>Publish</strong> in
-the Developer Console to make your app available for download
-around the world. Keep in mind, it can take several hours for your app to appear on Google
-Play after you click <strong>Publish</strong> in the Developer Console.</p>
-
-<h3>Controlling Distribution to Devices</h3>
-
-<p>If your application targets different device configurations, you can control which Android-powered
-devices have access to your application on Google Play by
-using Google Play filters. Filtering compares device configurations that you declare in your
-app's manifest file to the configuration defined by a device. For example, if you declare the camera
-filter in your manifest, only those devices that have a camera will see your app on Google
-Play. Filters must be configured in your application's manifest file when you are <a
-href="{@docRoot}tools/publishing/preparing.html">preparing your app for release</a> (that is, before
-you upload your app to Google Play). For more information, see <a
-href="{@docRoot}google/play/filters.html">Filters on Google Play</a>.</p>
-
-<p>You can also use the multiple APK feature to distribute different {@code .apk} files under the same
-application listing and the same package name; however, you should use this option only as a last
-resort. Android applications usually run on most compatible devices with a single APK, by supplying
-alternative resources for different configurations (for example, different layouts for different screen
-sizes) and the Android system selects the appropriate resources for the device at runtime. In a
-few cases, however, a single APK is unable to support all device configurations, because alternative
-resources make the APK file too big (greater than 50MB) or other technical challenges prevent a
-single APK from working on all devices. Although we encourage you to develop and publish a single
-APK that supports as many device configurations as possible, doing so is sometimes
-not possible. To help you publish your application for as many devices as possible, Google Play
-allows you to publish multiple APKs under the same application listing. Google Play then supplies
-each APK to the appropriate devices based on configuration support you've declared in the manifest
-file of each APK. To use this feature, you need to build your separate {@code .apk} files when you are <a
-href="{@docRoot}tools/publishing/preparing.html">preparing your app for release</a> (that is, before
-you upload your app to Google Play). For more information, see <a
-href="{@docRoot}google/play/publishing/multiple-apks.html">Multiple APK Support</a>.</p>
-
-<h2 id="marketupgrade">Publishing Updates on Google Play</h2>
-
-<p>At any time after publishing an application on Google Play, you can upload
-and publish an update to the same application package. When you publish an
-update to an application, users who have already installed the
-application may receive a notification that an update is
-available for the application. They can then choose to update the application
-to the latest version.</p>
-
-<p>Before uploading the updated application, be sure that you have incremented
-the <code>android:versionCode</code> and <code>android:versionName</code>
-attributes in the <a
-href="{@docRoot}guide/topics/manifest/manifest-element.html"><code>&lt;manifest&gt;</code></a>
-element of the manifest file. Also, the package name must be the same as the existing version and
-the {@code .apk} file must be signed with the same private key. If the package name and signing
-certificate do <em>not</em> match those of the existing version, Google Play will
-consider it a new application, publish it as such, and will not offer it to existing users as an
-update.</p>
-
-<p>If you plan to publish your application on Google Play, you must make sure
-  that it meets the requirements listed below, which are enforced by Google Play
-  when you upload the application.</p>
-
-<h2 id="marketLicensing">Using Google Play Licensing Service</h2>
-
-<p>Google Play offers a licensing service that lets you enforce licensing
-policies for paid applications that you publish through Google Play. With
-Google Play Licensing, your applications can query Google Play at runtime
-to obtain the licensing status for the current user, then allow or disallow
-further use of the application as appropriate. Using the service, you can apply a flexible
-licensing policy on an application-by-application basis&mdash;each
-application can enforce its licensing status in the way most appropriate
-for it. </p>
-
-<p>Any application that you publish through Google Play can use the Google
-Play Licensing Service. The service uses no dedicated framework APIs, so you can
-add licensing to any application that uses a minimum API Level of 3 or
-higher.</p>
-
-<p>For complete information about Google Play Licensing Service and how to
-use it in your application, read <a
-href="{@docRoot}google/play/licensing/index.html">Application Licensing</a>.</p>
-
-<h2 id="marketinappbilling">Using Google Play In-app Billing</h2>
-
-<p><a href="{@docRoot}google/play/billing/billing_overview.html">Google Play In-app Billing</a>
-is a Google Play service that lets you sell digital content in your applications. You can use
-the service to sell a wide range of content, including downloadable  content such as media files or
-photos, and virtual content such as game levels or potions.</p>
-
-<p>When you use Google Play's in-app billing service to sell an item, Google Play handles all
-billing details so your application never has to directly process any financial transactions.
-Google Play uses the same checkout service that is used for application purchases, so your users
-experience a consistent and familiar purchase flow (see figure 1). Also, the transaction fee for
-in-app purchases is the same as the transaction fee for application purchases (30%).</p>
-
-<p>Any application that you publish through Google Play can implement in-app billing. No special
-account or registration is required other than a Google Play publisher account and a Google
-Wallet merchant account. Also, because the service uses no dedicated framework APIs, you can add
-in-app billing to any application that uses a minimum API level of 4 or higher.</p>
-
-<p>To help you integrate in-app billing into your application, the Android SDK provides a <a
-href="{@docRoot}google/play/billing/billing_integrate.html#billing-download">sample application</a>
-that demonstrates a simple implementation of in-app billing. The sample application contains
-examples of billing-related classes you can use to implement in-app billing in your application. It
-also contains examples of the database, user interface, and business logic you might use to
-implement in-app billing. For more information about the in-app billing feature, see the
-<a href="{@docRoot}google/play/billing/index.html">In-app Billing documentation</a>.</p>
-
-<h2 id="marketintent">Linking to Your Apps on Google Play</h2>
-
-<p>To help users discover your published applications, you can use two special Google Play URIs
-that direct users to your application's details page or perform a search for all of your published
-applications on Google Play. You can use these URIs to create a button in your application or a
-link on a web page that:</p>
-
-<ul>
-  <li>Opens your application's details page in the Google Play application or web site.</li>
-  <li>Searches for all your published applications in the Google Play application or web
-site.</li>
-</ul>
-
-<p>You can launch the Google Play application or web site in the following ways:</p>
-<ul>
-  <li>Initiate an {@link android.content.Intent} from your application that launches the
-Google Play application on the user's device.</li>
-  <li>Provide a link on a web page that opens the Google Play web site (but will also
-open the Google Play application if clicked from a device).</li>
-</ul>
-
-<p>In both cases, whether you want to initiate the action from your application or from a web
-page, the URIs are quite similar. The only difference is the URI prefix.</p>
-
-<p>To open the Google Play application from your application, the prefix for the intent's data
-URI is:</p>
-
-<p style="margin-left:2em"><code>market://</code></p>
-
-<p>To open Google Play store from your web site, the prefix for the link URI is:</p>
-
-<p style="margin-left:2em"><code>http://play.google.com/store/</code></p>
-
-<p>The following sections describe how to create a complete URI for each action.</p>
-
-<p class="note"><strong>Note:</strong> If you create a link to open Google Play from your web
-site and the user selects it from an Android-powered device, the device's Google Play application will
-resolve the link so the user can use the Google Play application on the device instead of opening the web
-site. As such, you should always use {@code http://play.google.com/store/apps/...} URIs when
-creating a link on
-a web page. When pointing to your apps from within your Android app, use the
-{@code market://} URIs in an intent, so that the Google Play application always opens.</p>
-
-
-<h3 id="OpeningDetails">Opening an app's details page</h3>
-
-<p>As described above, you can open the details page for a specific application either on the
-Google Play application or the Google Play web site. The details page allows the user to see
-the application description, screenshots, reviews and more, and choose to install it.</p>
-
-<p>The format for the URI that opens the details page is:</p>
-
-<p style="margin-left:2em"><code>&lt;URI_prefix&gt;<b>apps/details?id=</b>&lt;package_name&gt;</code></p>
-
-<p>The <code>&lt;package_name&gt;</code> is a placeholder for the target application's
-fully-qualified package name, as declared in the <a
-href="{@docRoot}guide/topics/manifest/manifest-element.html#package">{@code
-package}</a> attribute of the <a href="{@docRoot}guide/topics/manifest/manifest-element.html">{@code
-&lt;manifest&gt;}</a> element.</p>
-
-<p>For example: <code>http://play.google.com/store/apps/details?id=com.example.myapp</code></p>
-
-
-<h4>Opening the app details page from your Android app</h4>
-
-<p>To open the Google Play details page from your application,
-create an intent with the {@link android.content.Intent#ACTION_VIEW} action and include a data URI
-in this format:</p>
-
-<p style="margin-left:2em"><code>market://details?id=&lt;package_name&gt;</code></p>
-
-<p>For example, here's how you can create an intent and open an application's details page in
-Google Play:</p>
-
-<pre>
-Intent intent = new Intent(Intent.ACTION_VIEW);
-intent.setData(Uri.parse("market://details?id=com.example.android"));
-startActivity(intent);
-</pre>
-
-<p>This will open the Google Play application on the device to view the {@code
-com.example.android} application.</p>
-
-
-<h4>Opening the app details page from a web site</h4>
-
-<p>To open the details page from your web site, create a link with a URI in this
-format:</p>
-
-<p style="margin-left:2em">
-  <code>http://play.google.com/store/apps/details?id=&lt;package_name&gt;</code>
-</p>
-
-<p>For example, here's a link that opens an application's details page on Google Play:</p>
-
-<pre>
-&lt;a href="http://play.google.com/store/apps/details?id=com.example.android">App Link&lt;/a>
-</pre>
-
-<p>When clicked from a desktop web browser, this opens the Google Play web site to view the
-{@code com.example.android} application. When clicked from an Android-powered device, users are
-given the option to use either their web browser or the Google Play application to view the
-application.</p>
-
-
-
-<h3 id="PerformingSearch">Performing a search</h3>
-
-<p>To initiate a search on Google Play, the format for the URI is:</p>
-
-<p style="margin-left:2em">
-  <code>&lt;URI_prefix&gt;<b>search?q=</b>&lt;query&gt;</code>
-</p>
-
-<p>The <code>&lt;query&gt;</code> is a placeholder for the search query to execute in Google
-Play. The query can be a raw text string or you can include a parameter that performs a search
-based on the publisher name:</p>
-
-<ul>
-  <li>To perform a raw text search, append the query string:
-  <p><code>&lt;URI_prefix&gt;<b>search?q=</b>&lt;search_query&gt;</code></p></li>
-
-  <li>To search based on the publisher name, use the {@code pub:} parameter in the query, followed
-by the publisher name:
-  <p><code>&lt;URI_prefix&gt;<b>search?q=pub:</b>&lt;publisher_name&gt;</code></p>
-  <p>You can use this type of search to show all of your published applications.</p></li>
-</ul>
-
-
-<h4>Searching from your Android app</h4>
-
-<p>To initiate a search on Google Play from your application, create an intent with the
-{@link android.content.Intent#ACTION_VIEW} action and include a data URI in this format:</p>
-
-<p style="margin-left:2em"><code>market://search?q=&lt;query&gt;</code></p>
-
-<p>The query may include the {@code pub:} parameter described above.</p>
-
-<p>For example, here's how you can initiate a search in the Google Play application, based on the
-publisher name:</p>
-
-<pre>
-Intent intent = new Intent(Intent.ACTION_VIEW);
-intent.setData(Uri.parse("market://search?q=pub:Your Publisher Name"));
-startActivity(intent);
-</pre>
-
-<p>This opens the Google Play application to perform the search. The search result shows all
-applications published by the publisher that are compatible with the current device.</p>
-
-
-<h4>Searching from a web site</h4>
-
-<p>To initiate a search on Google Play from your web site, create a link with a URI in this
-format:</p>
-
-<p style="margin-left:2em">
-  <code>http://play.google.com/store/search?q=&lt;query&gt;</code>
-</p>
-
-<p>The query may include the {@code pub:} parameter described above.</p>
-
-<p>For example, here's a link that initiates a search on Google Play, based on the
-publisher name:</p>
-
-<pre>
-&lt;a href="http://play.google.com/store/search?q=pub:Your Publisher Name">Search Link&lt;/a>
-</pre>
-
-<p>When clicked from a desktop web browser, this opens the Google Play web site and performs the
-search. When clicked from an Android-powered device, users are given the option to use either their
-web browser or the Google Play application to perform the search.</p>
-
-
-
-<h3 id="BuildaButton">Build a Google Play button</h3>
-
-<p>Use the following form to create a button for your web site that takes users to your application
-on Google Play. Input either your application's package name or your publisher name and the button
-will take users to Google Play to either view your application's information or view a list of your
-published apps. If users click the button while on an Android-powered device, the Google Play
-application will respond to show users your application(s).</p>
-
-<p>This form offers two styles of the official brand badge each at recommended sizes. You can pick
-between either "Get it on Google Play" or "Android app on Google Play." You should not modify the
-badge images in any way. For more usage guidelines,
-see the <a href="http://www.android.com/branding.html">Android Brand Guidelines</a>.</p>
-
-<style type="text/css">
-
-form.button-form {
-  margin-top:2em;
-}
-
-/* the label and input elements are blocks that float left in order to
-   keep the left edgets of the input aligned, and IE 6/7 do not fully support "inline-block" */
-label.block {
-  display: block;
-  float: left;
-  width: 100px;
-  padding-right: 10px;
-}
-
-input.text {
-  display: block;
-  float: left;
-  width: 250px;
-}
-
-div.button-row {
-  white-space:nowrap;
-  min-height:80px;
-}
-
-div.button-row input {
-  vertical-align:120%;
-}
-
-#jd-content div.button-row img {
-  margin: 0;
-}
-
-</style>
-
-<script type="text/javascript">
-
-// variables for creating 'try it out' demo button
-var imagePath = "http://www.android.com/images/brand/"
-var linkStart = "<a href=\"http://play.google.com/store/";
-var imageStart = "\">\n"
-        + "  <img alt=\"";
-  // leaves opening for the alt text value
-var imageSrc = "\"\n       src=\"" + imagePath;
-  // leaves opening for the image file name
-var imageEnd = ".png\" />\n</a>";
-
-// variables for creating code snippet
-var linkStartCode = "&lt;a href=\"http://play.google.com/store/";
-var imageStartCode = "\"&gt;\n"
-        + "  &lt;img alt=\"";
-  // leaves opening for the alt text value
-var imageSrcCode = "\"\n       src=\"" + imagePath;
-  // leaves opening for the image file name
-var imageEndCode = ".png\" />\n&lt;/a>";
-
-/** Generate the HTML snippet and demo based on form values */
-function buildButton(form) {
-  var selectedValue = $('form input[type=radio]:checked').val();
-  var altText = selectedValue.indexOf("get_it") != -1 ? "Get it on Google Play" : "Android app on Google Play";
-
-  if (form["package"].value != "com.example.android") {
-    $("#preview").show();
-    $("#snippet").show().html(linkStartCode + "apps/details?id=" + form["package"].value
-            + imageStartCode + altText + imageSrcCode
-            + selectedValue + imageEndCode);
-    $("#button-preview").html(linkStart + "apps/details?id=" + form["package"].value
-            + imageStart + altText + imageSrc
-            + selectedValue + imageEnd);
-  } else if (form["publisher"].value != "Example, Inc.") {
-    $("#preview").show();
-    $("#snippet").show().html(linkStartCode + "search?q=pub:" + form["publisher"].value
-            + imageStartCode + altText + imageSrcCode
-            + selectedValue + imageEndCode);
-    $("#button-preview").html(linkStart + "search?q=pub:" + form["publisher"].value
-            + imageStart + altText + imageSrc
-            + selectedValue + imageEnd);
-  } else {
-    alert("Please enter your package name or publisher name");
-  }
-  return false;
-}
-
-/** Listen for Enter key */
-function onTextEntered(event, form, me) {
-  // 13 = enter
-  if (event.keyCode == 13) {
-    buildButton(form);
-  }
-}
-
-/** When input is focused, remove example text and disable other input */
-function onInputFocus(object, example) {
-  if (object.value == example) {
-    $(object).val('').css({'color' : '#000'});
-  }
-  $('input[type="text"]:not(input[name='+object.name+'])',
-          object.parentNode).attr('disabled','true');
-  $('#'+object.name+'-clear').show();
-}
-
-/** When input is blured, restore example text if appropriate and enable other input */
-function onInputBlur(object, example) {
-  if (object.value.length < 1) {
-    $(object).attr('value',example).css({'color':'#ccc'});
-    $('input[type="text"]', object.parentNode).removeAttr('disabled');
-    $('#'+object.name+'-clear').hide();
-  }
-}
-
-/** Clear the form to start over */
-function clearLabel(id, example) {
-  $("#preview").hide();
-  $('#'+id+'').html('').attr('value',example).css({'color':'#ccc'});
-  $('input[type="text"]', $('#'+id+'').parent()).removeAttr('disabled');
-  $('#'+id+'-clear').hide();
-  return false;
-}
-
-/** When the doc is ready, find the inputs and color the input grey if the value is the example
-    text. This is necessary to handle back-navigation, which can auto-fill the form with previous
-    values (and text should not be grey) */
-$(document).ready(function() {
-  $(".button-form input.text").each(function(index) {
-    if ($(this).val() == $(this).attr("default")) {
-      $(this).css("color","#ccc");
-    } else {
-      /* This is necessary to handle back-navigation to the page after form was filled */
-      $('input[type="text"]:not(input[name='+this.name+'])',
-              this.parentNode).attr('disabled','true');
-      $('#'+this.name+'-clear').show();
-    }
-  });
-});
-
-</script>
-
-<form class="button-form">
-  <label class="block" for="package">Package name:</label>
-  <input class="text" type="text" id="package" name="package"
-         value="com.example.android"
-         default="com.example.android"
-         onfocus="onInputFocus(this, 'com.example.android')"
-         onblur="onInputBlur(this, 'com.example.android')"
-         onkeyup="return onTextEntered(event, this.parentNode, this)"/>&nbsp;
-         <a id="package-clear" style="display:none" href="#"
-            onclick="return clearLabel('package','com.example.android');">clear</a>
-  <p style="clear:both;margin:0">&nbsp;<em>or</em></p>
-  <label class="block" style="margin-top:5px" for="publisher">Publisher name:</label>
-  <input class="text" type="text" id="publisher" name="publisher"
-         value="Example, Inc."
-         default="Example, Inc."
-         onfocus="onInputFocus(this, 'Example, Inc.')"
-         onblur="onInputBlur(this, 'Example, Inc.')"
-         onkeyup="return onTextEntered(event, this.parentNode, this)"/>&nbsp;
-         <a id="publisher-clear" style="display:none" href="#"
-            onclick="return clearLabel('publisher','Example, Inc.');">clear</a>
-         <br/><br/>
-
-<div class="button-row">
-  <input type="radio" name="buttonStyle" value="get_it_on_play_logo_small" id="ns" checked="checked" />
-    <label for="ns"><img src="//www.android.com/images/brand/get_it_on_play_logo_small.png"
-alt="Get it on Google Play (small)" /></label>
-    &nbsp;&nbsp;&nbsp;&nbsp;
-  <input type="radio" name="buttonStyle" value="get_it_on_play_logo_large" id="nm" />
-    <label for="nm"><img src="//www.android.com/images/brand/get_it_on_play_logo_large.png"
-alt="Get it on Google Play (large)" /></label>
-</div>
-
-<div class="button-row">
-  <input type="radio" name="buttonStyle" value="android_app_on_play_logo_small" id="ws" />
-    <label for="ws"><img src="//www.android.com/images/brand/android_app_on_play_logo_small.png"
-alt="Android app on Google Play (small)" /></label>
-    &nbsp;&nbsp;&nbsp;&nbsp;
-  <input type="radio" name="buttonStyle" value="android_app_on_play_logo_large" id="wm" />
-    <label for="wm"><img src="//www.android.com/images/brand/android_app_on_play_logo_large.png"
-alt="Android app on Google Play (large)" /></label>
-</div>
-
-  <input type="button" onclick="return buildButton(this.parentNode)" value="Build my button"
-style="padding:5px" />
-  <br/>
-</form>
-
-<div id="preview" style="display:none">
-  <p>Copy and paste this HTML into your web site:</p>
-  <textarea id="snippet" cols="100" rows="5" onclick="this.select()"
-style="font-family:monospace;background-color:#efefef;padding:5px;display:none;margin-bottom:1em">
-  </textarea >
-
-<p>Try it out:</p>
-<div id="button-preview" style="margin-top:1em"></div>
-</div>
-
-
-
-
-
-
-<h3 id="UriSummary">Summary of URI formats</h3>
-
-<p>The table below provides a summary of the URIs currently supported by the Google Play (both on
-the web and in the Android application), as discussed in the previous sections.</p>
-
-<table>
-<tr>
-<th>For this result</th>
-<th>Use this URI in a web page link</th>
-<th>Or this URI in an {@link android.content.Intent#ACTION_VIEW} intent</th>
-</tr>
-
-<tr>
-<td>Display the details screen for a specific application</td>
-<td><code>http://play.google.com/store/apps/details?id=&lt;package_name&gt;</code>
-<td><code>market://details?id=&lt;package_name&gt;</code></td>
-</tr>
-
-<tr>
-<td>Search for applications using a general string query.</td>
-<td><code>http://play.google.com/store/search?q=&lt;query&gt;</code></td>
-<td><code>market://search?q=&lt;query&gt;</code></td>
-</tr>
-
-<tr>
-<td>Search for applications by publisher name</td>
-<td><nobr><code>http://play.google.com/store/search?q=pub:&lt;publisher_name&gt;</code></nobr></td>
-<td><nobr><code>market://search?q=pub:&lt;publisher_name&gt;</code></nobr></td>
-</tr>
-
-</table>
diff --git a/docs/html/tools/workflow/publishing/publishing_overview.jd b/docs/html/tools/workflow/publishing/publishing_overview.jd
deleted file mode 100755
index a1973c9..0000000
--- a/docs/html/tools/workflow/publishing/publishing_overview.jd
+++ /dev/null
@@ -1,231 +0,0 @@
-page.title=Publishing Overview
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>Quickview</h2>
-  <ul>
-    <li>Learn how to publish Android apps.</li>
-    <li>Find out how to prepare apps for release.</li>
-    <li>Learn how to release apps to users.</li>
-  </ul>
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#publishing-prepare">Preparing Your Application for Release</a></li>
-    <li><a href="#publishing-release">Releasing Your Application to Users</a>
-    <ol>
-      <li><a href="#publishing-market">Releasing on Google Play</a></li>
-      <li><a href="#publishing-website">Releasing on your own website</a></li>
-      <li><a href="#publishing-email">Releasing through email</a></li>
-    </ol>
-  </ol>
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}tools/publishing/preparing.html">Preparing for
-    Release</a></li>
-    <li><a href="{@docRoot}tools/publishing/publishing.html">Publishing on Google Play</a></li>
-  </ol>
-</div>
-</div>
-
-<p>Publishing is the process that makes your Android applications available to users. When you
-publish an Android application you perform two main tasks:</p>
-
-<ul>
-  <li>You prepare the application for release.
-    <p>During the preparation step you build a release version of your application, which users can
-      download and install on their Android-powered devices.</p>
-  </li>
-  <li>You release the application to users.
-    <p>During the release step you publicize, sell, and distribute the release version of your
-      application to users.</p>
-  </li>
-</ul>
-
-<p>Usually, you release your application through an application marketplace, such as Google Play.
-However, you can also release applications by sending them directly to users or by letting users
-download them from your own website.</p>
-
-<p>Figure 1 shows how the publishing process fits into the overall Android <a
-href="{@docRoot}tools/workflow/index.html">application development process</a>.
-The publishing process is typically performed after you finish testing your application in a debug
-environment. Also, as a best practice, your application should meet all of your release criteria for
-functionality, performance, and stability before you begin the publishing process.</p>
-
-<img src="{@docRoot}images/publishing/publishing_overview.png" alt="Shows where the publishing
-       process fits into the overall development process" height="86" id="figure1" />
-<p class="img-caption">
-  <strong>Figure 1.</strong> Publishing is the last phase of the Android <a
-href="{@docRoot}tools/workflow/index.html">application development process</a>.
-</p>
-
-<h2 id="publishing-prepare">Preparing Your Application for Release</h2>
-
-<p>Preparing your application for release is a multi-step process that involves the following
-tasks:</p>
-
-<ul>
-
-  <li>Configuring your application for release.
-    <p>At a minimum you need to remove {@link android.util.Log} calls and remove the
-    <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
-    attribute from your manifest file. You should also provide values for the
-    <code>android:versionCode</code> and <code>android:versionName</code> attributes, which are
-    located in the
-    <a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a>
-    element. You may also have to configure several other settings to meet Google Play
-    requirements or accomodate whatever method you're using to release your application.</p>
-  </li>
-  <li>Building and signing a release version of your application.
-    <p>The Android Development Tools (ADT) plugin and the Ant build script that are provided
-    with the Android SDK tools provide everything you need to build and sign a release version of
-    your application.</p>
-  </li>
-  <li>Testing the release version of your application.
-    <p>Before you distribute your application, you should thoroughly test the release version on at
-    least one target handset device and one target tablet device.</p>
-  </li>
-  <li>Updating application resources for release.
-    <p>You need to be sure that all application resources such as multimedia files and graphics
-    are updated and included with your application or staged on the proper production servers.</p>
-  </li>
-  <li>Preparing remote servers and services that your application depends on.
-    <p>If your application depends on external servers or services, you need to be sure they
-    are secure and production ready.</p>
-  </li>
-</ul>
-
-<p>You may have to perform several other tasks as part of the preparation process. For example, you
-will need to get a private key for signing your application, and you may need to get a Maps API
-release key if you are using the <a
-href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google Maps external
-library</a>. You will also need to create an icon for your application, and you may want to prepare
-an End User License Agreement (EULA) to protect your person, organization, and intellectual
-property.</p>
-
-<p>When you are finished preparing your application for release you will have a signed
-<code>.apk</code> file that you can distribute to users.</p>
-
-<p>To learn how to prepare your application for release, see <a
-href="{@docRoot}tools/publishing/preparing.html">Preparing for Release</a> in the Dev Guide. This
-topic provides step-by-step instructions for configuring and building a release version of your
-application.</p>
-
-<h2 id="publishing-release">Releasing Your Application to Users</h2>
-
-<p>You can release your Android applications several ways. Usually, you release applications
-through an application marketplace, such as Google Play, but you can also release applications
-on your own website or by sending an application directly to a user. Google Play is the
-recommended marketplace for Android applications and is particularly useful if you want to
-distribute your applications to a large global audience. The other two release methods&mdash;server
-distribution and email distribution&mdash;are useful if you are releasing an application to a small
-group of users (for example, a work group in an enterprise environment), or if you do not want to
-make your application available to the general public.</p>
-
-<h3 id="publishing-market">Releasing Your Applications on Google Play</h3>
-
-<p>Google Play is a robust publishing platform that helps you publicize, sell, and distribute
-your Android applications to users around the world. When you release your applications through
-Google Play you have access to a suite of developer tools that let you analyze your sales,
-identify market trends, and control who your applications are being distributed to. You also have
-access to several revenue-enhancing features that are not available anywhere else, such as <a
-href="{@docRoot}google/play/billing/index.html">in-app billing</a> and <a
-href="{@docRoot}google/play/licensing.html">application licensing</a>. This rich array of tools
-and features, coupled with numerous end-user community features, makes Google Play the premier
-marketplace for selling and buying Android applications.</p>
-
-<p>Releasing your application on Google Play is a simple process that involves three basic
-  steps:</p>
-
-<div class="figure" style="width:275px">
-  <img src="{@docRoot}images/publishing/publishing_unknown_sources.png"
-       alt="Screenshot showing the graphical user interface element that allows unknown sources
-       to be installed" />
-  <p class="img-caption">
-    <strong>Figure 2.</strong> The <strong>Unknown sources</strong> setting lets you install
-    applications that are not published on Google Play .
-  </p>
-</div>
-
-<ul>
-  <li>Preparing promotional materials.
-    <p>To fully leverage the marketing and publicity capabilities of Google Play, you need to
-    create promotional materials for your application, such as screenshots, videos, graphics, and
-    promotional text.</p>
-  </li>
-  <li>Configuring options and uploading assets.
-    <p>Google Play lets you target your application to a worldwide pool of users and devices.
-    By configuring various Google Play settings, you can choose the countries you want to
-    reach, the listing languages you want to use, and the price you want to charge in each
-    country. You can also configure listing details such as the application type, category, and
-    content rating. When you are done configuring options you can upload your promotional materials
-    and your application as a draft (unpublished) application.</p>
-  </li>
-  <li>Publishing the release version of your application.
-    <p>If you are satisfied that your publishing settings are correctly configured and your
-    uploaded application is ready to be released to the public, you can simply click
-    <strong>Publish</strong > in the developer console and within minutes your application will be
-    live and available for download around the world.</p>
-  </li>
-</ul>
-
-<p>For information about Google Play, see <a
-href="{@docRoot}tools/publishing/publishing.html#market">Publishing on Google Play</a>. This
-topic provides an introduction to Google Play features and provides a step-by-step guide for
-distributing your applications on Google Play.</p>
-
-<h3 id="publishing-website">Releasing your application on your own website</h3>
-
-<p>If you do not want to release your application on an application marketplace like Google Play,
-you can release your application by making it available for download on your own website or server.
-To do this, you must first prepare your application for release (that is, you must build it for
-release and sign it). Then all you need to do is host the release-ready application on your website
-and provide a download link for the application. When users browse to your website with their
-Android-powered devices and download your application, the Android system will automatically start
-installing the application on the device. However, the installation process will start automatically
-only if the user has configured their device to allow the installation of non-Google Play
-applications.</p>
-
-<div class="figure" style="width:275px">
-  <img src="{@docRoot}images/publishing/publishing_via_email.png"
-       alt="Screenshot showing the graphical user interface users see when you send them an app"
-       height="453" />
-  <p class="img-caption">
-    <strong>Figure 3.</strong> Users can simply click <strong>Install</strong> when you send them
-    an application via email.
-  </p>
-</div>
-
-<p>By default, Android-powered devices allow users to install applications only if the applications
-have been downloaded from Google Play. To allow the installation of applications from other
-sources, users need to enable the <strong>Unknown sources</strong> setting on their devices, and
-they need to make this configuration change before they download your application to their
-device (see figure 2).</p>
-
-<p class="note"><strong>Note:</strong> Some network providers do not allow users to install
-applications from unknown sources.</p>
-
-<p>Although it is relatively easy to release your application on your own website, it can be
-inefficient and cumbersome. For example, if you want to monetize your application you will
-have to process and track all financial transactions yourself and you will not be able to use
-Google Play's in-app billing feature to sell in-app products. In addition, you will not be
-able to use the licensing feature to help prevent unauthorized installation and use of your
-application.</p>
-
-<h3 id="publishing-email">Releasing your application through email</h3>
-
-<p>The easiest and quickest way to release your application is to send it to a user through
-email. To do this, you prepare your application for release and then attach it to an email
-and send it to a user. When the user opens your email message on their Android-powered device
-the Android system will recognize the <code>.apk</code> and display an <strong>Install Now</strong>
-button in the email message (see figure 3). Users can install your application by touching the
-button.</p>
-
-<p class="note"><strong>Note:</strong> The <strong>Install Now</strong> button appears only if a
-user has configured their device to allow the installation of non-Google Play applications and
-they open your email with the native Gmail application.</p>
-
-<p>Releasing applications through email is convenient if you are sending your application to
-only a few trusted users, but it provides few protections from piracy and unauthorized
-distribution; that is, anyone you send your application to can simply forward it to someone else.
-else.
diff --git a/docs/html/tools/workflow/publishing/versioning.jd b/docs/html/tools/workflow/publishing/versioning.jd
deleted file mode 100644
index e0b4435..0000000
--- a/docs/html/tools/workflow/publishing/versioning.jd
+++ /dev/null
@@ -1,174 +0,0 @@
-page.title=Versioning Your Applications
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Quickview</h2>
-
-<ul>
-<li>Your application <em>must</em> be versioned</a></li>
-<li>You set the version in the application's manifest file</li>
-<li>How you version your applications affects how users upgrade </li>
-<li>Determine your versioning strategy early in the development process, including considerations for future releases.</li>
-</ul>
-
-<h2>In this document</h2>
-
-<ol>
-<li><a href="#appversioning">Setting Application Version</a></li>
-<li><a href="#minsdkversion">Specifying Your Application's System API Requirements</a>
-</ol>
-
-
-<h2>See also</h2>
-
-<ol>
-<li><a href="{@docRoot}tools/publishing/preparing.html">Preparing to Publish Your Application</a></li>
-<li><a href="{@docRoot}tools/publishing/publishing.html#market">Publishing On Google Play</a></li>
-<li><a href="{@docRoot}guide/topics/manifest/manifest-intro.html">The AndroidManifest.xml File</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>Versioning is a critical component of your application upgrade and maintenance
-strategy. Versioning is important because:</p>
-
-<ul>
-<li>Users need to have specific information about the application version that
-is installed on their devices and the upgrade versions available for
-installation. </li>
-<li>Other applications &mdash; including other applications that you publish as
-a suite &mdash; need to query the system for your application's version, to
-determine compatibility and identify dependencies.</li>
-<li>Services through which you will publish your application(s) may also need to
-query your application for its version, so that they can display the version to
-users. A publishing service may also need to check the application version to
-determine compatibility and establish upgrade/downgrade relationships.</li>
-</ul>
-
-<p>The Android system does not use app version information to enforce
-restrictions on upgrades, downgrades, or compatibility of third-party apps. Instead, you (the
-developer) are responsible for enforcing version restrictions within your application or by
-informing users of the version restrictions and limitations. The Android system does, however,
-enforce system version compatibility as expressed by the <code>minSdkVersion</code> attribute in the
-manifest. This attribute allows an application to specify the minimum system API with which it is
-compatible. For more information see <a href="#minsdkversion">Specifying Minimum System API
-Version</a>.</p>
-
-<h2 id="appversioning">Setting Application Version</h2>
-<p>To define the version information for your application, you set attributes in
-the application's manifest file. Two attributes are available, and you should
-always define values for both of them: </p>
-
-<ul>
-<li><code>android:versionCode</code> &mdash; An integer value that represents
-the version of the application code, relative to other versions.
-
-<p>The value is an integer so that other applications can programmatically
-evaluate it, for example to check an upgrade or downgrade relationship. You can
-set the value to any integer you want, however you should make sure that each
-successive release of your application uses a greater value. The system does not
-enforce this behavior, but increasing the value with successive releases is
-normative. </p>
-
-<p>Typically, you would release the first version of your application with
-versionCode set to 1, then monotonically increase the value with each release,
-regardless whether the release constitutes a major or minor release. This means
-that the <code>android:versionCode</code> value does not necessarily have a
-strong resemblance to the application release version that is visible to the
-user (see <code>android:versionName</code>, below). Applications and publishing
-services should not display this version value to users.</p>
-</li>
-<li><code>android:versionName</code> &mdash; A string value that represents the
-release version of the application code, as it should be shown to users.
-<p>The value is a string so that you can describe the application version as a
-&lt;major&gt;.&lt;minor&gt;.&lt;point&gt; string, or as any other type of
-absolute or relative version identifier. </p>
-
-<p>As with <code>android:versionCode</code>, the system does not use this value
-for any internal purpose, other than to enable applications to display it to
-users. Publishing services may also extract the <code>android:versionName</code>
-value for display to users.</p>
-</li>
-</ul>
-
-<p>You define both of these version attributes in the
-<code>&lt;manifest&gt;</code> element of the manifest file. </p>
-
-<p>Here's an example manifest that shows the <code>android:versionCode</code>
-and <code>android:versionName</code> attributes in the
-<code>&lt;manifest&gt;</code> element. </p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-      package="com.example.package.name"
-      android:versionCode="2"
-      android:versionName="1.1"&gt;
-    &lt;application android:icon="@drawable/icon" android:label="@string/app_name"&gt;
-        ...
-    &lt;/application&gt;
-&lt;/manifest&gt;
-</pre>
-
-<p>In this example, note that <code>android:versionCode</code> value indicates
-that the current .apk contains the second release of the application code, which
-corresponds to a minor follow-on release, as shown by the
-<code>android:versionName</code> string. </p>
-
-<p>The Android framework provides an API to let applications query the system
-for version information about your application. To obtain version information,
-applications use the
-{@link android.content.pm.PackageManager#getPackageInfo(java.lang.String, int)}
-method of {@link android.content.pm.PackageManager PackageManager}. </p>
-
-<h2 id="minsdkversion">Specifying Your Application's System API Requirements</h2>
-
-<p>If your application requires a specific minimum version of the Android
-platform, or is designed only to support a certain range of Android platform
-versions, you can specify those version requirements as API Level identifiers
-in the application's manifest file. Doing so ensures that your
-application can only be installed on devices that
-are running a compatible version of the Android system. </p>
-
-<p>To specify API Level requirements, add a <code>&lt;uses-sdk&gt;</code>
-element in the application's manifest, with one or more of these attributes: </p>
-
-<ul>
-<li><code>android:minSdkVersion</code> &mdash; The minimum version
-of the Android platform on which the application will run, specified
-by the platform's API Level identifier. </li>
-<li><code>android:targetSdkVersion</code> &mdash; Specifies the API Level
-on which the application is designed to run. In some cases, this allows the
-application to use manifest elements or behaviors defined in the target
-API Level, rather than being restricted to using only those defined
-for the minimum API Level.</li>
-<li><code>android:maxSdkVersion</code> &mdash; The maximum version
-of the Android platform on which the application is designed to run,
-specified by the platform's API Level identifier. <strong>Important:</strong> Please read the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
-documentation before using this attribute. </li>
-</ul>
-
-<p>When preparing to install your application, the system checks the value of this
-attribute and compares it to the system version. If the
-<code>android:minSdkVersion</code> value is greater than the system version, the
-system aborts the installation of the application. Similarly, the system
-installs your application only if its <code>android:maxSdkVersion</code>
-is compatible with the platform version.</p>
-
-<p>If you do not specify these attributes in your manifest, the system assumes
-that your application is compatible with all platform versions, with no
-maximum API Level. </p>
-
-<p>To specify a minimum platform version for your application, add a
-<code>&lt;uses-sdk&gt;</code> element as a child of
-<code>&lt;manifest&gt;</code>, then define the
-<code>android:minSdkVersion</code> as an attribute. </p>
-
-<p>For more information, see the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
-manifest element documentation and the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Levels</a> document.</p>
diff --git a/docs/html/tools/workflow/publishing_overview.jd b/docs/html/tools/workflow/publishing_overview.jd
deleted file mode 100755
index a1973c9..0000000
--- a/docs/html/tools/workflow/publishing_overview.jd
+++ /dev/null
@@ -1,231 +0,0 @@
-page.title=Publishing Overview
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>Quickview</h2>
-  <ul>
-    <li>Learn how to publish Android apps.</li>
-    <li>Find out how to prepare apps for release.</li>
-    <li>Learn how to release apps to users.</li>
-  </ul>
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#publishing-prepare">Preparing Your Application for Release</a></li>
-    <li><a href="#publishing-release">Releasing Your Application to Users</a>
-    <ol>
-      <li><a href="#publishing-market">Releasing on Google Play</a></li>
-      <li><a href="#publishing-website">Releasing on your own website</a></li>
-      <li><a href="#publishing-email">Releasing through email</a></li>
-    </ol>
-  </ol>
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}tools/publishing/preparing.html">Preparing for
-    Release</a></li>
-    <li><a href="{@docRoot}tools/publishing/publishing.html">Publishing on Google Play</a></li>
-  </ol>
-</div>
-</div>
-
-<p>Publishing is the process that makes your Android applications available to users. When you
-publish an Android application you perform two main tasks:</p>
-
-<ul>
-  <li>You prepare the application for release.
-    <p>During the preparation step you build a release version of your application, which users can
-      download and install on their Android-powered devices.</p>
-  </li>
-  <li>You release the application to users.
-    <p>During the release step you publicize, sell, and distribute the release version of your
-      application to users.</p>
-  </li>
-</ul>
-
-<p>Usually, you release your application through an application marketplace, such as Google Play.
-However, you can also release applications by sending them directly to users or by letting users
-download them from your own website.</p>
-
-<p>Figure 1 shows how the publishing process fits into the overall Android <a
-href="{@docRoot}tools/workflow/index.html">application development process</a>.
-The publishing process is typically performed after you finish testing your application in a debug
-environment. Also, as a best practice, your application should meet all of your release criteria for
-functionality, performance, and stability before you begin the publishing process.</p>
-
-<img src="{@docRoot}images/publishing/publishing_overview.png" alt="Shows where the publishing
-       process fits into the overall development process" height="86" id="figure1" />
-<p class="img-caption">
-  <strong>Figure 1.</strong> Publishing is the last phase of the Android <a
-href="{@docRoot}tools/workflow/index.html">application development process</a>.
-</p>
-
-<h2 id="publishing-prepare">Preparing Your Application for Release</h2>
-
-<p>Preparing your application for release is a multi-step process that involves the following
-tasks:</p>
-
-<ul>
-
-  <li>Configuring your application for release.
-    <p>At a minimum you need to remove {@link android.util.Log} calls and remove the
-    <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
-    attribute from your manifest file. You should also provide values for the
-    <code>android:versionCode</code> and <code>android:versionName</code> attributes, which are
-    located in the
-    <a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a>
-    element. You may also have to configure several other settings to meet Google Play
-    requirements or accomodate whatever method you're using to release your application.</p>
-  </li>
-  <li>Building and signing a release version of your application.
-    <p>The Android Development Tools (ADT) plugin and the Ant build script that are provided
-    with the Android SDK tools provide everything you need to build and sign a release version of
-    your application.</p>
-  </li>
-  <li>Testing the release version of your application.
-    <p>Before you distribute your application, you should thoroughly test the release version on at
-    least one target handset device and one target tablet device.</p>
-  </li>
-  <li>Updating application resources for release.
-    <p>You need to be sure that all application resources such as multimedia files and graphics
-    are updated and included with your application or staged on the proper production servers.</p>
-  </li>
-  <li>Preparing remote servers and services that your application depends on.
-    <p>If your application depends on external servers or services, you need to be sure they
-    are secure and production ready.</p>
-  </li>
-</ul>
-
-<p>You may have to perform several other tasks as part of the preparation process. For example, you
-will need to get a private key for signing your application, and you may need to get a Maps API
-release key if you are using the <a
-href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google Maps external
-library</a>. You will also need to create an icon for your application, and you may want to prepare
-an End User License Agreement (EULA) to protect your person, organization, and intellectual
-property.</p>
-
-<p>When you are finished preparing your application for release you will have a signed
-<code>.apk</code> file that you can distribute to users.</p>
-
-<p>To learn how to prepare your application for release, see <a
-href="{@docRoot}tools/publishing/preparing.html">Preparing for Release</a> in the Dev Guide. This
-topic provides step-by-step instructions for configuring and building a release version of your
-application.</p>
-
-<h2 id="publishing-release">Releasing Your Application to Users</h2>
-
-<p>You can release your Android applications several ways. Usually, you release applications
-through an application marketplace, such as Google Play, but you can also release applications
-on your own website or by sending an application directly to a user. Google Play is the
-recommended marketplace for Android applications and is particularly useful if you want to
-distribute your applications to a large global audience. The other two release methods&mdash;server
-distribution and email distribution&mdash;are useful if you are releasing an application to a small
-group of users (for example, a work group in an enterprise environment), or if you do not want to
-make your application available to the general public.</p>
-
-<h3 id="publishing-market">Releasing Your Applications on Google Play</h3>
-
-<p>Google Play is a robust publishing platform that helps you publicize, sell, and distribute
-your Android applications to users around the world. When you release your applications through
-Google Play you have access to a suite of developer tools that let you analyze your sales,
-identify market trends, and control who your applications are being distributed to. You also have
-access to several revenue-enhancing features that are not available anywhere else, such as <a
-href="{@docRoot}google/play/billing/index.html">in-app billing</a> and <a
-href="{@docRoot}google/play/licensing.html">application licensing</a>. This rich array of tools
-and features, coupled with numerous end-user community features, makes Google Play the premier
-marketplace for selling and buying Android applications.</p>
-
-<p>Releasing your application on Google Play is a simple process that involves three basic
-  steps:</p>
-
-<div class="figure" style="width:275px">
-  <img src="{@docRoot}images/publishing/publishing_unknown_sources.png"
-       alt="Screenshot showing the graphical user interface element that allows unknown sources
-       to be installed" />
-  <p class="img-caption">
-    <strong>Figure 2.</strong> The <strong>Unknown sources</strong> setting lets you install
-    applications that are not published on Google Play .
-  </p>
-</div>
-
-<ul>
-  <li>Preparing promotional materials.
-    <p>To fully leverage the marketing and publicity capabilities of Google Play, you need to
-    create promotional materials for your application, such as screenshots, videos, graphics, and
-    promotional text.</p>
-  </li>
-  <li>Configuring options and uploading assets.
-    <p>Google Play lets you target your application to a worldwide pool of users and devices.
-    By configuring various Google Play settings, you can choose the countries you want to
-    reach, the listing languages you want to use, and the price you want to charge in each
-    country. You can also configure listing details such as the application type, category, and
-    content rating. When you are done configuring options you can upload your promotional materials
-    and your application as a draft (unpublished) application.</p>
-  </li>
-  <li>Publishing the release version of your application.
-    <p>If you are satisfied that your publishing settings are correctly configured and your
-    uploaded application is ready to be released to the public, you can simply click
-    <strong>Publish</strong > in the developer console and within minutes your application will be
-    live and available for download around the world.</p>
-  </li>
-</ul>
-
-<p>For information about Google Play, see <a
-href="{@docRoot}tools/publishing/publishing.html#market">Publishing on Google Play</a>. This
-topic provides an introduction to Google Play features and provides a step-by-step guide for
-distributing your applications on Google Play.</p>
-
-<h3 id="publishing-website">Releasing your application on your own website</h3>
-
-<p>If you do not want to release your application on an application marketplace like Google Play,
-you can release your application by making it available for download on your own website or server.
-To do this, you must first prepare your application for release (that is, you must build it for
-release and sign it). Then all you need to do is host the release-ready application on your website
-and provide a download link for the application. When users browse to your website with their
-Android-powered devices and download your application, the Android system will automatically start
-installing the application on the device. However, the installation process will start automatically
-only if the user has configured their device to allow the installation of non-Google Play
-applications.</p>
-
-<div class="figure" style="width:275px">
-  <img src="{@docRoot}images/publishing/publishing_via_email.png"
-       alt="Screenshot showing the graphical user interface users see when you send them an app"
-       height="453" />
-  <p class="img-caption">
-    <strong>Figure 3.</strong> Users can simply click <strong>Install</strong> when you send them
-    an application via email.
-  </p>
-</div>
-
-<p>By default, Android-powered devices allow users to install applications only if the applications
-have been downloaded from Google Play. To allow the installation of applications from other
-sources, users need to enable the <strong>Unknown sources</strong> setting on their devices, and
-they need to make this configuration change before they download your application to their
-device (see figure 2).</p>
-
-<p class="note"><strong>Note:</strong> Some network providers do not allow users to install
-applications from unknown sources.</p>
-
-<p>Although it is relatively easy to release your application on your own website, it can be
-inefficient and cumbersome. For example, if you want to monetize your application you will
-have to process and track all financial transactions yourself and you will not be able to use
-Google Play's in-app billing feature to sell in-app products. In addition, you will not be
-able to use the licensing feature to help prevent unauthorized installation and use of your
-application.</p>
-
-<h3 id="publishing-email">Releasing your application through email</h3>
-
-<p>The easiest and quickest way to release your application is to send it to a user through
-email. To do this, you prepare your application for release and then attach it to an email
-and send it to a user. When the user opens your email message on their Android-powered device
-the Android system will recognize the <code>.apk</code> and display an <strong>Install Now</strong>
-button in the email message (see figure 3). Users can install your application by touching the
-button.</p>
-
-<p class="note"><strong>Note:</strong> The <strong>Install Now</strong> button appears only if a
-user has configured their device to allow the installation of non-Google Play applications and
-they open your email with the native Gmail application.</p>
-
-<p>Releasing applications through email is convenient if you are sending your application to
-only a few trusted users, but it provides few protections from piracy and unauthorized
-distribution; that is, anyone you send your application to can simply forward it to someone else.
-else.
diff --git a/docs/html/tools/workflow/versioning.jd b/docs/html/tools/workflow/versioning.jd
deleted file mode 100644
index e0b4435..0000000
--- a/docs/html/tools/workflow/versioning.jd
+++ /dev/null
@@ -1,174 +0,0 @@
-page.title=Versioning Your Applications
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Quickview</h2>
-
-<ul>
-<li>Your application <em>must</em> be versioned</a></li>
-<li>You set the version in the application's manifest file</li>
-<li>How you version your applications affects how users upgrade </li>
-<li>Determine your versioning strategy early in the development process, including considerations for future releases.</li>
-</ul>
-
-<h2>In this document</h2>
-
-<ol>
-<li><a href="#appversioning">Setting Application Version</a></li>
-<li><a href="#minsdkversion">Specifying Your Application's System API Requirements</a>
-</ol>
-
-
-<h2>See also</h2>
-
-<ol>
-<li><a href="{@docRoot}tools/publishing/preparing.html">Preparing to Publish Your Application</a></li>
-<li><a href="{@docRoot}tools/publishing/publishing.html#market">Publishing On Google Play</a></li>
-<li><a href="{@docRoot}guide/topics/manifest/manifest-intro.html">The AndroidManifest.xml File</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>Versioning is a critical component of your application upgrade and maintenance
-strategy. Versioning is important because:</p>
-
-<ul>
-<li>Users need to have specific information about the application version that
-is installed on their devices and the upgrade versions available for
-installation. </li>
-<li>Other applications &mdash; including other applications that you publish as
-a suite &mdash; need to query the system for your application's version, to
-determine compatibility and identify dependencies.</li>
-<li>Services through which you will publish your application(s) may also need to
-query your application for its version, so that they can display the version to
-users. A publishing service may also need to check the application version to
-determine compatibility and establish upgrade/downgrade relationships.</li>
-</ul>
-
-<p>The Android system does not use app version information to enforce
-restrictions on upgrades, downgrades, or compatibility of third-party apps. Instead, you (the
-developer) are responsible for enforcing version restrictions within your application or by
-informing users of the version restrictions and limitations. The Android system does, however,
-enforce system version compatibility as expressed by the <code>minSdkVersion</code> attribute in the
-manifest. This attribute allows an application to specify the minimum system API with which it is
-compatible. For more information see <a href="#minsdkversion">Specifying Minimum System API
-Version</a>.</p>
-
-<h2 id="appversioning">Setting Application Version</h2>
-<p>To define the version information for your application, you set attributes in
-the application's manifest file. Two attributes are available, and you should
-always define values for both of them: </p>
-
-<ul>
-<li><code>android:versionCode</code> &mdash; An integer value that represents
-the version of the application code, relative to other versions.
-
-<p>The value is an integer so that other applications can programmatically
-evaluate it, for example to check an upgrade or downgrade relationship. You can
-set the value to any integer you want, however you should make sure that each
-successive release of your application uses a greater value. The system does not
-enforce this behavior, but increasing the value with successive releases is
-normative. </p>
-
-<p>Typically, you would release the first version of your application with
-versionCode set to 1, then monotonically increase the value with each release,
-regardless whether the release constitutes a major or minor release. This means
-that the <code>android:versionCode</code> value does not necessarily have a
-strong resemblance to the application release version that is visible to the
-user (see <code>android:versionName</code>, below). Applications and publishing
-services should not display this version value to users.</p>
-</li>
-<li><code>android:versionName</code> &mdash; A string value that represents the
-release version of the application code, as it should be shown to users.
-<p>The value is a string so that you can describe the application version as a
-&lt;major&gt;.&lt;minor&gt;.&lt;point&gt; string, or as any other type of
-absolute or relative version identifier. </p>
-
-<p>As with <code>android:versionCode</code>, the system does not use this value
-for any internal purpose, other than to enable applications to display it to
-users. Publishing services may also extract the <code>android:versionName</code>
-value for display to users.</p>
-</li>
-</ul>
-
-<p>You define both of these version attributes in the
-<code>&lt;manifest&gt;</code> element of the manifest file. </p>
-
-<p>Here's an example manifest that shows the <code>android:versionCode</code>
-and <code>android:versionName</code> attributes in the
-<code>&lt;manifest&gt;</code> element. </p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-      package="com.example.package.name"
-      android:versionCode="2"
-      android:versionName="1.1"&gt;
-    &lt;application android:icon="@drawable/icon" android:label="@string/app_name"&gt;
-        ...
-    &lt;/application&gt;
-&lt;/manifest&gt;
-</pre>
-
-<p>In this example, note that <code>android:versionCode</code> value indicates
-that the current .apk contains the second release of the application code, which
-corresponds to a minor follow-on release, as shown by the
-<code>android:versionName</code> string. </p>
-
-<p>The Android framework provides an API to let applications query the system
-for version information about your application. To obtain version information,
-applications use the
-{@link android.content.pm.PackageManager#getPackageInfo(java.lang.String, int)}
-method of {@link android.content.pm.PackageManager PackageManager}. </p>
-
-<h2 id="minsdkversion">Specifying Your Application's System API Requirements</h2>
-
-<p>If your application requires a specific minimum version of the Android
-platform, or is designed only to support a certain range of Android platform
-versions, you can specify those version requirements as API Level identifiers
-in the application's manifest file. Doing so ensures that your
-application can only be installed on devices that
-are running a compatible version of the Android system. </p>
-
-<p>To specify API Level requirements, add a <code>&lt;uses-sdk&gt;</code>
-element in the application's manifest, with one or more of these attributes: </p>
-
-<ul>
-<li><code>android:minSdkVersion</code> &mdash; The minimum version
-of the Android platform on which the application will run, specified
-by the platform's API Level identifier. </li>
-<li><code>android:targetSdkVersion</code> &mdash; Specifies the API Level
-on which the application is designed to run. In some cases, this allows the
-application to use manifest elements or behaviors defined in the target
-API Level, rather than being restricted to using only those defined
-for the minimum API Level.</li>
-<li><code>android:maxSdkVersion</code> &mdash; The maximum version
-of the Android platform on which the application is designed to run,
-specified by the platform's API Level identifier. <strong>Important:</strong> Please read the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
-documentation before using this attribute. </li>
-</ul>
-
-<p>When preparing to install your application, the system checks the value of this
-attribute and compares it to the system version. If the
-<code>android:minSdkVersion</code> value is greater than the system version, the
-system aborts the installation of the application. Similarly, the system
-installs your application only if its <code>android:maxSdkVersion</code>
-is compatible with the platform version.</p>
-
-<p>If you do not specify these attributes in your manifest, the system assumes
-that your application is compatible with all platform versions, with no
-maximum API Level. </p>
-
-<p>To specify a minimum platform version for your application, add a
-<code>&lt;uses-sdk&gt;</code> element as a child of
-<code>&lt;manifest&gt;</code>, then define the
-<code>android:minSdkVersion</code> as an attribute. </p>
-
-<p>For more information, see the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
-manifest element documentation and the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Levels</a> document.</p>
diff --git a/docs/html/training/basics/data-storage/databases.jd b/docs/html/training/basics/data-storage/databases.jd
index 61fb758..6ea2140 100644
--- a/docs/html/training/basics/data-storage/databases.jd
+++ b/docs/html/training/basics/data-storage/databases.jd
@@ -73,25 +73,23 @@
 
 
 <pre>
-public static abstract class FeedEntry implements BaseColumns {
-    public static final String TABLE_NAME = &quot;entry&quot;;
-    public static final String COLUMN_NAME_ENTRY_ID = &quot;entryid&quot;;
-    public static final String COLUMN_NAME_TITLE = &quot;title&quot;;
-    public static final String COLUMN_NAME_SUBTITLE = &quot;subtitle&quot;;
-    ...
+public final class FeedReaderContract {
+    // To prevent someone from accidentally instantiating the contract class,
+    // give it an empty constructor.
+    public FeedReaderContract() {}
+
+    /* Inner class that defines the table contents */
+    public static abstract class FeedEntry implements BaseColumns {
+        public static final String TABLE_NAME = &quot;entry&quot;;
+        public static final String COLUMN_NAME_ENTRY_ID = &quot;entryid&quot;;
+        public static final String COLUMN_NAME_TITLE = &quot;title&quot;;
+        public static final String COLUMN_NAME_SUBTITLE = &quot;subtitle&quot;;
+        ...
+    }
 }
 </pre>
 
 
-<p>To prevent someone from accidentally instantiating the contract class, give
-it an empty constructor.  </p>
-
-<pre>
-// Prevents the FeedReaderContract class from being instantiated.
-private FeedReaderContract() {}
-</pre>
-
-
 
 <h2 id="DbHelper">Create a Database Using a SQL Helper</h2>
 
@@ -103,15 +101,15 @@
 private static final String TEXT_TYPE = &quot; TEXT&quot;;
 private static final String COMMA_SEP = &quot;,&quot;;
 private static final String SQL_CREATE_ENTRIES =
-    &quot;CREATE TABLE &quot; + FeedReaderContract.FeedEntry.TABLE_NAME + &quot; (&quot; +
-    FeedReaderContract.FeedEntry._ID + &quot; INTEGER PRIMARY KEY,&quot; +
-    FeedReaderContract.FeedEntry.COLUMN_NAME_ENTRY_ID + TEXT_TYPE + COMMA_SEP +
-    FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE + TEXT_TYPE + COMMA_SEP +
+    &quot;CREATE TABLE &quot; + FeedEntry.TABLE_NAME + &quot; (&quot; +
+    FeedEntry._ID + &quot; INTEGER PRIMARY KEY,&quot; +
+    FeedEntry.COLUMN_NAME_ENTRY_ID + TEXT_TYPE + COMMA_SEP +
+    FeedEntry.COLUMN_NAME_TITLE + TEXT_TYPE + COMMA_SEP +
     ... // Any other options for the CREATE command
     &quot; )&quot;;
 
 private static final String SQL_DELETE_ENTRIES =
-    &quot;DROP TABLE IF EXISTS &quot; + TABLE_NAME_ENTRIES;
+    &quot;DROP TABLE IF EXISTS &quot; + FeedEntry.TABLE_NAME;
 </pre>
 
 <p>Just like files that you save on the device's <a
@@ -191,15 +189,15 @@
 
 // Create a new map of values, where column names are the keys
 ContentValues values = new ContentValues();
-values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_ENTRY_ID, id);
-values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE, title);
-values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_CONTENT, content);
+values.put(FeedEntry.COLUMN_NAME_ENTRY_ID, id);
+values.put(FeedEntry.COLUMN_NAME_TITLE, title);
+values.put(FeedEntry.COLUMN_NAME_CONTENT, content);
 
 // Insert the new row, returning the primary key value of the new row
 long newRowId;
 newRowId = db.insert(
-         FeedReaderContract.FeedEntry.TABLE_NAME,
-         FeedReaderContract.FeedEntry.COLUMN_NAME_NULLABLE,
+         FeedEntry.TABLE_NAME,
+         FeedEntry.COLUMN_NAME_NULLABLE,
          values);
 </pre>
 
@@ -227,18 +225,18 @@
 // Define a <em>projection</em> that specifies which columns from the database
 // you will actually use after this query.
 String[] projection = {
-    FeedReaderContract.FeedEntry._ID,
-    FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE,
-    FeedReaderContract.FeedEntry.COLUMN_NAME_UPDATED,
+    FeedEntry._ID,
+    FeedEntry.COLUMN_NAME_TITLE,
+    FeedEntry.COLUMN_NAME_UPDATED,
     ...
     };
 
 // How you want the results sorted in the resulting Cursor
 String sortOrder =
-    FeedReaderContract.FeedEntry.COLUMN_NAME_UPDATED + " DESC";
+    FeedEntry.COLUMN_NAME_UPDATED + " DESC";
 
 Cursor c = db.query(
-    FeedReaderContract.FeedEntry.TABLE_NAME,  // The table to query
+    FeedEntry.TABLE_NAME,  // The table to query
     projection,                               // The columns to return
     selection,                                // The columns for the WHERE clause
     selectionArgs,                            // The values for the WHERE clause
@@ -262,7 +260,7 @@
 <pre>
 cursor.moveToFirst();
 long itemId = cursor.getLong(
-    cursor.getColumnIndexOrThrow(FeedReaderContract.FeedEntry._ID)
+    cursor.getColumnIndexOrThrow(FeedEntry._ID)
 );
 </pre>
 
@@ -282,7 +280,7 @@
 
 <pre>
 // Define 'where' part of query.
-String selection = FeedReaderContract.FeedEntry.COLUMN_NAME_ENTRY_ID + &quot; LIKE ?&quot;;
+String selection = FeedEntry.COLUMN_NAME_ENTRY_ID + &quot; LIKE ?&quot;;
 // Specify arguments in placeholder order.
 String[] selectionArgs = { String.valueOf(rowId) };
 // Issue SQL statement.
@@ -305,10 +303,10 @@
 
 // New value for one column
 ContentValues values = new ContentValues();
-values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE, title);
+values.put(FeedEntry.COLUMN_NAME_TITLE, title);
 
 // Which row to update, based on the ID
-String selection = FeedReaderContract.FeedEntry.COLUMN_NAME_ENTRY_ID + &quot; LIKE ?&quot;;
+String selection = FeedEntry.COLUMN_NAME_ENTRY_ID + &quot; LIKE ?&quot;;
 String[] selectionArgs = { String.valueOf(rowId) };
 
 int count = db.update(
diff --git a/docs/html/training/camera/index.jd b/docs/html/training/camera/index.jd
index fa754a0..d6305d6 100644
--- a/docs/html/training/camera/index.jd
+++ b/docs/html/training/camera/index.jd
@@ -1,5 +1,5 @@
 page.title=Capturing Photos
-page.tags="camera","video"
+page.tags="camera","video","picture"
 
 trainingnavtop=true
 startpage=true
@@ -42,7 +42,7 @@
 part of your users' lives, give them a way to put their lives into it.
 Using the on-board cameras, your application can enable users to augment what
 they see around them, make unique avatars, look for zombies around the corner,
-or simply share their experiences.</p> 
+or simply share their experiences.</p>
 
 <p>This class gets you clicking fast with some super-easy ways of
 leveraging existing camera applications. In later lessons, you dive deeper
@@ -50,7 +50,7 @@
 
 
 <h2>Lessons</h2>
- 
+
 <dl>
   <dt><b><a href="photobasics.html">Taking Photos Simply</a></b></dt>
   <dd>Leverage other applications and capture photos with just a few lines of code.</dd>
@@ -58,5 +58,5 @@
   <dd>Leverage other applications and record videos with just a few lines of code.</dd>
   <dt><b><a href="cameradirect.html">Controlling the Camera</a></b></dt>
   <dd>Control the camera hardware directly and implement your own camera application.</dd>
-</dl> 
+</dl>
 
diff --git a/docs/html/training/contacts-provider/ContactsList.zip b/docs/html/training/contacts-provider/ContactsList.zip
deleted file mode 100644
index d2a5cfb..0000000
--- a/docs/html/training/contacts-provider/ContactsList.zip
+++ /dev/null
Binary files differ
diff --git a/docs/html/training/implementing-navigation/ancestral.jd b/docs/html/training/implementing-navigation/ancestral.jd
index ac35e64..c3c7ef8 100644
--- a/docs/html/training/implementing-navigation/ancestral.jd
+++ b/docs/html/training/implementing-navigation/ancestral.jd
@@ -1,12 +1,7 @@
-page.title=Implementing Ancestral Navigation
-parent.title=Implementing Effective Navigation
-parent.link=index.html
+page.title=Providing Up Navigation
+page.tags="up navigation","NavUtils","TaskStackBuilder"
 
 trainingnavtop=true
-previous.title=Implementing Lateral Navigation
-previous.link=lateral.html
-next.title=Implementing Temporal Navigation
-next.link=temporal.html
 
 @jd:body
 
@@ -15,8 +10,9 @@
 
 <h2>This lesson teaches you to:</h2>
 <ol>
-  <li><a href="#up">Implement <em>Up</em> Navigation</a></li>
-  <li><a href="#app-home">Properly Handle the Application Home Screen</a></li>
+  <li><a href="#SpecifyParent">Specify the Parent Activity</a></li>
+  <li><a href="#up">Add Up Action</a></li>
+  <li><a href="#NavigateUp">Navigate Up to Parent Activity</a></li>
 </ol>
 
 <h2>You should also read</h2>
@@ -38,87 +34,180 @@
 </div>
 
 
-<p><em>Ancestral navigation</em> is up the application's information hierarchy, where the top of the hierarchy (or root) is the application's home screen. This navigation concept is described in <a href="{@docRoot}training/design-navigation/ancestral-temporal.html">Designing Effective Navigation</a>. This lesson discusses how to provide ancestral navigation using the <em>Up</em> button in the action bar.</p>
+<p>All screens in your app that are not the main entrance to your app (the "home" screen)
+should offer the user a way to navigate to the logical parent screen in the app's hierarchy by
+pressing the <em>Up</em> button in the <a
+href="{@docRoot}guide/topics/ui/actionbar.html">action bar</a>.
+This lesson shows you how to properly implement this behavior.</p>
+
+<div class="note design">
+<p><strong>Up Navigation Design</strong></p>
+<p>The concepts and principles for <em>Up</em> navigation are described in <a
+href="{@docRoot}training/design-navigation/ancestral-temporal.html">Designing Effective
+Navigation</a> and the <a href="{@docRoot}design/patterns/navigation.html">Navigation</a> design
+guide.</p>
+</div>
 
 
-<h2 id="up">Implement <em>Up</em> Navigation</h2>
-
-<p>When implementing ancestral navigation, all screens in your application that aren't the home screen should offer a means of navigating to the immediate parent screen in the hierarchy via the <em>Up</em> button in the action bar.</p>
-
-
-<img src="{@docRoot}images/training/implementing-navigation-up.png"
-  alt="The Up button in the action bar." id="figure-up">
-
+<img src="{@docRoot}images/training/implementing-navigation-up.png" id="figure-up">
 <p class="img-caption"><strong>Figure 1.</strong> The <em>Up</em> button in the action bar.</p>
 
-<p>Regardless of how the current screen was reached, pressing this button should always take the user to the same screen in the hierarchy.</p>
 
-<p>To implement <em>Up</em>, enable it in the action bar in your activity's {@link android.app.Activity#onCreate onCreate()} method:</p>
+
+<h2 id="SpecifyParent">Specify the Parent Activity</h2>
+
+<p>To implement <em>Up</em> navigation, the first step is to declare which activity is the
+appropriate parent for each activity. Doing so allows the system to facilitate navigation patterns
+such as <em>Up</em> because the system can determine the logical parent activity from
+the manifest file.</p>
+
+<p>Beginning in Android 4.1 (API level 16), you can declare the logical parent of each
+activity by specifying the <a
+href="{@docRoot}guide/topics/manifest/activity-element.html#parent">{@code
+android:parentActivityName}</a> attribute
+in the <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity>}</a>
+element.</p>
+
+<p>If your app supports Android 4.0 and lower, include the
+<a href="{@docRoot}tools/extras/support-library.html">Support Library</a> with your app and
+add a <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">{@code &lt;meta-data>}</a>
+element inside the <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity>}</a>. Then specify the parent activity as the value
+for {@code android.support.PARENT_ACTIVITY}, matching the <a
+href="{@docRoot}guide/topics/manifest/activity-element.html#parent">{@code
+android:parentActivityName}</a> attribute.</p>
+
+<p>For example:</p>
+
+<pre>
+&lt;application ... >
+    ...
+    &lt;!-- The main/home activity (it has no parent activity) -->
+    &lt;activity
+        android:name="com.example.myfirstapp.MainActivity" ...>
+        ...
+    &lt;/activity>
+    &lt;!-- A child of the main activity -->
+    &lt;activity
+        android:name="com.example.myfirstapp.DisplayMessageActivity"
+        android:label="&#64;string/title_activity_display_message"
+        android:parentActivityName="com.example.myfirstapp.MainActivity" >
+        &lt;!-- Parent activity meta-data to support 4.0 and lower -->
+        &lt;meta-data
+            android:name="android.support.PARENT_ACTIVITY"
+            android:value="com.example.myfirstapp.MainActivity" />
+    &lt;/activity>
+&lt;/application>
+</pre>
+
+<p>With the parent activity declared this way, you can navigate <em>Up</em>
+to the appropriate parent using the {@link android.support.v4.app.NavUtils} APIs, as shown in
+the following sections.</p>
+
+
+<h2 id="up">Add Up Action</h2>
+
+<p>To allow <em>Up</em> navigation with the app icon in the action bar, call
+{@link android.app.ActionBar#setDisplayHomeAsUpEnabled setDisplayHomeAsUpEnabled()}:</p>
 
 <pre>
 {@literal @}Override
 public void onCreate(Bundle savedInstanceState) {
     ...
     getActionBar().setDisplayHomeAsUpEnabled(true);
-    ...
 }
 </pre>
 
-<p>You should also handle <code>android.R.id.home</code> in {@link android.app.Activity#onOptionsItemSelected onOptionsItemSelected()}. This resource is the menu item ID for the <em>Home</em> (or <em>Up</em>) button. To ensure that a specific parent activity is shown, <em>DO NOT</em> simply call {@link android.app.Activity#finish finish()}. Instead, use an intent such as the one described below.</p>
+<p>This adds a left-facing caret alongside the app icon and enables it as an action button
+such that when the user presses it, your activity receives a call to
+{@link android.app.Activity#onOptionsItemSelected onOptionsItemSelected()}. The
+ID for the action is {@code android.R.id.home}.</p>
+
+
+
+<h2 id="NavigateUp">Navigate Up to Parent Activity</h2>
+
+<p>To navigate up when the user presses the app icon, you can use the {@link
+android.support.v4.app.NavUtils} class's static method,
+{@link android.support.v4.app.NavUtils#navigateUpFromSameTask
+navigateUpFromSameTask()}. When you call this method, it finishes the current activity and
+starts (or resumes) the appropriate parent activity.
+If the target parent activity is in the task's back stack, it is brought
+forward as defined by {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}.</p>
+
+<p>For example:</p>
 
 <pre>
 {@literal @}Override
 public boolean onOptionsItemSelected(MenuItem item) {
     switch (item.getItemId()) {
-        case android.R.id.home:
-            // This is called when the Home (Up) button is pressed
-            // in the Action Bar.
-            Intent parentActivityIntent = new Intent(this, MyParentActivity.class);
-            parentActivityIntent.addFlags(
-                    Intent.FLAG_ACTIVITY_CLEAR_TOP |
-                    Intent.FLAG_ACTIVITY_NEW_TASK);
-            startActivity(parentActivityIntent);
-            finish();
-            return true;
+    // Respond to the action bar's Up/Home button
+    case android.R.id.home:
+        NavUtils.navigateUpFromSameTask(this);
+        return true;
     }
     return super.onOptionsItemSelected(item);
 }
 </pre>
 
-<p>When the current activity belongs to a task from a different application&mdash;for example if it was reached via an intent from another application&mdash;pressing <em>Up</em> should create a new task for the application with a synthesized back stack. This approach is described in <a href="{@docRoot}design/patterns/navigation.html">Android Design: Navigation</a> and the {@link android.support.v4.app.TaskStackBuilder} class reference.</p>
+<p>However, using {@link android.support.v4.app.NavUtils#navigateUpFromSameTask
+navigateUpFromSameTask()} is suitable <strong>only when your app is the owner of the current
+task</strong> (that is, the user began this task from your app). If that's not true and your
+activity was started in a task that belongs to a different app, then
+navigating <em>Up</em> should create a new task that belongs to your app, which
+requires that you create a new back stack.</p>
 
-<p>The {@link android.support.v4.app.NavUtils} and {@link android.support.v4.app.TaskStackBuilder} classes in the <a href="{@docRoot}tools/extras/support-library.html">Android Support Package</a> provide helpers for implementing this behavior correctly. An example usage of these two helper classes is below:</p>
+
+<h3 id="BuildBackStack">Navigate up with a new back stack</h3>
+
+<p>If your activity provides any <a
+href="{@docRoot}guide/components/intents-filters.html#ifs">intent filters</a>
+that allow other apps to start the
+activity, you should implement the {@link android.app.Activity#onOptionsItemSelected
+onOptionsItemSelected()} callback such that if the user presses the <em>Up</em> button
+after entering your activity from another app's task, your app starts a new task
+with the appropriate back stack before navigating up.</p>
+
+<p>You can do so by first calling
+{@link android.support.v4.app.NavUtils#shouldUpRecreateTask shouldUpRecreateTask()} to check
+whether the current activity instance exists in a different app's task. If
+it returns true, then build a new task with {@link android.support.v4.app.TaskStackBuilder}.
+Otherwise, you can use the {@link android.support.v4.app.NavUtils#navigateUpFromSameTask
+navigateUpFromSameTask()} method as shown above.</p>
+
+<p>For example:</p>
 
 <pre>
 {@literal @}Override
 public boolean onOptionsItemSelected(MenuItem item) {
     switch (item.getItemId()) {
-        case android.R.id.home:
-            Intent upIntent = new Intent(this, MyParentActivity.class);
-            if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
-                // This activity is not part of the application's task, so create a new task
-                // with a synthesized back stack.
-                TaskStackBuilder.from(this)
-                        .addNextIntent(new Intent(this, MyGreatGrandParentActivity.class))
-                        .addNextIntent(new Intent(this, MyGrandParentActivity.class))
-                        .addNextIntent(upIntent)
-                        .startActivities();
-                finish();
-            } else {
-                // This activity is part of the application's task, so simply
-                // navigate up to the hierarchical parent activity.
-                NavUtils.navigateUpTo(this, upIntent);
-            }
-            return true;
+    // Respond to the action bar's Up/Home button
+    case android.R.id.home:
+        Intent upIntent = NavUtils.getParentActivityIntent(this);
+        if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
+            // This activity is NOT part of this app's task, so create a new task
+            // when navigating up, with a synthesized back stack.
+            TaskStackBuilder.create(this)
+                    // Add all of this activity's parents to the back stack
+                    .addNextIntentWithParentStack(upIntent)
+                    // Navigate up to the closest parent
+                    .startActivities();
+        } else {
+            // This activity is part of this app's task, so simply
+            // navigate up to the logical parent activity.
+            NavUtils.navigateUpTo(this, upIntent);
+        }
+        return true;
     }
     return super.onOptionsItemSelected(item);
 }
 </pre>
 
-<h2 id="app-home">Properly Handle the Application Home Screen</h2>
-
-<p>By default, the <em>Home</em> button in the action bar is interactive. Since it does not make much sense to navigate home&mdash;or up one level&mdash;while on the home screen, you should disable the button like so:</p>
-
-<pre>
-getActionBar().setHomeButtonEnabled(false);
-</pre>
+<p class="note"><strong>Note:</strong> In order for the {@link
+android.support.v4.app.TaskStackBuilder#addNextIntentWithParentStack addNextIntentWithParentStack()}
+method to work,
+you must declare the logical parent of each activity in your manifest file, using the
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#parent">{@code
+android:parentActivityName}</a> attribute (and corresponding <a
+href="{@docRoot}guide/topics/manifest/meta-data-element.html">{@code &lt;meta-data>}</a> element)
+as described above.</p>
diff --git a/docs/html/training/implementing-navigation/index.jd b/docs/html/training/implementing-navigation/index.jd
index 990bcfe..519f6bb 100644
--- a/docs/html/training/implementing-navigation/index.jd
+++ b/docs/html/training/implementing-navigation/index.jd
@@ -1,5 +1,4 @@
 page.title=Implementing Effective Navigation
-page.tags="viewpager","tasks","back","up"
 
 trainingnavtop=true
 startpage=true
@@ -12,9 +11,9 @@
 <h2>Dependencies and prerequisites</h2>
 
 <ul>
-  <li>API level 14</li>
+  <li>Android 2.2 or higher</li>
   <li>Understanding of fragments and Android layouts</li>
-  <li><a href="{@docRoot}tools/extras/support-library.html">The Android Support Package</a></li>
+  <li><a href="{@docRoot}tools/extras/support-library.html">Android Support Library</a></li>
   <li><a href="{@docRoot}training/design-navigation/index.html">Designing Effective Navigation</a></li>
 </ul>
 
@@ -40,28 +39,38 @@
 
 <p>This class demonstrates how to implement the key navigation design patterns detailed in the
 <a href="{@docRoot}training/design-navigation/index.html">Designing Effective Navigation</a> class.
-The lessons in this class cover implementing navigation up, down, and across your application's <a
-href="{@docRoot}training/design-navigation/screen-planning.html#diagram- relationships">screen
-map</a>.</p>
+</p>
 
-<p>After reading through the lessons in this class and exploring the associated sample application
-(see right), you should also have a basic understanding of how to use
-{@link android.app.ActionBar} and {@link android.support.v4.view.ViewPager}, two components that are fundamental to core app navigation.</p>
+<p>After reading the lessons in this class, you should have a strong understanding of how to
+implement navigation patterns with tabs, swipe views, and a navigation drawer. You should also
+understand how to provide proper <em>Up</em> and <em>Back</em> navigation.</p>
+
+<p class="note"><strong>Note:</strong> Several elements of this class require the
+<a href="{@docRoot}tools/extras/support-library.html">Support Library</a> APIs.
+If you have not used the Support Library before, follow the lesson about <a
+href="{@docRoot}training/basics/fragments/support-lib.html">Using the Support Library</a>
+to get your project set up.</p>
 
 
 <h2 id="lessons">Lessons</h2>
 
-
 <dl>
-  <dt><strong><a href="lateral.html">Implementing Lateral Navigation</a></strong></dt>
-    <dd>Learn how to implement tabs and horizontal paging (swipe views).</dd>
+  <dt><strong><a href="lateral.html">Creating Swipe Views with Tabs</a></strong></dt>
+    <dd>Learn how to implement tabs in the action bar and provide
+    horizontal paging (swipe views) to navigate between tabs.</dd>
 
-  <dt><strong><a href="ancestral.html">Implementing Ancestral Navigation</a></strong></dt>
-    <dd>Learn how to implement <em>Up</em> navigation.</dd>
+  <dt><strong><a href="nav-drawer.html">Creating a Navigation Drawer</a></strong></dt>
+    <dd>Learn how to build an interface with a hidden navigation drawer on the side
+    of the screen that opens with a swipe or by pressing the action bar's app icon.</dd>
 
-  <dt><strong><a href="temporal.html">Implementing Temporal Navigation</a></strong></dt>
-    <dd>Learn how to correctly handle the <em>Back</em> button.</dd>
+  <dt><strong><a href="ancestral.html">Providing Up Navigation</a></strong></dt>
+    <dd>Learn how to implement <em>Up</em> navigation using the action bar's app icon.</dd>
+
+  <dt><strong><a href="temporal.html">Providing Proper Back Navigation</a></strong></dt>
+    <dd>Learn how to correctly handle the <em>Back</em> button in special cases,
+    including how to insert activities into the back stack when deep-linking the user
+    from notifications or app widgets.</dd>
 
   <dt><strong><a href="descendant.html">Implementing Descendant Navigation</a></strong></dt>
-    <dd>Learn the finer points of implementing navigation into your application's information hierarchy.</dd>
+    <dd>Learn the finer points of navigating down into your application's information hierarchy.</dd>
 </dl>
diff --git a/docs/html/training/implementing-navigation/lateral.jd b/docs/html/training/implementing-navigation/lateral.jd
index c8f57a2..b314497 100644
--- a/docs/html/training/implementing-navigation/lateral.jd
+++ b/docs/html/training/implementing-navigation/lateral.jd
@@ -1,10 +1,7 @@
-page.title=Implementing Lateral Navigation
-parent.title=Implementing Effective Navigation
-parent.link=index.html
+page.title=Creating Swipe Views with Tabs
+page.tags="viewpager","horizontal","paging","swipe view"
 
 trainingnavtop=true
-next.title=Implementing Ancestral Navigation
-next.link=ancestral.html
 
 @jd:body
 
@@ -13,11 +10,13 @@
 
 <h2>This lesson teaches you to</h2>
 <ol>
-  <li><a href="#tabs">Implement Tabs</a></li>
-  <li><a href="#horizontal-paging">Implement Horizontal Paging (Swipe Views)</a></li>
-  <li><a href="#swipe-tabs">Implement Swiping Between Tabs</a></li>
+  <li><a href="#horizontal-paging">Implement Swipe Views</a></li>
+  <li><a href="#tabs">Add Tabs to the Action Bar</a></li>
+  <li><a href="#swipe-tabs">Change Tabs with Swipe Views</a></li>
+  <li><a href="#PagerTitleStrip">Use a Title Strip Instead of Tabs</a></li>
 </ol>
 
+
 <h2>You should also read</h2>
 <ul>
   <li><a href="{@docRoot}training/design-navigation/descendant-lateral.html">Providing Descendant and Lateral Navigation</a></li>
@@ -37,92 +36,60 @@
 </div>
 
 
-<p><em>Lateral navigation</em> is navigation between sibling screens in the application's screen hierarchy (sometimes referred to as a screen map). The most prominent lateral navigation patterns are tabs and horizontal paging (also known as swipe views). This pattern and others are described in <a href="{@docRoot}training/design-navigation/descendant-lateral.html">Designing Effective Navigation</a>. This lesson covers how to implement several of the primary lateral navigation patterns in Android.</p>
+<p>Swipe views provide lateral navigation between sibling screens such as tabs with
+a horizontal finger gesture (a pattern sometimes known as horizontal paging). This lesson teaches
+you how to create a tab layout with swipe views for switching between tabs, or how to show
+a title strip instead of tabs.</p>
 
-<h2 id="tabs">Implement Tabs</h2>
+<div class="note design">
+<p><strong>Swipe View Design</strong></p>
+<p>Before implementing these features, you should understand the concepts and recommendations
+as described in <a href="{@docRoot}training/design-navigation/descendant-lateral.html">Designing
+Effective Navigation</a> and the <a href="{@docRoot}design/patterns/swipe-views.html">Swipe
+Views</a> design guide.</p>
+</div>
 
-<p>Tabs allow the user to navigate between sibling screens by selecting the appropriate tab indicator available at the top of the display. In Android 3.0 and later, tabs are implemented using the {@link android.app.ActionBar} class, and are generally set up in {@link android.app.Activity#onCreate Activity.onCreate()}. In some cases, such as when horizontal space is limited and/or the number of tabs is large, an appropriate alternate presentation for tabs is a dropdown list (sometimes implemented using a {@link android.widget.Spinner}).</p>
 
-<p>In previous versions of Android, tabs could be implemented using a
-{@link android.widget.TabWidget} and {@link android.widget.TabHost}.</p>
 
-<p>As of Android 3.0, however, you should use either {@link android.app.ActionBar#NAVIGATION_MODE_TABS} or {@link android.app.ActionBar#NAVIGATION_MODE_LIST} along with the {@link android.app.ActionBar} class.</p>
 
-<h3>Implement the Tabs Pattern with NAVIGATION_MODE_TABS</h3>
 
-<p>To create tabs, you can use the following code in your activity's {@link android.app.Activity#onCreate onCreate()} method. Note that the exact presentation of tabs may vary per device and by the current device configuration, to make best use of available screen space. For example, Android may automatically collapse tabs into a dropdown list if tabs don't fit horizontally in the action bar.</p>
+<h2 id="horizontal-paging">Implement Swipe Views</h2>
+
+<p>You can create swipe views in your app using the {@link android.support.v4.view.ViewPager}
+widget, available in the
+<a href="{@docRoot}tools/extras/support-library.html">Support Library</a>. The
+{@link android.support.v4.view.ViewPager} is a layout widget in which each child view is
+a separate page (a separate tab) in the layout.</p>
+
+<p>To set up your layout with {@link android.support.v4.view.ViewPager}, add a
+{@code &lt;ViewPager>} element to your XML layout. For example, if each page in the swipe view
+should consume the entire layout, then your layout looks like this:</p>
 
 <pre>
-{@literal @}Override
-public void onCreate(Bundle savedInstanceState) {
-    ...
-    final ActionBar actionBar = getActionBar();
-
-    // Specify that tabs should be displayed in the action bar.
-    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
-
-    // Create a tab listener that is called when the user changes tabs.
-    ActionBar.TabListener tabListener = new ActionBar.TabListener() {
-        public void onTabSelected(ActionBar.Tab tab,
-                FragmentTransaction ft) { }
-
-        public void onTabUnselected(ActionBar.Tab tab,
-                FragmentTransaction ft) { }
-
-        public void onTabReselected(ActionBar.Tab tab,
-                FragmentTransaction ft) { }
-    };
-
-    // Add 3 tabs.
-    for (int i = 0; i &lt; 3; i++) {
-        actionBar.addTab(
-                actionBar.newTab()
-                        .setText("Tab " + (i + 1))
-                        .setTabListener(tabListener));
-    }
-    ...
-}
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;android.support.v4.view.ViewPager
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/pager"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent" />
 </pre>
 
-<h3>Implement the Tabs Pattern with NAVIGATION_MODE_LIST</h3>
+<p>To insert child views that represent each page,
+you need to hook this layout to a {@link android.support.v4.view.PagerAdapter}.
+There are two kinds of adapter you can use:</p>
 
-<p>To use a dropdown list instead, use the following code in your activity's {@link android.app.Activity#onCreate onCreate()} method. Dropdown lists are often preferable in cases where more information must be shown per navigation item, such as unread message counts, or where the number of available navigation items is large.</p>
+<dl>
+    <dt>{@link android.support.v4.app.FragmentPagerAdapter}</dt>
+        <dd>This is best when navigating between sibling screens representing a fixed, small
+        number of pages.</dd>
+    <dt>{@link android.support.v4.app.FragmentStatePagerAdapter}</dt>
+        <dd>This is best for paging across a collection of objects
+for which the number of pages is undetermined. It destroys
+fragments as the user navigates to other pages, minimizing memory usage.</dd>
+</dl>
 
-<pre>
-{@literal @}Override
-public void onCreate(Bundle savedInstanceState) {
-    ...
-    final ActionBar actionBar = getActionBar();
-
-    // Specify that a dropdown list should be displayed in the action bar.
-    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
-
-    actionBar.setListNavigationCallbacks(
-            // Specify a SpinnerAdapter to populate the dropdown list.
-            new ArrayAdapter<String>(
-                    actionBar.getThemedContext(),
-                    android.R.layout.simple_list_item_1,
-                    android.R.id.text1,
-                    new String[]{ "Tab 1", "Tab 2", "Tab 3" }),
-
-            // Provide a listener to be called when an item is selected.
-            new ActionBar.OnNavigationListener() {
-                public boolean onNavigationItemSelected(
-                        int position, long id) {
-                    // Take action here, e.g. switching to the
-                    // corresponding fragment.
-                    return true;
-                }
-            });
-    ...
-}
-</pre>
-
-<h2 id="horizontal-paging">Implement Horizontal Paging (Swipe Views)</h2>
-
-<p>Horizontal paging, or swipe views, allow users to <a href="{@docRoot}design/patterns/swipe-views.html">swipe</a> horizontally on the current screen to navigate to adjacent screens. This pattern can be implemented using the {@link android.support.v4.view.ViewPager} widget, currently available as part of the <a href="{@docRoot}tools/extras/support-library.html">Android Support Package</a>. For navigating between sibling screens representing a fixed number of sections, it's best to provide the {@link android.support.v4.view.ViewPager} with a {@link android.support.v4.app.FragmentPagerAdapter}. For horizontal paging across collections of objects, it's best to use a {@link android.support.v4.app.FragmentStatePagerAdapter}, which destroys fragments as the user navigates to other pages, minimizing memory usage.</p>
-
-<p>Below is an example of using a {@link android.support.v4.view.ViewPager} to swipe across a collection of objects.</p>
+<p>For example, here's how you might use {@link android.support.v4.app.FragmentStatePagerAdapter}
+to swipe across a collection of {@link android.app.Fragment} objects:</p>
 
 <pre>
 public class CollectionDemoActivity extends FragmentActivity {
@@ -147,8 +114,7 @@
 
 // Since this is an object collection, use a FragmentStatePagerAdapter,
 // and NOT a FragmentPagerAdapter.
-public class DemoCollectionPagerAdapter extends
-        FragmentStatePagerAdapter {
+public class DemoCollectionPagerAdapter extends FragmentStatePagerAdapter {
     public DemoCollectionPagerAdapter(FragmentManager fm) {
         super(fm);
     }
@@ -194,7 +160,125 @@
 }
 </pre>
 
-<p>You can also add indicators to your horizontal paging UI by adding a {@link android.support.v4.view.PagerTitleStrip}. Below is an example layout XML file for an activity whose entire contents are a {@link android.support.v4.view.ViewPager} and a top-aligned {@link android.support.v4.view.PagerTitleStrip} inside it. Individual pages (provided by the adapter) occupy the remaining space inside the {@link android.support.v4.view.ViewPager}.</p>
+<p>This example shows only the code necessary to create the swipe views. The following
+sections show how you can add tabs to help facilitate navigation between pages.</p>
+
+
+<h2 id="tabs">Add Tabs to the Action Bar</h2>
+
+<p>Action bar
+<a href="{@docRoot}design/building-blocks/tabs.html">tabs</a> offer users a familiar interface
+for navigating between and identifying sibling screens in your app.</p>
+
+<p>To create tabs using {@link android.app.ActionBar}, you need to enable
+{@link android.app.ActionBar#NAVIGATION_MODE_TABS}, then create several instances of
+{@link android.app.ActionBar.Tab} and supply an implementation of
+the {@link android.app.ActionBar.TabListener} interface for each one.
+For example, in your activity's {@link
+android.app.Activity#onCreate onCreate()} method, you can use code similar to this:</p>
+
+<pre>
+{@literal @}Override
+public void onCreate(Bundle savedInstanceState) {
+    final ActionBar actionBar = getActionBar();
+    ...
+
+    // Specify that tabs should be displayed in the action bar.
+    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
+
+    // Create a tab listener that is called when the user changes tabs.
+    ActionBar.TabListener tabListener = new ActionBar.TabListener() {
+        public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
+            // show the given tab
+        }
+
+        public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
+            // hide the given tab
+        }
+
+        public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
+            // probably ignore this event
+        }
+    };
+
+    // Add 3 tabs, specifying the tab's text and TabListener
+    for (int i = 0; i &lt; 3; i++) {
+        actionBar.addTab(
+                actionBar.newTab()
+                        .setText("Tab " + (i + 1))
+                        .setTabListener(tabListener));
+    }
+}
+</pre>
+
+<p>How you handle the {@link android.app.ActionBar.TabListener} callbacks to change tabs
+depends on how you've constructed your content. But if you're using fragments for each tab with
+{@link android.support.v4.view.ViewPager} as shown above, the following
+section shows how to switch between pages when the user selects a tab and also update the selected
+tab when the user swipes between pages.</p>
+
+
+<h2 id="swipe-tabs">Change Tabs with Swipe Views</h2>
+
+<p>To switch between pages in a {@link android.support.v4.view.ViewPager} when the user selects
+a tab, implement your {@link android.app.ActionBar.TabListener} to select the appropriate page
+by calling {@link android.support.v4.view.ViewPager#setCurrentItem setCurrentItem()} on your
+{@link android.support.v4.view.ViewPager}:</p>
+
+<pre>
+{@literal @}Override
+public void onCreate(Bundle savedInstanceState) {
+    ...
+
+    // Create a tab listener that is called when the user changes tabs.
+    ActionBar.TabListener tabListener = new ActionBar.TabListener() {
+        public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
+            // When the tab is selected, switch to the
+            // corresponding page in the ViewPager.
+            mViewPager.setCurrentItem(tab.getPosition());
+        }
+        ...
+    };
+}
+</pre>
+
+<p>Likewise, you should select the corresponding tab when the user swipes between pages with a
+touch gesture. You can set up this behavior by implementing the
+{@link android.support.v4.view.ViewPager.OnPageChangeListener} interface to change
+the current tab each time the page changes. For example:</p>
+
+<pre>
+{@literal @}Override
+public void onCreate(Bundle savedInstanceState) {
+    ...
+
+    mViewPager = (ViewPager) findViewById(R.id.pager);
+    mViewPager.setOnPageChangeListener(
+            new ViewPager.SimpleOnPageChangeListener() {
+                {@literal @}Override
+                public void onPageSelected(int position) {
+                    // When swiping between pages, select the
+                    // corresponding tab.
+                    getActionBar().setSelectedNavigationItem(position);
+                }
+            });
+    ...
+}
+</pre>
+
+
+
+<h2 id="PagerTitleStrip">Use a Title Strip Instead of Tabs</h2>
+
+<p>If you don't want to include action bar tabs and prefer to provide
+<a href="{@docRoot}design/building-blocks/tabs.html#scrollable">scrollable tabs</a> for a shorter
+visual profile, you can use {@link android.support.v4.view.PagerTitleStrip} with
+your swipe views.</p>
+
+<p>Below is an example layout XML file for an
+activity whose entire contents are a {@link android.support.v4.view.ViewPager} and a top-aligned
+{@link android.support.v4.view.PagerTitleStrip} inside it. Individual pages (provided by the
+adapter) occupy the remaining space inside the {@link android.support.v4.view.ViewPager}.</p>
 
 <pre>
 &lt;android.support.v4.view.ViewPager
@@ -215,42 +299,3 @@
 
 &lt;/android.support.v4.view.ViewPager&gt;
 </pre>
-
-<h2 id="swipe-tabs">Implement Swiping Between Tabs</h2>
-
-<p>One of the key design recommendations in Android 4.0 for tabs is to <a href="{@docRoot}design/patterns/swipe-views.html">allow swiping</a> between them where appropriate. This behavior enables users to swipe horizontally across the selected tab's contents to navigate to adjacent tabs, without needed to directly interact with the tabs themselves. To implement this, you can use a {@link android.support.v4.view.ViewPager} in conjunction with the {@link android.app.ActionBar} tabs API.</p>
-
-<p>Upon observing the current page changing, select the corresponding tab. You can set up this behavior using an {@link android.support.v4.view.ViewPager.OnPageChangeListener} in your activity's {@link android.app.Activity#onCreate onCreate()} method:</p>
-
-<pre>
-{@literal @}Override
-public void onCreate(Bundle savedInstanceState) {
-    ...
-    mViewPager.setOnPageChangeListener(
-            new ViewPager.SimpleOnPageChangeListener() {
-                {@literal @}Override
-                public void onPageSelected(int position) {
-                    // When swiping between pages, select the
-                    // corresponding tab.
-                    getActionBar().setSelectedNavigationItem(position);
-                }
-            });
-    ...
-}
-</pre>
-
-<p>And upon selecting a tab, switch to the corresponding page in the {@link android.support.v4.view.ViewPager}. To do this, add an {@link android.app.ActionBar.TabListener} to your tab when creating it using the {@link android.app.ActionBar#newTab newTab()} method:</p>
-
-<pre>
-actionBar.newTab()
-        ...
-        .setTabListener(new ActionBar.TabListener() {
-            public void onTabSelected(ActionBar.Tab tab,
-                    FragmentTransaction ft) {
-                // When the tab is selected, switch to the
-                // corresponding page in the ViewPager.
-                mViewPager.setCurrentItem(tab.getPosition());
-            }
-            ...
-        }));
-</pre>
diff --git a/docs/html/training/implementing-navigation/nav-drawer.jd b/docs/html/training/implementing-navigation/nav-drawer.jd
new file mode 100644
index 0000000..38b73454
--- /dev/null
+++ b/docs/html/training/implementing-navigation/nav-drawer.jd
@@ -0,0 +1,384 @@
+page.title=Creating a Navigation Drawer
+page.tags="DrawerLayout", "navigation"
+
+trainingnavtop=true
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>This lesson teaches you to:</h2>
+<ol>
+  <li><a href="#DrawerLayout">Create a Drawer Layout</a></li>
+  <li><a href="#Init">Initialize the Drawer List</a></li>
+  <li><a href="#ListItemClicks">Handle Navigation Click Events</a></li>
+  <li><a href="#OpenClose">Listen for Open and Close Events</a></li>
+  <li><a href="#ActionBarIcon">Open and Close with the App Icon</a></li>
+</ol>
+
+<h2>Try it out</h2>
+
+<div class="download-box">
+<a href="http://developer.android.com/shareables/training/NavigationDrawer.zip"
+  class="button">Download the sample app</a>
+<p class="filename">NavigationDrawer.zip</p>
+</div>
+
+<div class="download-box">
+<a href="http://developer.android.com/downloads/design/Android_Navigation_Drawer_Icon_20130516.zip"
+  class="button">Download the nav drawer icons</a>
+<p class="filename">Android_Navigation_Drawer_Icon_20130516.zip</p>
+</div>
+
+</div>
+</div>
+
+
+
+<p>The navigation drawer is a panel that displays the app’s main navigation options
+on the left edge of the screen. It is hidden most of the time, but is revealed
+when the user swipes a finger from the left edge of the screen or, while at the top level of the
+app, the user touches the app icon in the action bar.</p>
+
+<p>This lesson describes how to implement a navigation drawer using the
+{@link android.support.v4.widget.DrawerLayout} APIs available in the
+<a href="{@docRoot}tools/extras/support-library.html">Support Library</a>.</p>
+
+<div class="note design">
+<p><strong>Navigation Drawer Design</strong></p>
+<p>Before you decide to use a navigation drawer in your app, you should understand the use
+cases and design principles defined in the
+<a href="{@docRoot}design/patterns/navigation-drawer.html">Navigation Drawer</a> design guide.</p>
+</div>
+
+
+<h2 id="DrawerLayout">Create a Drawer Layout</h2>
+
+<p>To add a navigation drawer, declare your user interface with a
+{@link android.support.v4.widget.DrawerLayout} object as the root view of your layout.
+Inside the {@link android.support.v4.widget.DrawerLayout}, add one view that contains
+the main content for the screen (your primary layout when the drawer is hidden) and another view
+that contains the contents of the navigation drawer.</p>
+
+<p>For example, the following layout uses a {@link
+android.support.v4.widget.DrawerLayout} with two child views: a {@link android.widget.FrameLayout}
+to contain the main content (populated by a {@link android.app.Fragment} at
+runtime), and a {@link android.widget.ListView} for the navigation drawer.</p>
+
+<pre>
+&lt;android.support.v4.widget.DrawerLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/drawer_layout"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    &lt;!-- The main content view -->
+    &lt;FrameLayout
+        android:id="@+id/content_frame"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+    &lt;!-- The navigation drawer -->
+    &lt;ListView android:id="@+id/left_drawer"
+        android:layout_width="240dp"
+        android:layout_height="match_parent"
+        android:layout_gravity="start"
+        android:choiceMode="singleChoice"
+        android:divider="&#64;android:color/transparent"
+        android:dividerHeight="0dp"
+        android:background="#111"/>
+&lt;/android.support.v4.widget.DrawerLayout>
+</pre>
+
+<p>This layout demonstrates some important layout characteristics:</p>
+<ul>
+  <li>The main content view (the {@link android.widget.FrameLayout} above)
+  <strong>must be the first child</strong> in the {@link
+  android.support.v4.widget.DrawerLayout} because the XML order implies z-ordering
+  and the drawer must be on top of the content.</li>
+  <li>The main content view is set to match the parent
+  view's width and height, because it represents the entire UI when the
+  navigation drawer is hidden.</li>
+  <li>The drawer view (the {@link android.widget.ListView}) <strong>must specify its horizontal
+  gravity</strong> with the {@code android:layout_gravity} attribute. To
+  support right-to-left (RTL) languages, specify the value with {@code "start"}
+  instead of {@code "left"} (so the drawer appears on the right when the layout is RTL).</p>
+  </li>
+  <li>The drawer view specifies its width in {@code dp} units and the height matches the parent
+  view. The drawer width should be no more than 320dp so the user can always
+  see a portion of the main content.</li>
+</ul>
+
+
+
+<h2 id="Init">Initialize the Drawer List</h2>
+
+<p>In your activity, one of the first things to do is initialize
+the navigation drawer's list of items. How you do so depends on the content of your app, but
+a navigation drawer often consists of a {@link android.widget.ListView}, so the list
+should be populated by an {@link android.widget.Adapter} (such as {@link
+android.widget.ArrayAdapter} or {@link android.widget.SimpleCursorAdapter}).</p>
+
+<p>For example, here's how you can initialize the navigation list with a
+<a href="{@docRoot}guide/topics/resources/string-resource.html#StringArray">string array</a>:</p>
+
+<pre>
+public class MainActivity extends Activity {
+    private String[] mPlanetTitles;
+    private DrawerLayout mDrawerLayout;
+    private ListView mDrawerList;
+    ...
+
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+
+        mPlanetTitles = getResources().getStringArray(R.array.planets_array);
+        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
+        mDrawerList = (ListView) findViewById(R.id.left_drawer);
+
+        // Set the adapter for the list view
+        mDrawerList.setAdapter(new ArrayAdapter&lt;String>(this,
+                R.layout.drawer_list_item, mPlanetTitles));
+        // Set the list's click listener
+        mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
+
+        ...
+    }
+}
+</pre>
+
+<p>This code also calls {@link android.widget.ListView#setOnItemClickListener
+setOnItemClickListener()} to receive click events in the navigation drawer's list.
+The next section shows how to implement this interface
+and change the content view when the user selects an item.</p>
+
+
+
+<h2 id="ListItemClicks">Handle Navigation Click Events</h2>
+
+<p>When the user selects an item in the drawer's list, the system calls {@link
+android.widget.AdapterView.OnItemClickListener#onItemClick onItemClick()} on the
+{@link android.widget.AdapterView.OnItemClickListener OnItemClickListener} given to
+{@link android.widget.ListView#setOnItemClickListener setOnItemClickListener()}.</p>
+
+<p>What you do in the {@link
+android.widget.AdapterView.OnItemClickListener#onItemClick onItemClick()} method
+depends on how you've implemented your <a
+href="{@docRoot}design/patterns/app-structure.html">app structure</a>. In the following example,
+selecting each item in the list inserts a different {@link
+android.app.Fragment} into the main content view (the
+{@link android.widget.FrameLayout} element identified by the {@code R.id.content_frame} ID):</p>
+
+<pre>
+private class DrawerItemClickListener implements ListView.OnItemClickListener {
+    &#64;Override
+    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+        selectItem(position);
+    }
+}
+
+/** Swaps fragments in the main content view */
+private void selectItem(int position) {
+    // Create a new fragment and specify the planet to show based on position
+    Fragment fragment = new PlanetFragment();
+    Bundle args = new Bundle();
+    args.putInt(PlanetFragment.ARG_PLANET_NUMBER, position);
+    fragment.setArguments(args);
+
+    // Insert the fragment by replacing any existing fragment
+    FragmentManager fragmentManager = getFragmentManager();
+    fragmentManager.beginTransaction()
+                   .replace(R.id.content_frame, fragment)
+                   .commit();
+
+    // Highlight the selected item, update the title, and close the drawer
+    mDrawerList.setItemChecked(position, true);
+    setTitle(mPlanetTitles[position]);
+    mDrawerLayout.closeDrawer(mDrawerList);
+}
+
+&#64;Override
+public void setTitle(CharSequence title) {
+    mTitle = title;
+    getActionBar().setTitle(mTitle);
+}
+
+</pre>
+
+
+
+
+<h2 id="OpenClose">Listen for Open and Close Events</h2>
+
+<p>To listen for drawer open and close events, call {@link
+android.support.v4.widget.DrawerLayout#setDrawerListener setDrawerListener()} on your
+{@link android.support.v4.widget.DrawerLayout} and pass it an implementation of
+{@link android.support.v4.widget.DrawerLayout.DrawerListener}. This interface provides callbacks
+for drawer events such as {@link
+android.support.v4.widget.DrawerLayout.DrawerListener#onDrawerOpened onDrawerOpened()} and {@link
+android.support.v4.widget.DrawerLayout.DrawerListener#onDrawerClosed onDrawerClosed()}.</p>
+
+<p>However, rather than implementing the {@link
+android.support.v4.widget.DrawerLayout.DrawerListener}, if your activity includes the
+<a href="{@docRoot}guide/topics/ui/actionbar.html">action bar</a>, you can instead
+extend the {@link android.support.v4.app.ActionBarDrawerToggle} class. The
+{@link android.support.v4.app.ActionBarDrawerToggle} implements
+{@link android.support.v4.widget.DrawerLayout.DrawerListener} so you can still override those
+callbacks, but it also facilitates the proper
+interaction behavior between the action bar icon and the navigation drawer (discussed further in
+the next section).</p>
+
+<p>As discussed in the <a href="{@docRoot}design/patterns/navigation-drawer.html">Navigation
+Drawer</a> design guide, you should modify the contents of the action bar
+when the drawer is visible, such as to change the title and remove action items that are
+contextual to the main content. The following code shows how you can do so by overriding {@link
+android.support.v4.widget.DrawerLayout.DrawerListener} callback methods with an instance
+of the {@link android.support.v4.app.ActionBarDrawerToggle} class:</p>
+
+<pre>
+public class MainActivity extends Activity {
+    private DrawerLayout mDrawerLayout;
+    private ActionBarDrawerToggle mDrawerToggle;
+    private CharSequence mDrawerTitle;
+    private CharSequence mTitle;
+    ...
+
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+        ...
+
+        mTitle = mDrawerTitle = getTitle();
+        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
+        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
+                R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {
+
+            /** Called when a drawer has settled in a completely closed state. */
+            public void onDrawerClosed(View view) {
+                getActionBar().setTitle(mTitle);
+                invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
+            }
+
+            /** Called when a drawer has settled in a completely open state. */
+            public void onDrawerOpened(View drawerView) {
+                getActionBar().setTitle(mDrawerTitle);
+                invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
+            }
+        };
+
+        // Set the drawer toggle as the DrawerListener
+        mDrawerLayout.setDrawerListener(mDrawerToggle);
+    }
+
+    /* Called whenever we call invalidateOptionsMenu() */
+    &#64;Override
+    public boolean onPrepareOptionsMenu(Menu menu) {
+        // If the nav drawer is open, hide action items related to the content view
+        boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
+        menu.findItem(R.id.action_websearch).setVisible(!drawerOpen);
+        return super.onPrepareOptionsMenu(menu);
+    }
+}
+</pre>
+
+<p>The next section describes the {@link android.support.v4.app.ActionBarDrawerToggle} constructor
+arguments and the other steps required to set it up to handle interaction with the
+action bar icon.</p>
+
+
+
+<h2 id="ActionBarIcon">Open and Close with the App Icon</h2>
+
+<p>Users can open and close the navigation drawer with a swipe gesture from or towards the left
+edge of the screen, but if you're using the <a
+href="{@docRoot}guide/topics/ui/actionbar.html">action bar</a>, you should also allow users to
+open and close it by touching the app icon. And the app icon should also indicate the presence of
+the navigation drawer with a special icon. You can implement all this behavior by using the
+{@link android.support.v4.app.ActionBarDrawerToggle} shown in the previous section.</p>
+
+<p>To make {@link android.support.v4.app.ActionBarDrawerToggle} work, create an instance of
+it with its constructor, which requires the following arguments:</p>
+<ul>
+  <li>The {@link android.app.Activity} hosting the drawer.
+  <li>The {@link android.support.v4.widget.DrawerLayout}.
+  <li>A drawable resource to use as the drawer indicator.
+   <p><a href="http://developer.android.com/downloads/design/Android_Navigation_Drawer_Icon_20130516.zip"
+>Download the standard navigation icons</a> (available for both dark and light themes).</p>
+  <li>A String resource to describe the "open drawer" action (for accessibility).
+  <li>A String resource to describe the "close drawer" action (for accessibility).
+</ul>
+
+<p>Then, whether or not you've created a subclass of
+{@link android.support.v4.app.ActionBarDrawerToggle} as your drawer listener, you need to call
+upon your {@link android.support.v4.app.ActionBarDrawerToggle} in a few places throughout your
+activity lifecycle:</p>
+
+<pre>
+public class MainActivity extends Activity {
+    private DrawerLayout mDrawerLayout;
+    private ActionBarDrawerToggle mDrawerToggle;
+    ...
+
+    public void onCreate(Bundle savedInstanceState) {
+        ...
+
+        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
+        mDrawerToggle = new ActionBarDrawerToggle(
+                this,                  /* host Activity */
+                mDrawerLayout,         /* DrawerLayout object */
+                R.drawable.ic_drawer,  /* nav drawer icon to replace 'Up' caret */
+                R.string.drawer_open,  /* "open drawer" description */
+                R.string.drawer_close  /* "close drawer" description */
+                ) {
+
+            /** Called when a drawer has settled in a completely closed state. */
+            public void onDrawerClosed(View view) {
+                getActionBar().setTitle(mTitle);
+            }
+
+            /** Called when a drawer has settled in a completely open state. */
+            public void onDrawerOpened(View drawerView) {
+                getActionBar().setTitle(mDrawerTitle);
+            }
+        };
+
+        // Set the drawer toggle as the DrawerListener
+        mDrawerLayout.setDrawerListener(mDrawerToggle);
+
+        getActionBar().setDisplayHomeAsUpEnabled(true);
+        getActionBar().setHomeButtonEnabled(true);
+    }
+
+    &#64;Override
+    protected void onPostCreate(Bundle savedInstanceState) {
+        super.onPostCreate(savedInstanceState);
+        // Sync the toggle state after onRestoreInstanceState has occurred.
+        mDrawerToggle.syncState();
+    }
+
+    &#64;Override
+    public void onConfigurationChanged(Configuration newConfig) {
+        super.onConfigurationChanged(newConfig);
+        mDrawerToggle.onConfigurationChanged(newConfig);
+    }
+
+    &#64;Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        // Pass the event to ActionBarDrawerToggle, if it returns
+        // true, then it has handled the app icon touch event
+        if (mDrawerToggle.onOptionsItemSelected(item)) {
+          return true;
+        }
+        // Handle your other action bar items...
+
+        return super.onOptionsItemSelected(item);
+    }
+
+    ...
+}
+</pre>
+
+<p>For a complete example of a navigation drawer, download the sample available at the
+<a href="#top">top of the page</a>.</p>
diff --git a/docs/html/training/implementing-navigation/temporal.jd b/docs/html/training/implementing-navigation/temporal.jd
index 1c41732..0719ba6 100644
--- a/docs/html/training/implementing-navigation/temporal.jd
+++ b/docs/html/training/implementing-navigation/temporal.jd
@@ -1,12 +1,7 @@
-page.title=Implementing Temporal Navigation
-parent.title=Implementing Effective Navigation
-parent.link=index.html
+page.title=Providing Proper Back Navigation
+page.tags="back navigation","NavUtils","TaskStackBuilder"
 
 trainingnavtop=true
-previous.title=Implementing Ancestral Navigation
-previous.link=ancestral.html
-next.title=Implementing Descendant Navigation
-next.link=descendant.html
 
 @jd:body
 
@@ -15,8 +10,9 @@
 
 <h2>This lesson teaches you to:</h2>
 <ol>
-  <li><a href="#back-fragments">Implement <em>Back</em> Navigation with Fragments</a></li>
-  <li><a href="#back-webviews">Implement <em>Back</em> Navigation with WebViews</a></li>
+  <li><a href="#SynthesizeBackStack">Synthesize a new Back Stack for Deep Links</a></li>
+  <li><a href="#back-fragments">Implement Back Navigation for Fragments</a></li>
+  <li><a href="#back-webviews">Implement Back Navigation for WebViews</a></li>
 </ol>
 
 <h2>You should also read</h2>
@@ -30,32 +26,191 @@
 </div>
 
 
-<p><em>Temporal navigation</em> is navigation to previously visited screens. Users can visit previous screens by pressing the device <em>Back</em> button. This user interface pattern is described further in <a href="{@docRoot}training/design-navigation/ancestral-temporal.html">Providing Ancestral and Temporal Navigation</a> in <em>Designing Effective Navigation</em> and in <a href="{@docRoot}design/patterns/navigation.html">Android Design: Navigation</a>.</p>
+<p><em>Back</em> navigation is how users move backward through the history of screens
+they previously visited. All Android devices provide a <em>Back</em> button for this
+type of navigation, so <strong>your app should not add a Back button to the UI</strong>.</p>
 
-<p>Android handles basic <em>Back</em> navigation for you (see <a href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks and Back Stack</a> for details on this behavior). This lesson discusses a number of cases where applications should provide specialized logic for the <em>Back</em> button.</p>
+<p>In almost all situations, the system maintains a back stack of activities while the user
+navigates your application. This allows the system to properly navigate backward when the user
+presses the <em>Back</em> button. However, there are a few cases in which your app should manually
+specify the <em>Back</em> behavior in order to provide the best user experience.</p>
+
+<div class="note design">
+<p><strong>Back Navigation Design</strong></p>
+<p>Before continuing with this document, you should understand the
+concepts and principles for <em>Back</em> navigation as described in
+the <a href="{@docRoot}design/patterns/navigation.html">Navigation</a> design
+guide.</p>
+</div>
+
+<p>Navigation patterns that require you to manually specify the <em>Back</em> behavior include:</p>
+<ul>
+  <li>When the user enters a deep-level activity directly from a <a
+    href="{@docRoot}guide/topics/ui/notifiers/notifications.html">notification</a>, an <a
+    href="{@docRoot}guide/topics/appwidgets/index.html">app widget</a>, or the <a
+    href="{@docRoot}training/implementing-navigation/nav-drawer.html">navigation drawer</a>.</li>
+  <li>Certain cases in which the user navigates between <a
+    href="{@docRoot}guide/components/fragments.html">fragments</a>.</li>
+  <li>When the user navigates web pages in a {@link android.webkit.WebView}.</li>
+</ul>
+
+<p>How to implement proper <em>Back</em> navigation in these situations is described
+in the following sections.</p>
 
 
-<h2 id="back-fragments">Implement <em>Back</em> Navigation with Fragments</h2>
 
-<p>When using fragments in your application, individual {@link android.app.FragmentTransaction} objects can represent context changes that should be added to the back stack. For example, if you are implementing a <a href="descendant.html#master-detail">master/detail flow</a> on a handset by swapping out fragments (thus emulating a {@link android.app.Activity#startActivity startActivity()} call), you should ensure that pressing the <em>Back</em> button on a detail screen returns the user to the master screen. To do so, you can use {@link android.app.FragmentTransaction#addToBackStack addToBackStack()}:</p>
+<h2 id="SynthesizeBackStack">Synthesize a new Back Stack for Deep Links</h2>
+
+<p>Ordinarily, the system incrementally builds the back stack as the user navigates from one
+activity to the next. However, when the user enters your app with a <em>deep link</em> that
+starts the activity in its own task, it's necessary for you to synthesize a new
+back stack because the activity is running in a new task without any back stack at all.</p>
+
+<p>For example, when a notification takes the user to an activity deep in your app hierarchy,
+you should add activities into your task's back stack so that pressing <em>Back</em> navigates
+up the app hierarchy instead of exiting the app. This pattern is described further in the
+<a href="{@docRoot}design/patterns/navigation.html#into-your-app"
+>Navigation</a> design guide.</p>
+
+
+<h3 id="SpecifyParent">Specify parent activities in the manifest</h3>
+
+<p>Beginning in Android 4.1 (API level 16), you can declare the logical parent of each
+activity by specifying the <a
+href="{@docRoot}guide/topics/manifest/activity-element.html#parent">{@code
+android:parentActivityName}</a> attribute
+in the <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity>}</a> element. This allows the system to facilitate navigation patterns
+because it can determine the logical <em>Back</em> or <em>Up</em> navigation path with this
+information.</p>
+
+<p>If your app supports Android 4.0 and lower, include the
+<a href="{@docRoot}tools/extras/support-library.html">Support Library</a> with your app and
+add a <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">{@code &lt;meta-data>}</a>
+element inside the <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity>}</a>. Then specify the parent activity as the value
+for {@code android.support.PARENT_ACTIVITY}, matching the <a
+href="{@docRoot}guide/topics/manifest/activity-element.html#parent">{@code
+android:parentActivityName}</a> attribute.</p>
+
+<p>For example:</p>
+
+<pre>
+&lt;application ... >
+    ...
+    &lt;!-- The main/home activity (it has no parent activity) -->
+    &lt;activity
+        android:name="com.example.myfirstapp.MainActivity" ...>
+        ...
+    &lt;/activity>
+    &lt;!-- A child of the main activity -->
+    &lt;activity
+        android:name="com.example.myfirstapp.DisplayMessageActivity"
+        android:label="&#64;string/title_activity_display_message"
+        android:parentActivityName="com.example.myfirstapp.MainActivity" >
+        &lt;!-- The meta-data element is needed for versions lower than 4.1 -->
+        &lt;meta-data
+            android:name="android.support.PARENT_ACTIVITY"
+            android:value="com.example.myfirstapp.MainActivity" />
+    &lt;/activity>
+&lt;/application>
+</pre>
+
+<p>With the parent activity declared this way, you can use the
+{@link android.support.v4.app.NavUtils} APIs to synthesize a new back stack by identifying which
+activity is the appropriate parent for each activity.</p>
+
+
+
+<h3 id="CreateBackStack">Create back stack when starting the activity</h3>
+
+<p>Adding activities to the back stack begins upon the event that takes the user into your app.
+That is, instead of calling {@link android.content.Context#startActivity startActivity()}, use the
+{@link android.support.v4.app.TaskStackBuilder} APIs to define each activity that should
+be placed into a new back stack. Then begin the target activity by calling {@link
+android.support.v4.app.TaskStackBuilder#startActivities startActivities()}, or create the
+appropriate {@link android.app.PendingIntent} by calling {@link
+android.support.v4.app.TaskStackBuilder#getPendingIntent getPendingIntent()}.</p>
+
+<p>For example, when a notification takes the user to an activity deep in your app hierarchy,
+you can use this code to create a {@link android.app.PendingIntent}
+that starts an activity and inserts a new back stack into the target task:</p>
+
+<pre>
+// Intent for the activity to open when user selects the notification
+Intent detailsIntent = new Intent(this, DetailsActivity.class);
+
+// Use TaskStackBuilder to build the back stack and get the PendingIntent
+PendingIntent pendingIntent =
+        TaskStackBuilder.create(this)
+                        // add all of DetailsActivity's parents to the stack,
+                        // followed by DetailsActivity itself
+                        .addNextIntentWithParentStack(upIntent)
+                        .getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
+
+NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
+builder.setContentIntent(pendingIntent);
+...
+</pre>
+
+<p>The resulting {@link android.app.PendingIntent} specifies not only the activity to
+start (as defined by {@code detailsIntent}), but also the back stack that should be inserted
+into the task (all parents of the {@code DetailsActivity} defined by {@code detailsIntent}).
+So when the {@code DetailsActivity} starts, pressing <em>Back</em>
+navigates backward through each of the {@code DetailsActivity} class's parent activities.</p>
+
+<p class="note"><strong>Note:</strong> In order for the {@link
+android.support.v4.app.TaskStackBuilder#addNextIntentWithParentStack addNextIntentWithParentStack()}
+method to work,
+you must declare the logical parent of each activity in your manifest file, using the
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#parent">{@code
+android:parentActivityName}</a> attribute (and corresponding <a
+href="{@docRoot}guide/topics/manifest/meta-data-element.html">{@code &lt;meta-data>}</a> element)
+as described above.</p>
+
+
+
+
+
+<h2 id="back-fragments">Implement Back Navigation for Fragments</h2>
+
+<p>When using fragments in your app, individual {@link android.app.FragmentTransaction}
+objects may represent context changes that should be added to the back stack. For example, if you
+are implementing a <a href="descendant.html#master-detail">master/detail flow</a> on a handset by
+swapping out fragments, you should ensure that pressing the <em>Back</em> button on a detail
+screen returns the user to the master screen. To do so, call {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()} before you commit
+the transaction:</p>
 
 <pre>
 // Works with either the framework FragmentManager or the
 // support package FragmentManager (getSupportFragmentManager).
-getFragmentManager().beginTransaction()
-        .add(detailFragment, "detail")
-
-        // Add this transaction to the back stack and commit.
-        .addToBackStack()
-        .commit();
+getSupportFragmentManager().beginTransaction()
+                           .add(detailFragment, "detail")
+                           // Add this transaction to the back stack
+                           .addToBackStack()
+                           .commit();
 </pre>
 
-<p>The activity's {@link android.app.FragmentManager} handles <em>Back</em> button presses if there are {@link android.app.FragmentTransaction} objects on the back stack. When this happens, the {@link android.app.FragmentManager} pops the most recent transaction off the back stack and performs the reverse action (e.g., removing a fragment if the transaction added it).</p>
+<p>When there are {@link android.app.FragmentTransaction} objects on the back stack and the user
+presses the <em>Back</em> button,
+the {@link android.app.FragmentManager} pops the most recent transaction off the back stack and
+performs the reverse action (such as removing a fragment if the transaction added it).</p>
 
-<p>If your application updates other user interface elements to reflect the current state of your fragments, such as the action bar, remember to update the UI when you commit the transaction. You should update your user interface after the fragment manager back stack changes in addition to when you commit the transaction. You can listen for when a <code>FragmentTransaction</code> is reverted by setting up an {@link android.app.FragmentManager.OnBackStackChangedListener}:</p>
+<p class="note"><strong>Note:</strong> You <strong>should not add transactions to the back
+stack</strong> when the transaction is for horizontal navigation (such as when switching tabs)
+or when modifying the content appearance (such as when adjusting filters). For more information,
+about when <em>Back</em> navigation is appropriate,
+see the <a href="{@docRoot}design/patterns/navigation.html">Navigation</a> design guide.</p>
+
+<p>If your application updates other user interface elements to reflect the current state of your
+fragments, such as the action bar, remember to update the UI when you commit the transaction. You
+should update your user interface after the back stack changes in addition to
+when you commit the transaction. You can listen for when a {@link android.app.FragmentTransaction}
+is reverted by setting up an {@link android.app.FragmentManager.OnBackStackChangedListener}:</p>
 
 <pre>
-getFragmentManager().addOnBackStackChangedListener(
+getSupportFragmentManager().addOnBackStackChangedListener(
         new FragmentManager.OnBackStackChangedListener() {
             public void onBackStackChanged() {
                 // Update your UI here.
@@ -63,9 +218,14 @@
         });
 </pre>
 
-<h2 id="back-webviews">Implement <em>Back</em> Navigation with WebViews</h2>
 
-<p>If a part of your application is contained in a {@link android.webkit.WebView}, it may be appropriate for <em>Back</em> to traverse browser history. To do so, you can override {@link android.app.Activity#onBackPressed onBackPressed()} and proxy to the <code>WebView</code> if it has history state:</p>
+
+<h2 id="back-webviews">Implement Back Navigation for WebViews</h2>
+
+<p>If a part of your application is contained in a {@link android.webkit.WebView}, it may be
+appropriate for <em>Back</em> to traverse browser history. To do so, you can override {@link
+android.app.Activity#onBackPressed onBackPressed()} and proxy to the
+{@link android.webkit.WebView} if it has history state:</p>
 
 <pre>
 {@literal @}Override
@@ -80,4 +240,9 @@
 }
 </pre>
 
-<p>Be careful when using this mechanism with highly dynamic web pages that can grow a large history. Pages that generate an extensive history, such as those that make frequent changes to the document hash, may make it tedious for users to get out of your activity.</p>
+<p>Be careful when using this mechanism with highly dynamic web pages that can grow a large
+history. Pages that generate an extensive history, such as those that make frequent changes to
+the document hash, may make it tedious for users to get out of your activity.</p>
+
+<p>For more information about using {@link android.webkit.WebView}, read <a
+href="{@docRoot}guide/webapps/webview.html">Building Web Apps in WebView</a>.
diff --git a/docs/html/training/index.jd b/docs/html/training/index.jd
index 72ad018..82fbd16 100644
--- a/docs/html/training/index.jd
+++ b/docs/html/training/index.jd
@@ -3,7 +3,14 @@
 page.metaDescription=Android Training provides a collection of classes that aim to help you build great apps for Android. Each class explains the steps required to solve a problem or implement a feature using code snippets and sample code for you to use in your apps.
 
 @jd:body
-
+<div id="butterbar-wrapper" >
+  <div id="butterbar" >
+    <div id="butterbar-message">
+<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/1EHLPGqhbxj2HungHRRN4_0K9TGpc-Izy-u46vBDgS8Q/viewform">
+      Take the Android Developer Survey</a>
+    </div>
+  </div>
+</div>
 
 <p>Welcome to Training for Android developers. Here you'll find sets of lessons within classes
 that describe how to accomplish a specific task with code samples you can re-use in your app.
diff --git a/docs/html/training/multiple-threads/threadsample.zip b/docs/html/training/multiple-threads/threadsample.zip
deleted file mode 100644
index bdc3ccf..0000000
--- a/docs/html/training/multiple-threads/threadsample.zip
+++ /dev/null
Binary files differ
diff --git a/docs/html/training/training_toc.cs b/docs/html/training/training_toc.cs
index 22bba1c..cb57752 100644
--- a/docs/html/training/training_toc.cs
+++ b/docs/html/training/training_toc.cs
@@ -660,20 +660,25 @@
         <div class="nav-section-header">
           <a href="<?cs var:toroot ?>training/implementing-navigation/index.html"
              description=
-             "How to implement various navigation patterns such as swipe views and up navigation."
+             "How to implement various navigation patterns such as swipe views,
+             a navigation drawer, and up navigation."
             >Implementing Effective Navigation</a>
         </div>
         <ul>
           <li><a href="<?cs var:toroot ?>training/implementing-navigation/lateral.html">
-            Implementing Lateral Navigation
+            Creating Swipe Views with Tabs
+          </a>
+          </li>
+          <li><a href="<?cs var:toroot ?>training/implementing-navigation/nav-drawer.html">
+            Creating a Navigation Drawer
           </a>
           </li>
           <li><a href="<?cs var:toroot ?>training/implementing-navigation/ancestral.html">
-            Implementing Ancestral Navigation
+            Providing Up Navigation
           </a>
           </li>
           <li><a href="<?cs var:toroot ?>training/implementing-navigation/temporal.html">
-            Implementing Temporal Navigation
+            Providing Proper Back Navigation
           </a>
           </li>
           <li><a href="<?cs var:toroot ?>training/implementing-navigation/descendant.html">
diff --git a/services/java/com/android/server/ServiceWatcher.java b/services/java/com/android/server/ServiceWatcher.java
index 67f926a..2e7c6d1 100644
--- a/services/java/com/android/server/ServiceWatcher.java
+++ b/services/java/com/android/server/ServiceWatcher.java
@@ -177,7 +177,7 @@
         mVersion = version;
         if (D) Log.d(mTag, "binding " + packageName + " (version " + version + ")");
         mContext.bindService(intent, this, Context.BIND_AUTO_CREATE | Context.BIND_NOT_FOREGROUND
-                | Context.BIND_NOT_VISIBLE, mCurrentUserId);
+                | Context.BIND_ALLOW_OOM_MANAGEMENT | Context.BIND_NOT_VISIBLE, mCurrentUserId);
     }
 
     public static boolean isSignatureMatch(Signature[] signatures,
