diff --git a/Android.mk b/Android.mk
index 2e2fec1..49ee63d 100644
--- a/Android.mk
+++ b/Android.mk
@@ -372,7 +372,7 @@
 
 ## SDK version identifiers used in the published docs
   # major[.minor] version for current SDK. (full releases only)
-framework_docs_SDK_VERSION:=1.6
+framework_docs_SDK_VERSION:=2.0
   # release version (ie "Release x")  (full releases only)
 framework_docs_SDK_REL_ID:=1
   # name of current SDK directory (full releases only)
diff --git a/core/java/android/appwidget/AppWidgetHostView.java b/core/java/android/appwidget/AppWidgetHostView.java
index a4c141e..bb0cbe9 100644
--- a/core/java/android/appwidget/AppWidgetHostView.java
+++ b/core/java/android/appwidget/AppWidgetHostView.java
@@ -123,7 +123,8 @@
 
     @Override
     protected void dispatchRestoreInstanceState(SparseArray<Parcelable> container) {
-        final ParcelableSparseArray jail = (ParcelableSparseArray) container.get(generateId());
+        ParcelableSparseArray jail = (ParcelableSparseArray) container.get(generateId());
+        if (jail == null) jail = new ParcelableSparseArray();
         super.dispatchRestoreInstanceState(jail);
     }
 
diff --git a/docs/html/guide/developing/updating-sdk.jd b/docs/html/guide/developing/updating-sdk.jd
deleted file mode 100644
index f65eabb..0000000
--- a/docs/html/guide/developing/updating-sdk.jd
+++ /dev/null
@@ -1,108 +0,0 @@
-page.title=Updating Your SDK
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>Quickview</h2>
-<ul>
-  <li>Use the Android SDK and AVD Manager to 
-   install individual Android platforms, add-ons, tools
-   and documentation.</li>
-  <li>Keep your SDK up-to-date without having to install new
-   SDK directories and update your Eclipse preferences or {@code PATH} 
-   variable.</li>
-  <li>The Android SDK and AVD Manager is available only with the 
-   Android 1.6 SDK or later.</li>
-</ul>
-
-<h2>In this document</h2>
-<ol>
-  <li><a href="#Install">Installing SDK Packages</a></li>
-  <li><a href="#Add">Adding SDK Package Sites</a></li>
-</ol>
-</div>
-</div>
-
-<p>The <strong>Android SDK and AVD Manager</strong> lets you
-update your Android SDK without a visit to the
-Android Developers web site. Instead of downloading an entirely new SDK
-that includes Android platforms, tools, and documentation, you can instead
-install only the individual packages that you want.</p>
-
-<p>For example, when a new version of the Android platform is made available
-for developing applications, use the SDK and AVD Manager to install the
-platform into your existing SDK directory. You can then use the new platform
-in your <a href="{@docRoot}guide/developing/tools/avd.html">AVDs</a> and
-build your apps against it.</p>
-
-<p>The benefit to using this feature is that your SDK directory will
-remain the same. You don't need to reset the SDK location in
-your Eclipse preferences or modify your {@code PATH} environment variable,
-because all new packages are installed into your existing SDK directory.</p>
-
-
-<p>The SDK and AVD Manager can be opened in two ways:</p>
-<ul>
-  <li>Execute the 
-  <a href="{@docRoot}guide/developing/tools/othertools.html#android">{@code 
-  android}</a> tool with no options, or</li>
-  <li>From Eclipse, select <strong>Window</strong> > <strong>Android 
-  SDK and AVD Manager</strong>.</li>
-</ul>
-
-<p>The screenshot below shows the Android SDK and AVD Manager
-with the Available Packages open.</p>
-
-<img src="{@docRoot}images/sdk_manager_packages.png" alt="" />
-
-
-<h2 id="Install">Installing SDK Packages</h2>
-
-<p>When a new Android SDK platform, add-on, set of development tools or
-documentation becomes available, you can quickly download and
-install them into your existing Android SDK:</p>
-
-<ol>
-  <li>Select <strong>Available Packages</strong> in the left panel.
-  This will reveal all packages currently available for download.</li>
-  <li>Select the packages you'd like to install and click <strong>Install
-  Selected</strong>.</li>
-  <li>Verify and accept the packages you want and click <strong>Install
-  Accepted</strong>. The packages will now be installed into your existing
-  Android SDK directories.</li>
-</ol>
-
-<p>New platforms are automatically saved into the 
-<code><em>&lt;sdk_dir>/</em>platforms/</code> directory of your SDK;
-new add-ons are saved in the <code><em>&lt;sdk_dir>/</em>add-ons/</code>
-directory; and new documentation is saved in the existing
-<code><em>&lt;sdk_dir>/</em>docs/</code> directory (old docs are replaced).</p>
-
-<p class="note"><strong>Tip:</strong>
-Use the "Display updates only" checkbox to show only the packages
-you do not have.</p>
-
-
-<h2 id="Add">Adding SDK Package Sites</h2>
-
-<p>By default, <strong>Available Packages</strong> only shows 
-the Google repository for Android SDK packages and Google API
-add-ons. You can add additional sites that host
-Android SDK add-ons, then download add-on packages from them.</p>	
-
-<p>For example, a mobile carrier or hardware manufacturer may offer additional
-API libraries that are supported by their own Android-powered devices. 
-In order for you to develop using their libraries, you may need to install an 
-Android SDK add-on.
-If the carrier or manufacturer has hosted an add-on repository file on their
-web site, add their site to the SDK and AVD Manager:</p>
-<ol>
-  <li>Select <strong>Available Packages</strong> in the left panel.</li>
-  <li>Click <strong>Add Site</strong> and enter the URL of the 
-{@code repository.xml} file. Click <strong>OK</strong>.</li>
-</ol>
-<p>Any SDK packages available from the web site will now be listed and
-available for you to install in your existing Android SDK.</p>
-
-
diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs
index f6718e1..264fe54 100644
--- a/docs/html/guide/guide_toc.cs
+++ b/docs/html/guide/guide_toc.cs
@@ -239,7 +239,6 @@
       <li><a href="<?cs var:toroot ?>guide/developing/debug-tasks.html">
             <span class="en">Debugging Tasks</span>
           </a></li>
