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..a147350 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
 
@@ -340,8 +355,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/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/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/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/develop/index.jd b/docs/html/develop/index.jd
index 0cb2635..e4dd2cb 100644
--- a/docs/html/develop/index.jd
+++ b/docs/html/develop/index.jd
@@ -33,19 +33,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 +108,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 +124,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 +144,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 +268,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 +318,14 @@
   'designinaction' : {
     'ids': ["PLWz5rJ2EKKc8j2B95zGMb8muZvrIy-wcF"]
   },
-  'about' : {
-    'ids': ["PL611F8C5DBF49CEC6"]
+  'bizdevbytes' : {
+    'ids': ["PLWz5rJ2EKKc8-Osr0TuHyTMEhKV0xJ6ql"]
   },
   'developersstrikeback' : {
     'ids': ["PLWz5rJ2EKKc8nhhIOieejm1PxYHmPkIPh"]
   },
   'googleio' : {
-    'ids': ["PL4C6BCDE45E05F49E"]
+    'ids': ["PLWz5rJ2EKKc9WGUwq2gQ-coU3fSyexgOx"]
   }
 };
 
@@ -333,7 +336,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 +348,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/quality/tablet.jd b/docs/html/distribute/googleplay/quality/tablet.jd
index f65cf93..03c180b 100644
--- a/docs/html/distribute/googleplay/quality/tablet.jd
+++ b/docs/html/distribute/googleplay/quality/tablet.jd
@@ -822,7 +822,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 +830,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 +844,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/google/backup/signup.jd b/docs/html/google/backup/signup.jd
index 70f7de2..550d590 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
 
 
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/index.jd b/docs/html/google/gcm/index.jd
index f9c3ed3..aeba86f 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>
   </div>
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/guide/appendix/media-formats.jd b/docs/html/guide/appendix/media-formats.jd
index feacdc6..2342087 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.tags="video","audio","mpeg","mp4","m4a","mp3","3gp","3gpp","flac","wave","wav"
 @jd:body
 
 <div id="qv-wrapper">
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/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/index.jd b/docs/html/index.jd
index c9e508e..0799802 100644
--- a/docs/html/index.jd
+++ b/docs/html/index.jd
@@ -14,17 +14,18 @@
             <ul>
                 <li class="item carousel-home">
                     <div class="content-left col-10">
-                    <a href="http://goo.gl/9lM2d">
+                    <a href="https://developers.google.com/live/android/browse">
                       <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
+                    <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="http://goo.gl/9lM2d" class="button">Tune in now</a></p>
+                    <p><a href="https://developers.google.com/live/android/browse" class="button"
+                    >See the Android talks</a></p>
                     </div>
                 </li>
                 <li class="item carousel-home">
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..0d0f348 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-20130522.zip
+sdk.linux32_bundle_bytes=439988972
+sdk.linux32_bundle_checksum=1fdd8d7537ab9217d61d32ab912f0243
 
-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-20130522.zip
+sdk.linux64_bundle_bytes=440275051
+sdk.linux64_bundle_checksum=e38751ff372a8d6208fcef5659133e98
 
-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-20130522.zip
+sdk.mac64_bundle_bytes=409047751
+sdk.mac64_bundle_checksum=3f4d05206d66e402e87b27a6b3dcf0f9
 
-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-20130522.zip
+sdk.win32_bundle_bytes=446736316
+sdk.win32_bundle_checksum=53345fa4121fa58cc048f66c3af3bae9
 
-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-20130522.zip
+sdk.win64_bundle_bytes=446864400
+sdk.win64_bundle_checksum=b28817f62e7f54e3c683841b61b65564
 
 
 
-sdk.linux_download=android-sdk_r22-linux.tgz
-sdk.linux_bytes=99643077
-sdk.linux_checksum=30fb75bad918c5c3d79f8ec3cc44b3cf
+sdk.linux_download=android-sdk_r22.0.1-linux.tgz
+sdk.linux_bytes=105617062
+sdk.linux_checksum=56ed27d456b4f0e0d3090b24f9b06757
 
-sdk.mac_download=android-sdk_r22-macosx.zip
-sdk.mac_bytes=71244523
-sdk.mac_checksum=fa5193ad41edecac6960023f55569ba3
+sdk.mac_download=android-sdk_r22.0.1-macosx.zip
+sdk.mac_bytes=77206237
+sdk.mac_checksum=5c20497d7f7b9d28ee30e57cbf769c8c
 