-      <li><a href="<?cs var:toroot ?>guide/developing/updating-sdk.html">Updating Your SDK</a></li>
       <li class="toggle-list">
         <div><a href="<?cs var:toroot ?>guide/developing/tools/index.html">
             <span class="en">Tools</span>
diff --git a/docs/html/sdk/2.0_r1/installing.jd b/docs/html/sdk/2.0_r1/installing.jd
new file mode 100644
index 0000000..fd269dc
--- /dev/null
+++ b/docs/html/sdk/2.0_r1/installing.jd
@@ -0,0 +1,389 @@
+page.title=Installing the Android 2.0 SDK
+sdk.preview=0
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+  <h2>In this document</h2>
+  <ol>
+    <li><a href="#Preparing">Prepare for Installation</a></li>
+    <li><a href="#Installing">Install the SDK</a></li>
+    <li><a href="#InstallingADT">Install the ADT Plugin for Eclipse</a></li>
+    <li><a href="#sdkContents">SDK Contents</a></li>
+    <li><a href="#NextSteps">Next Steps</a></li>
+    <li><a href="#InstallationNotes">Installation Notes</a></li>
+    <li><a href="#Troubleshooting">Troubleshooting ADT Installation</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="#InstallationNotes">Installation Notes</a> at the bottom of
+this page.</p>
+
+<h4>Updating?</h4>
+<p>If you have already installed an earlier version
+of the Android SDK, please instead read <a href="{@docRoot}sdk/updating-sdk.html">Updating Your SDK</a>.
+</p>
+
+
+<h2 id="Preparing">Prepare for Installation</h2>
+
+<p>Before you begin, take a moment to confirm that your development machine
+meets the <a href="requirements.html">System Requirements</a>.</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 (3.4 or newer is recommended). 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>A Java or RCP version of Eclipse is recommended. </p>
+
+<h2 id="Installing">Install the SDK</h2>
+
+<p>After downloading the Android SDK, unpack the Android SDK .zip archive 
+to a suitable location on your machine. By default, the SDK files are unpacked 
+into a directory named <code>android_sdk_<em>&lt;platform</em>&gt;_<em>&lt;release&gt;</em></code>. </p>
+
+<p>Make a note of the name and location of the unpacked SDK directory on your system &mdash; you 
+will need to refer to the SDK directory later, when setting up the Android plugin or when 
+using the SDK tools.</p>
+
+<p>Optionally, you may want to add the location of the SDK's primary <code>tools</code> directory 
+to your system <code>PATH</code>. The primary <code>tools/</code> directory is located at the root of the 
+SDK folder. Adding <code>tools</code> to your path lets you run Android Debug Bridge (adb) and 
+the other command line <a href="{@docRoot}guide/developing/tools/index.html">tools</a> without 
+needing to supply the full path to the tools directory. </p>
+<ul>
+    <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> directory to it. If you don't 
+    see a line setting the path, you can add one:</li>
+
+    <ul><code>export PATH=${PATH}:<em>&lt;your_sdk_dir&gt;</em>/tools</code></ul>
+
+    <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 haven't already set one up on your machine. </li>
+
+    <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> directory to the path. </li>
+  </ul>
+
+<p>Note that, if you update your SDK in the future, you 
+should remember to update your <code>PATH</code> settings to point to the new location, if different.</p>
+
+<p>If you will be using the Eclipse IDE as your development environment,
+the next section describes how to install the Android Development Tools (ADT) plugin and set up Eclipse. 
+If you choose not to use Eclipse, you can 
+develop Android applications in an IDE of your choice and then compile, debug and deploy using
+the tools included in the SDK (skip to <a href="#NextSteps">Next Steps</a>).</p>
+
+
+<h2 id="InstallingADT">Install 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, add components based on the Android
+Framework API, debug your applications using the Android SDK tools, and even export
+signed (or unsigned) APKs in order to distribute your application.</p>
+
+<p>In general, using Eclipse with ADT is a highly recommended approach to
+Android development and is the fastest way to get started. (If you prefer to
+work in an IDE other than Eclipse, you do not need to install Eclipse or ADT,
+instead, you can directly use the SDK tools to build and debug your
+application&mdash;skip to <a href="#NextSteps">Next Steps</a>.)</p>
+
+<p>Once you have the Eclipse IDE installed, as described in <a
+href="#Preparing">Preparing for Installation</a>, follow the steps below to
+download the ADT plugin and install it in your respective Eclipse environment.
+</p>
+
+<table style="font-size:100%">
+<tr><th>Eclipse 3.4 (Ganymede)</th><th>Eclipse 3.5 (Galileo)</th></tr>
+<tr>
+<td width="45%">
+<!-- 3.4 steps -->
+<ol>
+    <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Software Updates...</strong>. 
+        In the dialog that appears, click the <strong>Available Software</strong> tab. </li>
+    <li>Click <strong>Add Site...</strong> </li>
+    <li>In the Add Site dialog that appears, enter this URL in the "Location" field:
+      <pre style="margin-left:0">https://dl-ssl.google.com/android/eclipse/</pre>
+        <p>Note: If you have trouble aqcuiring the plugin, try using "http" in the Location URL,
+        instead of "https" (https is preferred for security reasons).</p>   
+      <p>Click <strong>OK</strong>.</p></li>
+    <li>Back in the Available Software view, you should see the plugin listed by the URL,
+    with "Developer Tools" nested within it. Select the checkbox next to 
+      Developer Tools and click <strong>Install...</strong></li>
+    <li>On the subsequent Install window, "Android DDMS" and "Android Development Tools"
+    should both be checked. Click <strong>Next</strong>. </li>
+    <li>Read and accept the license agreement, then click <strong>Finish</strong>.</li>
+    <li>Restart Eclipse. </li>
+</ol>
+
+</td>
+<td>
+<!-- 3.5 steps -->
+<ol>
+    <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Install
+        New Softare</strong>. </li>
+    <li>In the Available Software dialog, click <strong>Add...</strong>.</li>
+    <li>In the Add Site dialog that appears, enter a name for the remote site
+        (e.g., "Android Plugin") in the "Name" field. 
+        <p>In the "Location" field, enter this URL:</p>
+        <pre>https://dl-ssl.google.com/android/eclipse/</pre>
+        <p>Note: If you have trouble aqcuiring the plugin, you can try
+           using "http" in the URL, instead of "https" (https is preferred for 
+           security reasons).</p>
+        <p>Click <strong>OK</strong>.</p>
+    </li>
+    <li>Back in the Available Software view, you should now see "Developer
+        Tools" added to the list. Select the checkbox next to Developer Tools, 
+        which will automatically select the nested tools Android DDMS and Android 
+        Development Tools. 
+        Click <strong>Next</strong>. </li>
+    <li>In the resulting Install Details dialog, the Android DDMS and Android 
+        Development Tools features are listed. Click <strong>Next</strong> to 
+        read and accept the license agreement and install any dependencies, 
+        then click <strong>Finish</strong>. </li>
+    <li>Restart Eclipse. </li>
+	
+</ol>
+</td>
+</tr>
+</table>
+
+<p>Now modify your Eclipse preferences to point to the Android SDK directory:</p>
+<ol>
+    <li>Select <strong>Window</strong> &gt; <strong>Preferences...</strong> to open the Preferences
+        panel (Mac OS X: <strong>Eclipse</strong> &gt; <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 downloaded SDK directory. </li>
+    <li>Click <strong>Apply</strong>, then <strong>OK</strong>.</li>
+</ol>
+
+<p>Done! If you haven't encountered any problems, then you're ready to
+begin developing Android applications. See the 
+<a href="#NextSteps">Next Steps</a> section for suggestions on how to start. </p>
+
+
+<h2 id="sdkContents">Contents of the SDK</h2>
+
+<p>Once you've downloaded and unpacked the SDK, open the SDK directory 
+and take a look at what's inside.</p>
+
+<p>The table below describes the SDK directory contents. </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.</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;border-bottom-color:white;"></td>
+<td colspan="2"><code>&lt;platform&gt;/</code></td>
+<td>Platform version directory, for example "Android 1.6". All platform version 
+directories contain a similar set of files and subdirectory structure.</td>
+</tr>
+
+<tr>
+<td style="width:2em;border-bottom-color:white;">&nbsp;</td>
+<td style="width:2em;border-bottom-color:white;"></td>
+<td><code>data/</code></td>
+<td>Storage area for default fonts and resource definitions.</td>
+</tr>
+<tr>
+<td style="width:2em;border-bottom-color:white;"></td>
+<td style="width:2em;border-bottom-color:white;"></td>
+<td><code>images/</code></td>
+<td>Storage area for default disk images, including the Android system image, 
+the default userdata image, the default ramdisk image, and more. The images 
+are used in emulator sessions.</td>
+</tr>
+<tr>
+<td style="width:2em;border-bottom-color:white;"></td>
+<td style="width:2em;border-bottom-color:white;"></td>
+<td><code>samples/</code></td>
+<td>Contains a wide variety of sample applications that you can load as projects
+into your development environment, compile, and run on the emulator.</td>
+</tr>
+<tr>
+<td style="width:2em;border-bottom-color:white;"></td>
+<td style="width:2em;border-bottom-color:white;"></td>
+<td><code>skins/</code></td>
+<td>A set of emulator skins available for the platform version. Each skin is
+designed for a specific screen resolution.</td>
+</tr>
+<tr>
+<td style="width:2em;border-bottom-color:white;"></td>
+<td style="width:2em;border-bottom-color:white;"></td>
+<td><code>templates/</code></td>
+<td>Storage area for file templates used by the SDK development tools.</td>
+</tr>
+<tr>
+<td style="width:2em;border-bottom-color:white;"></td>
+<td style="width:2em;border-bottom-color:white;"></td>
+<td><code>tools/</code></td>
+<td>Any development tools that are specific to the platform version.</td>
+</tr>
+<tr>
+<td style="width:2em;"></td>
+<td style="width:2em;"></td>
+<td><code>android.jar</code></td>
+<td>The Android library used when compiling applications against this platform
+version.</td>
+</tr>
+<tr>
+<td colspan="3"><code>tools/</code></td>
+<td>Contains the set of development and profiling tools available to you, such
+as the emulator, the <code>android</code> tool, adb, ddms, and more.</td>
+</tr>
+<tr>
+<td colspan="3"><code>RELEASE_NOTES.html</code></td>
+<td>A file that loads the local version of the SDK release notes, if
+available.</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>
+
+<h2 id="InstallationNotes">Installation Notes</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-bin</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>
+
+
+<h2 id="Troubleshooting">Troubleshooting ADT Installation</h2>
+
+<p> If you are having trouble downloading the ADT plugin after following the
+steps above, here are some suggestions: </p>
+
+<ul>
+  <li>If Eclipse can not find the remote update site containing the ADT plugin,
+try changing the remote site URL to use http, rather than https. That is, set
+the Location for the remote site to:
+<pre>http://dl-ssl.google.com/android/eclipse/</pre></li> 
+<li>If you are behind a firewall (such as a corporate firewall), make sure that
+you have properly configured your proxy settings in Eclipse. In Eclipse 3.3/3.4,
+you can configure proxy information from the main Eclipse menu in
+<strong>Window</strong> (on Mac OS X, <strong>Eclipse</strong>) &gt;
+<strong>Preferences</strong> &gt; <strong>General</strong> &gt; <strong>Network
+Connections</strong>.</li>
+</ul>
+
+<p> If you are still unable to use Eclipse to download the ADT plugin as a
+remote update site, you can download the ADT zip file to your local machine and
+manually install it:</p>
+
+<ol>
+  <li><a href="http://developer.android.com/sdk/preview/index.html">Download the
+      ADT Plugin zip file</a> (do not unpack it).</li>
+  <li>Follow steps 1 and 2 in the <a href="#InstallingADT">default install 
+      instructions</a> (above).</li>
+  <li>In the Add Site dialog, click <strong>Archive</strong>.</li>
+  <li>Browse and select the downloaded zip file.</li>
+  <li>In Eclipse 3.5 only, enter a name for the local update site (e.g.,
+      "Android Plugin") in the "Name" field.</li>
+  <li>Click <strong>OK</strong>.
+  <li>Follow the remaining procedures as listed for 
+      <a href="#InstallingADT">default installation</a> above,
+      starting from step 4.</li>
+</ol>
+
+<p>To update your plugin once you've installed using the zip file, you will have
+to follow these steps again instead of the default update instructions.</p>
+
+<h4>Other install errors</h4>
+
+<p>Note that there are features of ADT that require some optional 
+Eclipse components (for example, WST). If you encounter an error when 
+installing ADT, your Eclipse installion might not include these components. 
+For information about how to quickly add the necessary components to your 
+Eclipse installation, see the troubleshooting topic 
+<a href="{@docRoot}guide/appendix/faq/troubleshooting.html#installeclipsecomponents">ADT 
+Installation Error: "requires plug-in org.eclipse.wst.sse.ui"</a>.</p>
+
+<h4>For Linux users</h4>
+<p>If you encounter this error when installing the ADT Plugin for Eclipse: 
+<pre>
+An error occurred during provisioning.
+Cannot connect to keystore.
+JKS</pre>
+<p>
+...then your development machine lacks a suitable Java VM. Installing Sun
+Java 6 will resolve this issue and you can then reinstall the ADT
+Plugin.</p>
+
+
diff --git a/docs/html/sdk/download.jd b/docs/html/sdk/download.jd
index 1712ae6..76f1213 100644
--- a/docs/html/sdk/download.jd
+++ b/docs/html/sdk/download.jd
@@ -57,15 +57,11 @@
 <div class="special" id="next-steps" style="display:none">
   <h2>Thank you for downloading the Android SDK!</h2>
   <p>Your download should be underway. If not, <a id="click-download">click here to start the download</a>.</p>
-  <p>If you are upgrading from a previously installed version of the Android SDK, see
-    <a href="upgrading.html" class="addVersionPath">Upgrading the SDK</a>.</p>
-  <p>If you are installing for the first time, read 
-    <a href="installing.html" class="addVersionPath">Installing the Android SDK</a> to get your environment set up.
-    Once you have completed your installation, visit the <em>Dev Guide</em> tab and begin with the 
-    <a href="/guide/tutorials/hello-world.html">Hello World</a> tutorial to create your first
-    Android application. From there, learn more about Android with the 
-    <a href="/guide/topics/fundamentals.html">Application Fundamentals</a> documentation.</p>
-  <p>If you want to re-read the license agreement, it's available to you in the <em>SDK</em> tab.</p>
+  <p>To set up your Android development environment, please read the guide to
+    <a href="installing.html" class="addVersionPath">Installing the Android SDK</a>.
+    Once you have completed the installation, see the
+    <a href="/guide/index.html">Dev Guide</a> for documentation about
+    developing Android applications.</p>
 </div>
 
 <script type="text/javascript">
diff --git a/docs/html/sdk/index.jd b/docs/html/sdk/index.jd
index 2ac7688..e82ed34 100644
--- a/docs/html/sdk/index.jd
+++ b/docs/html/sdk/index.jd
@@ -1,6 +1,104 @@
-sdk.redirect=true
+page.title=Android 2.0 SDK, Release 1
+sdk.redirect=0
+sdk.version=2.0
+
+sdk.date=October 2009
+
+sdk.win_download=android-sdk-windows-2.0_r1.zip
+sdk.win_bytes=
+sdk.win_checksum=
+
+sdk.mac_download=android-sdk-mac_x86-2.0_r1.zip
+sdk.mac_bytes=
+sdk.mac_checksum=
+
+sdk.linux_download=android-sdk-linux_x86-2.0_r1.tgz
+sdk.linux_bytes=
+sdk.linux_checksum=
+
+adt.zip_download=ADT-0.9.4.zip
+adt.zip_version=0.9.4
+adt.zip_bytes=
+adt.zip_checksum=
 
 @jd:body
 
+<p>For more information on this SDK release, read the
+<a href="{@docRoot}sdk/RELEASENOTES.html">Release Notes</a>.</p>
+
+<p>For setup procedures, read the 
+<a href="{@docRoot}sdk/{@sdkCurrent}/installing.html">Installing</a> guide.</p>
+
+<h2>SDK Contents</h2>
+
+<h4>Development tools</h4>
+
+<p>The SDK includes a full set of tools for developing and debugging application
+code and designing an application UI. You can read about the tools in the <a
+href="{@docRoot}guide/developing/tools/index.html">Dev Guide</a> and access them
+in the <code><em>&lt;sdk&gt;</em>/tools/</code> directory.</p>
+
+<h4 id="system_images">Android Platforms</h4>
+
+<p>This SDK includes only the Android {@sdkCurrentVersion} platform version for developing Android
+applications. With this platform, both the fully compliant Android {@sdkCurrentVersion} library
+and system image are provided. For more information about this platform version &mdash;
+features, applications included, localizations, API changes, and so on &mdash;
+see the <a href="{@docRoot}sdk/android-{@sdkCurrentVersion}.html">Android {@sdkCurrentVersion}
+Version Notes</a>.</p>
+
+<p>Although only one platform version is included in the SDK, you do not need to
+install a separate Android SDK for each platform version on which would like to develop
+applications. Once you install the SDK from this page, you can easily install
+additional Android platform versions using the Android SDK and AVD Manager.
+For more information about adding platform versions to your SDK,
+read <a href="{@docRoot}sdk/updating-sdk.html">Updating Your SDK</a>.</p>
+
+
+<h4 id="system_images">SDK Add-Ons</h4>
+
+<p>An SDK add-on provides a development environment for an Android external
+library or a customized (but fully compliant) Android system image. This SDK
+includes the SDK add-ons listed below. The Android system API Level required by
+each add-on is noted.</p>
+
+<table style="margin-right:1em;" width="80%">
+<tr>
+<th><nobr>Add-On</nobr></th><th><nobr>API Level</nobr></th>
+<th>Notes</th><th>Description</th>
+</tr>
+<tr>
+<td width="5%"><nobr>Google APIs</nobr></td>
+<td  width="5%">5</td>
+<td  width="5%">&nbsp;</td>
+<td>Includes the com.google.android.maps external library, a compliant
+Android 2.0 system image, a {@link android.location.Geocoder Geocoder}
+backend service implementation, documentation, and sample code. </td>
+</tr>
+</table>
+
+
+<h4 id="samples">Sample Code and Applications</h4>
+
+<p>You can look at a variety of sample applications in the <a
+href="{@docRoot}guide/samples/index.html">Dev Guide</a> and access the sample
+code itself in the <code><em>&lt;sdk&gt;</em>/platforms/<em>&lt;platform&gt;</em>/samples/</code>
+directory of the SDK package. Note that each platform version includes its own set of
+sample applications.</p>
+
+
+<h4 id="documentation">Documentation</h4>
+
+<p>The SDK package includes a full set of local documentation. To view it, open
+the <code><em>&lt;sdk&gt;</em>/documentation.html</code> file in a web browser. If you
+are developing in an IDE such as Eclipse, you can also view the reference
+documentation directly in the IDE by hovering over methods and class names.</p>
+
+<p>The most current documentation is always available on the Android Developers
+site:</p>
+
+<p style="margin-left:2em;"><a
+href="http://developer.android.com/index.html">http://developer.android.com/</a>
+</p>
 
 
diff --git a/docs/html/sdk/requirements.jd b/docs/html/sdk/requirements.jd
new file mode 100644
index 0000000..97db36d
--- /dev/null
+++ b/docs/html/sdk/requirements.jd
@@ -0,0 +1,54 @@
+page.title=System Requirements
+@jd:body
+
+<p>The sections below describe the system and software requirements for developing 
+Android applications using the Android Development Tools, revision 3. </p>
+
+<h3>Supported Operating Systems</h3>
+<ul>
+  <li>Windows XP (32-bit) or Vista (32- or 64-bit)</li>
+  <li>Mac OS X 10.4.8 or later (x86 only)</li>
+  <li>Linux (tested on Linux Ubuntu Hardy Heron)
+    <ul>
+      <li>64-bit distributions must be capable of running 32-bit applications. 
+      For information about how to add support for 32-bit applications, see
+      the <a href="installing.html#InstallationNotes">Installation Notes</a>.</li>
+    </ul>
+  </li>
+</ul>
+
+<h3>Supported Development Environments</h3>
+<ul>
+  <li>Eclipse IDE
+    <ul>
+      <li><a href="http://www.eclipse.org/downloads/">Eclipse</a> 3.4 (Ganymede) or 3.5 (Galileo)
+        <ul>
+        <li>Note: Eclipse 3.3 has not been fully tested with ADT 0.9.3 and support can no longer be guaranteed. We suggest you upgrade to 
+          Eclipse 3.4 or 3.5.</li>
+        <li>Recommended Eclipse IDE packages: Eclipse IDE for Java EE Developers, Eclipse IDE for Java Developers, Eclipse for RCP/Plug-in Developers</li>
+        <li>Eclipse <a href="http://www.eclipse.org/jdt">JDT</a> plugin (included in most Eclipse IDE packages) </li>
+        <li>Eclipse Classic IDE package is not supported.</li>
+        </ul>
+      </li>     
+      <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK 6</a> (JRE alone is not sufficient)</li>
+      <li><a href="installing.html#installingplugin">Android Development Tools plugin</a> (optional)</li>
+      <li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
+    </ul>
+  </li>
+  <li>Other development environments or IDEs
+    <ul>
+      <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK 6</a> (JRE alone is not sufficient)</li>
+      <li><a href="http://ant.apache.org/">Apache Ant</a> 1.6.5 or later for Linux and Mac, 1.7 or later for Windows</li>
+      <li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
+    </ul>
+  </li>
+</ul>
+
+<p class="note"><strong>Note:</strong> If JDK is already installed on your development computer, please take a moment to make sure that it meets the version requirements listed above. 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. </p>
+
+<h3>Hardware requirements</h3>
+<ul>
+  <li>For the base SDK package, at least 600MB of available disk space. For each platform downloaded into the SDK, an additional 100MB is needed. </li>
+</ul>
+
diff --git a/docs/html/sdk/sdk_toc.cs b/docs/html/sdk/sdk_toc.cs
index 143a38d..b75fe9b 100644
--- a/docs/html/sdk/sdk_toc.cs
+++ b/docs/html/sdk/sdk_toc.cs
@@ -13,10 +13,7 @@
       <span style="display:none" class="zh-TW">目前 SDK 發行版本</span>
     </h2>
     <ul>
-      <li><a href="<?cs var:toroot ?>sdk/<?cs
-        if:sdk.preview ?>preview<?cs
-			  else ?><?cs var:sdk.current ?><?cs
-			  /if ?>/index.html">
+      <li><a href="<?cs var:toroot ?>sdk/index.html">
           <span class="en">Download</span>
           <span style="display:none" class="de">Herunterladen</span>
           <span style="display:none" class="es">Descargar</span>
@@ -26,10 +23,7 @@
           <span style="display:none" class="zh-CN">下载</span>
           <span style="display:none" class="zh-TW">下載</span>
         </a></li>
-      <li><a href="<?cs var:toroot ?>sdk/<?cs
-        if:sdk.preview ?>preview<?cs
-			  else ?><?cs var:sdk.current ?><?cs
-			  /if ?>/installing.html">
+      <li><a href="<?cs var:toroot ?>sdk/<?cs var:sdk.current ?>/installing.html">
           <span class="en">Installing</span>
           <span style="display:none" class="de">Installieren</span>
           <span style="display:none" class="es">Instalación</span>
@@ -39,14 +33,8 @@
           <span style="display:none" class="zh-CN">安装</span>
           <span style="display:none" class="zh-TW">安裝</span>
         </a></li>
-      <li><a href="<?cs var:toroot ?>sdk/<?cs
-        if:sdk.preview ?>preview<?cs
-			  else ?><?cs var:sdk.current ?><?cs
-			  /if ?>/upgrading.html">Upgrading</a></li>
-      <li><a href="<?cs var:toroot ?>sdk/<?cs
-        if:sdk.preview ?>preview<?cs
-			  else ?><?cs var:sdk.current ?><?cs
-			  /if ?>/requirements.html">System Requirements</a></li>
+      <li><a href="<?cs var:toroot ?>sdk/updating-sdk.html">Updating Your SDK</a></li>
+      <li><a href="<?cs var:toroot ?>sdk/requirements.html">System Requirements</a></li>
     </ul><?cs 
    else ?> <?cs # else "if NOT online" ... ?>
     <h2>
@@ -55,10 +43,7 @@
    /if ?> <?cs # end of "if/else online" ... ?>
     <ul>
       <li><a href="<?cs var:toroot ?>sdk/terms.html">SDK Terms and Conditions</a></li>
-      <li><a href="<?cs var:toroot ?><?cs 
-        if:sdk.current == "preview" ?>sdk/preview/index.html<?cs 
-        else ?>sdk/RELEASENOTES.html<?cs 
-        /if ?>">SDK Release Notes</a></li>
+      <li><a href="<?cs var:toroot ?>sdk/RELEASENOTES.html">SDK Release Notes</a></li>
     </ul>
   </li><?cs 
  if:android.whichdoc == "online" ?>
@@ -74,11 +59,34 @@
       <span style="display:none" class="zh-TW">系統影像版本資訊</span>
     </h2>
     <ul>
+      <li><a href="<?cs var:toroot ?>sdk/android-2.0.html">Android 2.0 Version Notes</a></li>
       <li><a href="<?cs var:toroot ?>sdk/android-1.6.html">Android 1.6 Version Notes</a></li>
-      <li><a href="<?cs var:toroot ?>sdk/android-1.5.html">Android 1.5 Version Notes</a></li>
-      <li><a href="<?cs var:toroot ?>sdk/android-1.1.html">Android 1.1 Version Notes</a></li>
+  <!--    <li class="toggle-list"><div><a href="#" onclick="toggle(this.parentNode.parentNode,true); return false;">More</a></div>
+        <ul> -->
+          <li><a href="<?cs var:toroot ?>sdk/android-1.5.html">Android 1.5 Version Notes</a></li>
+          <li><a href="<?cs var:toroot ?>sdk/android-1.1.html">Android 1.1 Version Notes</a></li>
+  <!--    </ul> -->
+      </li>
     </ul>
   </li>
+<!--
+  <li>
+    <h2>
+      <span class="en">Developer Tools</span>
+      <span style="display:none" class="de"></span>
+      <span style="display:none" class="es"></span>
+      <span style="display:none" class="fr"></span>
+      <span style="display:none" class="it"></span>
+      <span style="display:none" class="ja"></span>
+      <span style="display:none" class="zh-CN"></span>
+      <span style="display:none" class="zh-TW"></span>
+    </h2>
+    <ul>
+      <li><a href="<?cs var:toroot ?>sdk/tools.html">Tools Revision 3</a></li>
+      <li><a href="<?cs var:toroot ?>sdk/adt.html">"ADT Plugin for Eclipse, 0.9.4</a></li>
+    </ul>
+  </li>
+-->
   <li>
     <h2>Native Development Tools</h2>
     <ul>
@@ -97,6 +105,7 @@
         <span style="display:none" class="zh-TW">較舊的 SDK 發行版本</span>
     </h2>
     <ul>
+      <li><a href="<?cs var:toroot ?>sdk/1.6_r1/index.html">Android 1.6 SDK, r1</a></li>
       <li><a href="<?cs var:toroot ?>sdk/1.5_r3/index.html">Android 1.5 SDK, r3</a></li>
       <li><a href="<?cs var:toroot ?>sdk/1.1_r1/index.html">Android 1.1 SDK, r1</a></li>
       <li><a href="<?cs var:toroot ?>sdk/1.0_r2/index.html">Android 1.0 SDK, r2</a></li>
diff --git a/docs/html/sdk/updating-sdk.jd b/docs/html/sdk/updating-sdk.jd
new file mode 100644
index 0000000..db1e8db
--- /dev/null
+++ b/docs/html/sdk/updating-sdk.jd
@@ -0,0 +1,181 @@
+page.title=Updating Your SDK
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Quick view</h2>
+<ul>
+  <li>Use the Android SDK and AVD Manager to 
+   keep your SDK up-to-date without having to install new
+   SDK directories.</li>
+  <li>The Android SDK and AVD Manager is available only with the 
+   Android 1.6 SDK or later.</li>
+  <li>The Eclipse ADT plugin may require an update when installing
+   new tools or system images.</li>
+</ul>
+
+<h2>In this document</h2>
+<ol>
+  <li><a href="#InstallingComponents">Installing SDK Components</a>
+    <ol>
+      <li><a href="#AddingSites">Adding New Sites</a></li>
+    </ol>
+  </li>
+  <li><a href="#UpdatingAdt">Updating the Eclipse ADT Plugin</a></li>
+</ol>
+</div>
+</div>
+
+
+<p>Updating your Android SDK is fast and easy. To perform an update, use the
+<strong>Android SDK and AVD Manager</strong>
+to install or update the individual SDK components that you need.</p>
+
+<p>It only takes a couple of clicks to install
+individual versions of the Android platform, new development tools, new documentation, and
+SDK add-ons. The new SDK components are automatically installed into your existing SDK 
+directory, so you don't need to update your development environment to specify a
+new SDK location.</p>
+
+<p>Because each version of the Android platform can be installed as an individual component
+of your SDK, you can customize your development environment to the Android platforms
+you are targetting. Testing your app on multiple versions of
+the platform is very important in order to successfully operate on as many devices as possible.
+Be sure to install each version of the Android platform with which your app is compatible, then test
+your apps on <a href="{@docRoot}guide/developing/tools/avd.html">AVDs</a> that run each platform.</p>
+
+<p>If you develop applications using Eclipse, you may also need to update
+your ADT plugin when you update your development tools or in order to compile
+against a new version of the platform. See the 
+<a href="{@docRoot}sdk/RELEASENOTES.html">SDK Release Notes</a> for ADT compatibility.</p>
+
+
+
+<h2 id="InstallingComponents">Installing SDK Components</h2>
+
+<p>Use the Android SDK and AVD Manager to install new SDK components. 
+To launch the SDK and AVD Manager:</p>
+<ul>
+  <li>Execute the <a 
+  href="{@docRoot}guide/developing/tools/othertools.html#android">{@code android}</a> tool
+  command with no options.</li>
+  <li>Or from Eclipse, select <strong>Window</strong> &gt;<strong>Android SDK and AVD
+  Manager</strong>.</li>
+</ul>
+
+<img src="{@docRoot}images/sdk_manager_packages.png" alt="" style="float:right" />
+
+<p>When a new platform version, add-on, set of development tools or
+documentation becomes available, you can quickly
+install them into your existing Android SDK:</p>
+
+<ol>
+  <li>Select <strong>Available Components</strong> in the left panel.
+  This will reveal all components currently available for download.</li>
+  <li>Select the components you'd like to install and click <strong>Install
+  Selected</strong>.</li>
+  <li>Verify and accept the components you want and click <strong>Install
+  Accepted</strong>. The components will now be installed into your existing
+  Android SDK directories.</li>
+</ol>
+
+<p>New platforms are automatically saved into the 
+<code><em>&lt;sdk>/</em>platforms/</code> directory of your SDK;
+new add-ons are saved in the <code><em>&lt;sdk>/</em>add-ons/</code>
+directory; and new documentation is saved in the existing
+<code><em>&lt;sdk>/</em>docs/</code> directory (old docs are replaced).</p>
+
+<p class="note"><strong>Tip:</strong>
+Use the "Display updates only" checkbox to show only the components
+you do not have.</p>
+
+
+<h3 id="AddingSites">Adding New Sites</h3>
+
+<p>By default, <strong>Available Components</strong> only shows 
+the Google repository for Android SDK components and Google API
+add-ons. You can add additional sites that host
+Android SDK add-ons, then download SDK add-ons from them.</p>	
+
+<p>For example, a mobile carrier or hardware manufacturer may offer additional
+API libraries that are supported by their own Android-powered devices. 
+In order to develop using their libraries, you must install their
+Android SDK add-on.
+If the carrier or manufacturer has hosted an add-on repository file on their
+web site, add their site to the SDK and AVD Manager:</p>
+<ol>
+  <li>Select <strong>Available Components</strong> in the left panel.</li>
+  <li>Click <strong>Add Site</strong> and enter the URL of the 
+{@code repository.xml} file. Click <strong>OK</strong>.</li>
+</ol>
+<p>Any SDK components available from the site will now be listed under
+<strong>Available Components</strong>.</p>
+
+
+
+
+
+<h2 id="UpdatingAdt">Updating the Eclipse ADT Plugin</h2>
+
+<p>You may need to update your ADT plugin depending on what version of the
+development tools you are using and what version of the Android platform you are
+compiling against. It's easy to update your plugin through Eclipse and we
+recommend that you stay up-to-date in order to avoid any problems.</p>
+
+<p>With the latest version of ADT, you can still compile existing applications against 
+previous versions of the Android platform. However, the latest ADT may
+not work with a previous version of the development tools. See the
+Android development tools release notes for compatibility information.</p>
+
+<p>To update ADT, follow the procedure below for your respective version of Eclipse.</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="{@docRoot}sdk/{@sdkCurrent}/installing.html#InstallingADT">Installing the ADT Plugin for
+Eclipse</a>.</p>
+
+
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/FileFilter.java b/tests/DumpRenderTree/src/com/android/dumprendertree/FileFilter.java
index 395e572..32219fa 100644
--- a/tests/DumpRenderTree/src/com/android/dumprendertree/FileFilter.java
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/FileFilter.java
@@ -79,8 +79,7 @@
         "profiler",  // profiler is not supported
         "svg",  // svg is not supported
         "platform",  // platform specific
-        "http",  // requires local http(s) server
-        "fast/workers",
+        "http/wml",
     };
         
     static final String [] ignoreTestList = {