-sdk.win_download=android-sdk_r22-windows.zip
-sdk.win_bytes=107505668
-sdk.win_checksum=71722fe052ae6380444a21bce8ee87c2
+sdk.win_download=android-sdk_r22.0.1-windows.zip
+sdk.win_bytes=113483496
+sdk.win_checksum=cb7f7703450afa5914fb4b8b8332a9f3
 
-sdk.win_installer=installer_r22-windows.exe
-sdk.win_installer_bytes=87498295
-sdk.win_installer_checksum=e0cc167733bf8b51dbc7e0ad0a8c8d4b
+sdk.win_installer=installer_r22.0.1-windows.exe
+sdk.win_installer_bytes=93479015
+sdk.win_installer_checksum=81621d3b164f81f91e066011b325f88f
 
 
 
@@ -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..b8ab24b 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.1
+adt.zip.download=ADT-22.0.1.zip
+adt.zip.bytes=16815544
+adt.zip.checksum=64473af058fa8f02e36241ee378b3ac0
 
 @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..d988a95 100644
--- a/docs/html/sdk/installing/migrate.jd
+++ b/docs/html/sdk/installing/migrate.jd
@@ -19,8 +19,8 @@
 <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 projects remain in the same location but now contain a {@code build.gradle}
+file and are ready for Android Studio.</p>
 
 
 <h2 id="Export">Import into Android Studio</h2>
diff --git a/docs/html/sdk/installing/studio.jd b/docs/html/sdk/installing/studio.jd
index 856121a..791f675 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.687321-windows.exe">
+      android-studio-bundle-130.677228-windows.exe
       </a>
     </td>
-    <td>381763627 bytes</td>
-    <td>592129b7aee608ad706752369d99a2a1</td>
+    <td>393023485 bytes</td>
+    <td>3da987a9778b66edb68fb43d8b53bfcb</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.687321-mac.dmg">
+    android-studio-bundle-130.687321-mac.dmg
     </a>
     </td>
-    <td>371232906 bytes</td>
-    <td>16192870d1a1e99e2d96d5fa9fc3fccb</td>
+    <td>379877697 bytes</td>
+    <td>eb5ca6c77f4a119595d941daeda58810</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.687321-linux.tgz">
+    android-studio-bundle-130.687321-linux.tgz
     </a>
     </td>
-    <td>400151208 bytes</td>
-    <td>2b25f4ee51a2e076b0ede6da94508761</td>
+    <td>406516375 bytes</td>
+    <td>6796d66de07c85b2822ca8d501a043c0</td>
   </tr>
   </table>
 
@@ -289,24 +286,41 @@
 
 
 
-
-
-
-
-
 <h2 id="Installing">Installing Android Studio</h2>
 <ol>
 <li>Download the <strong>Android Studio</strong> package from above.</li>
 <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 +346,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,6 +388,24 @@
 
 
 
+<h2 id="Revisions">Revisions</h2>
+
+<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.1.1</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>
+
+
+
+
 
 
 
@@ -410,7 +445,8 @@
   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.1.1</span>"
+        + "<br/><span class='small'>for " + os + "</span>");
     $('#download-ide-button').click(function() {return onDownload(this,true);}).attr('href', bundlename);
 
   } else {
@@ -419,16 +455,18 @@
   
   
   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');
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/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/support-library.jd b/docs/html/tools/extras/support-library.jd
index 6475e3c..9cc0361 100644
--- a/docs/html/tools/extras/support-library.jd
+++ b/docs/html/tools/extras/support-library.jd
@@ -49,6 +49,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">
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/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..52647ff 100644
--- a/docs/html/tools/sdk/eclipse-adt.jd
+++ b/docs/html/tools/sdk/eclipse-adt.jd
@@ -53,10 +53,45 @@
 <p>For a summary of all known issues in ADT, see <a
 href="http://tools.android.com/knownissues">http://tools.android.com/knownissues</a>.</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=""/>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 +166,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..b58fdd1 100644
--- a/docs/html/tools/sdk/tools-notes.jd
+++ b/docs/html/tools/sdk/tools-notes.jd
@@ -29,6 +29,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=""/>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/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/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..527d570
--- /dev/null
+++ b/docs/html/training/implementing-navigation/nav-drawer.jd
@@ -0,0 +1,382 @@
+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 ListView mDrawerList;
+    ...
+
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+
+        mPlanetTitles = getResources().getStringArray(R.array.planets_array);
+        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
+    mDrawer.setItemChecked(position, true);
+    setTitle(mPlanetTitles[position]);
+    mDrawerLayout.closeDrawer(mDrawer);
+}
+
+&#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/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 ee6913c..61517e0 100644
--- a/docs/html/training/training_toc.cs
+++ b/docs/html/training/training_toc.cs
@@ -624,20 +624,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,
