diff --git a/pdk/docs/CHANGE_HISTORY.TXT b/pdk/docs/CHANGE_HISTORY.TXT
deleted file mode 100755
index 379aade..0000000
--- a/pdk/docs/CHANGE_HISTORY.TXT
+++ /dev/null
@@ -1,23 +0,0 @@
-V 0.9 MWR Apr 6, 2009
-#####################
-
-* New files for new css files using droiddoc/clearsilver
-
-V 0.3 - June 9, 2008
-####################
-
-* Architectural diagrams now include a legend that describes the difference 
-  between solid and dashed elements
-
-* Removed Puppetmaster document
-
-* Removed external link to Android Architecture from the left navigation bar
-
-* small changes to Radio Layer Interface
-
-* Updated Host System Setup (source_setup_guide.html) to include mention of Linux 8.04 and Cygwin.
-
-* Updated Build System (build_system.html): Switched Device code options 1 & 2 to emphasize that 
-  the new first option yields more consistent results. 
-
-* Updated Bring Up (bring_up.html): removed "hotplugd" from step 7.
diff --git a/pdk/docs/README b/pdk/docs/README
new file mode 100644
index 0000000..883d83a
--- /dev/null
+++ b/pdk/docs/README
@@ -0,0 +1,15 @@
+This directory contains the source for the source.android.com site contents.
+The Platform Development Kit (PDK, a set of tools for the convenience of
+engineers doing building devices) is also built as part of the site build.
+
+Subdirectories include:
+  about -- general information about the Android Open Source Project
+  community -- information about the AOSP mailing lists
+  compatibility -- information about building compatible devices
+  downloads -- links to download files of interest
+  images -- images used in docs; note: this is NOT for UI assets/skins
+  porting -- tips & guides for porting the Android source to hardware
+  source -- how to access & use the Android source
+
+This directory originated as the PDK home (hence the name) and grew to
+encompass source.android.com.
diff --git a/pdk/docs/getsource/getsource_toc.cs b/pdk/docs/getsource/getsource_toc.cs
deleted file mode 100644
index 5332cdf..0000000
--- a/pdk/docs/getsource/getsource_toc.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-<script type="text/javascript" language="JavaScript">
-<!--
-function nothing() {}
--->
-</script>
-
-<ul>
-  <li> <h2>Work with the Code </h2>
-  <ul>
-    <li><a href="">...</a></li>
-  </ul>
-  </li>
-
-  <li> <h2>About the project </h2>
-  <ul>
-    <li><a href="">...</a></li>
-  </ul>
-  </li>
-
-</ul>
-
-<script type="text/javascript">
-<!--
-    buildToggleLists();
-//-->
-</script>
diff --git a/pdk/docs/getsource/index.jd b/pdk/docs/getsource/index.jd
deleted file mode 100644
index 08d1c25..0000000
--- a/pdk/docs/getsource/index.jd
+++ /dev/null
@@ -1,11 +0,0 @@
-home=true
-doc.type=getsource
-@jd:body
-
-<div id="mainBodyFixed">
-
-<p>
-Some new content about getting source goes here
-</p>
-
-</div>
diff --git a/pdk/docs/guide/audio.jd b/pdk/docs/guide/audio.jd
deleted file mode 100755
index 66c05f7..0000000
--- a/pdk/docs/guide/audio.jd
+++ /dev/null
@@ -1,61 +0,0 @@
-page.title=Audio
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidAudioBuildingDriver">Building an Audio Library</a></li>
-<li><a href="#androidAudioInterface">Interface</a></li>
-</ul>
-</div>
-</div>
-
-
-<p>AudioHardwareInterface serves as the glue between proprietary audio drivers and the Android AudioFlinger service, the core audio service that handles all audio-related requests from applications.</p>
-<p><img src="images/android_audio_architecture.gif"></p>
-
-Solid elements represent Android blocks and dashed elements represent partner-specific blocks.
-
-
-
-<a name="androidAudioBuildingDriver"></a><h3>Building an Audio Library</h3>
-
-<p>To implement an audio driver, create a shared library that implements the interface defined in <code>AudioHardwareInterface.h</code>. You must name your shared library <code>libaudio.so</code> so that it will get loaded from <code>/system/lib</code> at runtime.  Place libaudio sources and <code>Android.mk</code> in <code>vendor/acme/chipset_or_board/libaudio/</code>.</p>
-<p>The following stub <code>Android.mk</code> file ensures that <code>libaudio</code> compiles and links to the appropriate libraries:</p>
-
-<pre class="prettify">
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libaudio
-
-LOCAL_SHARED_LIBRARIES := \
-    libcutils \
-    libutils \
-    libmedia \
-    libhardware
-
-LOCAL_SRC_FILES += MyAudioHardware.cpp
-
-LOCAL_CFLAGS +=
-
-LOCAL_C_INCLUDES +=
-
-LOCAL_STATIC_LIBRARIES += libaudiointerface
-
-include $(BUILD_SHARED_LIBRARY)
-</pre>
-
-
-<a name="androidAudioInterface"></a><h3>Interface</h3>
-
-
-
-<p class="note"><strong>Note</strong>: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, <a href="audio_sub_system.html">click here</a>.</p>
-
-
-<iframe onLoad="resizeDoxFrameHeight();" src="AudioHardwareInterface_8h.html" scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" frameborder="0" style="width:100%;"></iframe>
diff --git a/pdk/docs/guide/bluetooth.jd b/pdk/docs/guide/bluetooth.jd
deleted file mode 100755
index bcf88db..0000000
--- a/pdk/docs/guide/bluetooth.jd
+++ /dev/null
@@ -1,193 +0,0 @@
-page.title=Bluetooth
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidBluetoothPorting">Porting</a></li>
-<li><a href="#androidBluetoothCompiling">Compiling</a></li>
-<li><a href="#androidBluetoothTroubleshooting">Troubleshooting</a></li>
-<li><a href="#androidBluetoothTools">Tools</a></li>
-<li><a href="#androidBluetoothFeatures">Feature Support</a></li>
-</ul>
-</div>
-</div>
-
-<p>Android's Bluetooth stack uses BlueZ version 3.36 for GAP, SDP, and RFCOMM profiles, and is a SIG-qualified Bluetooth 2.0 + EDR host stack.</p>
-
-<p>Bluez is GPL licensed, so the Android framework interacts with userspace bluez code through D-BUS IPC to avoid proprietary code.</p>
-
-<p>Headset and Handsfree (v1.5) profiles are implemented in the Android framework and are both tightly coupled with the Phone App. These profiles are also SIG qualified.</p>
-
-<p>The diagram below offers a library-oriented view of the Bluetooth stack. Click <a href="bluetooth/bluetooth_process.html">Bluetooth Process Diagram</a> for a process-oriented view.</p>
-
-<p><img src="images/androidBluetooth.gif"></p>
-
-Solid elements represent Android blocks and dashed elements represent partner-specific blocks.
-
-
-
-<a name="androidBluetoothPorting"></a><h3>Porting</h3>
-
-<p>BlueZ is Bluetooth 2.0 compatible and should work with any 2.0 chipset. There are two integration points:</p>
-<p><ul>
-<li>UART driver</li>
-<li>Bluetooth Power On / Off</li>
-</ul>
-</p>
-
-
-<a name="androidBluetoothPortingDriver"></a><h4>UART Driver</h4>
-
-<p>The BlueZ kernel sub-system attaches to your hardware-specific UART driver using the <code>hciattach</code> daemon.</p>
-<p>For example, for MSM7201A, this is <code>drivers/serial/msm_serial.c</code>. You may also need to edit command line options to <code>hciattach</code> via <code>init.rc</code>.</p>
-
-
-<a name="androidBluetoothPortingPowerOnOff"></a><h4>Bluetooth Power On / Off</h4>
-
-<p>The method for powering on and off your bluetooth chip varies from Android V 1.0 to post 1.0.</p>
-
-<p><ul>
-<li><b>1.0</b>: Android framework writes a 0 or 1 to <code>/sys/modules/board_[PLATFORM]/parameters/bluetooth_power_on</code>.</li>
-
-<li><b>Post 1.0</b>: Android framework uses the linux <code>rfkill</code> API. See <code>arch/arm/mach-msm/board-trout-rfkill.c</code> for an example.</li>
-</ul>
-</p>
-
-<a name="androidBluetoothCompiling"></a><h4>Compiling</h4>
-
-<p>To compile Android with Bluetooth support enabled, add the following line to <code>BoardConfig.mk</code>.
-<pre>
-BOARD_HAVE_BLUETOOTH := true
-</pre>
-
-<a name="androidBluetoothTroubleshooting"></a><h3>Troubleshooting</h3>
-<p><strong>Debugging</strong></p>
-<p>To debug your bluetooth implementation, start by reading the logs (<code>adb logcat</code>) and look for ERRROR and WARNING messages regarding Bluetooth. 
-  Andoird uses Bluez, which comes with some useful debugging tools. The snippet below provides examples in a suggested order:</p>
-<pre>
-hciconfig -a  			# print BT chipset address and features. Useful to check if you can communicate with your BT chipset.
-hcidump -XVt  			# print live HCI UART traffic.
-hcitool scan  			# scan for local devices. Useful to check if RX/TX works.
-l2ping ADDRESS  		# ping another BT device. Useful to check if RX/TX works.
-sdptool records ADDRESS # request the SDP records of another BT device.
-</pre>
-
-<p><strong>Deamon Logs</strong></p>
-<p>Deamon logs for <code>hcid</code> (<code>STDOUT</code>) and <code>hciattach</code> (<code>STDERR</code>) are sent to <code>/dev/null</code> by default. Edit <code>init.rc</code></span> and <code>init.PLATFORM.rc</code></span> to run these daemons under <code>logwrapper</code>, which redirects output to <code>logcat</code>.</p>
-<p><strong>hciconfig -a and hcitool</strong></p>
-<p>If you compile your own system.img for Android, and <code>hciconfig -a</code> works but <code>hcitool</code> scan doesn't, try installing the firmware for the Bluetooth chipset. This firmware isn't yet available in the open source codebase, but you can <code>adb pull</code> and then <code>adb push</code>it from a stock T-Mobile G1 (located in <code>/etc/firmware/brf6300.bin</code>).<br />
-  <a name="androidBluetoothTools"></a></p>
-<h3>Tools</h3>
-
-<p>BlueZ provides a rich set of command line tools for debugging and interacting with the Bluetooth sub-system, including:</p>
-<p><ul>
-<li><code>hciconfig</code></li>
-<li><code>hcitool</code></li>
-<li><code>hcidump</code></li>
-<li><code>sdptool</code></li>
-<li><code>dbus-send</code></li>
-<li><code>dbus-monitor</code></li>
-</ul>
-</p>
-
-<a name="androidBluetoothFeatures"></a>
-<h3>Feature Support</h3>
-<p>This section provides a change history of Bluetooth features added in each Android release and provides some rough guidance as to future features. </p>
-<h4>Android 1.0 release</h4>
-<h5>Platform features</h5>
-<ul>
-  <li>Based on Bluez 3.36 and Linux Kernel 2.6.25</li>
-  <li>Bluetooth 2.0+EDR host stack</li>
-  <li>Headset Profile 1.0 in Audio Gateway role</li>
-  <li>Handsfree Profile 1.5 in Audio Gateway role</li>
-  <ul>
-    <li>Three-way calling</li>
-    <li>Phonebook over AT commands
-    </li>
-  </ul>
-</ul>
-<h5>Qualifications</h5>
-<ul>
-  <li>QDID B014524: Host stack (SDP, L2CAP, GAP, RFCOMM, SPP)</li>
-  <li>QDID B014624: EPL for HTC Dream (HSP, HFP)</li>
-</ul>
-<h5>Example products</h5>
-<ul>
-  <li>HTC Dream / T-Mobile G1</li>
-</ul>
-<h4>&nbsp;</h4>
-<h4>Android 1.1 release</h4>
-<p>No Bluetooth changes since 1.0</p>
-<h4>&nbsp;</h4>
-<h4>Android 1.5 release (cupcake)</h4>
-<h4>Platform features</h4>
-<ul>
-  <li>Based on Bluez 3.36 with Linux Kernel 2.6.27</li>
-  <li>Bluetooth 2.0+EDR host stack</li>
-  <ul>
-    <li>Support for auto-pairing with '0000' devices</li>
-  </ul>
-  <li>Headset Profile 1.1 in Audio Gateway role</li>
-  <li>Handsfree Profile 1.5 in Audio Gateway role</li>
-  <ul>
-    <li>Three-way calling    </li>
-    <li>Phonebook over AT commands    </li>
-    <li>Volume synchronization</li>
-    <li>eSCO</li>
-    <li>Extensive bug fixes and compatibility improvements</li>
-  </ul>
-  <li>Stereo Bluetooth (A2DP 1.2) in Source role</li>
-  <ul>
-    <li>AVDTP 1.2 in Acceptor and Initiator roles</li>
-    <li>GAVDTP 1.0 in Acceptor and Initiator roles</li>
-    <li>44.1 khz, stereo, software SBC codec</li>
-  </ul>
-  <li>Remote Control (AVRCP 1.0) in Target role</li>
-  <ul>
-    <li>AVCTP 1.3 in Target role</li>
-    <li>play/pause/stop/prev/next</li>
-  </ul>
-</ul>
-<h4>Qualifications</h4>
-<ul>
-  <li>QDID B015261: Host stack (SDP, L2CAP, GAP, RFCOMM, SPP, AVCTP, AVRCP, GAVDP, AVDTP, A2DP)</li>
-  <li>QDID B015262: EPL for HTC Sapphire (HSP, HFP)</li>
-</ul>
-<h5>&nbsp;</h5>
-<h4>Future releases</h4>
-<p>This section offers a rough guide of which features the team is developing for the next release. This feature list may change without notice. It isn't possible to post scheduling advice to the mailing lists.</p>
-<ul>
-  <li>Java Bluetooth API</li>
-  <li>Bluez 4.x with Linux Kernel 2.6.29</li>
-  <li>More profiles...</li>
-  <li>Bluetooth 2.1+EDR</li>
-</ul>
-
-<p><strong>Development Notes</strong></p>
-<ul>
-  <li><strong>HID Support<br />
-  </strong>Cupcake features some early work&#151;Bluez has an HID plugin, <code>external/bluez/utils/input/Android.mk</code>, which gets compiled. <br />
-    <br />
-You can interact directly with this plugin using <code>dbus-send</code></span> and <code>dbus-monitor</code>. While not officially supported, you should be able to connect and use a HID keyboard and mouse using the Bluez HID plugin API. Next steps include plumbing the plugin API in the Android Java framework and offering better support for HID input methods (new keymaps and mouse support).<br />
-  <br />
-  </li>
-  <li>  <strong>Tethering - DUN and PAN Support</strong><br />
-    Cupcake features some early work&#151;Bluez has has DUN and PAN daemons which get compiled and <code>external/bluez/utils/dun/Android.mk
-  external/bluez/utils/pan/Android.mk
-BNEP</code> support is compiled into the kernel with cupcake. <br />
-<br />
-While not officially supported, you should be able to run <code>dund</code> or <code>pand</code> daemons and, using <code>pppd</code> or <code>iptables</code>, test tethering support. Next steps include plubming the DBUS APIs to these daemons up into the Android Java framework and adding code to setup the network paths via <code>pppd</code> and / or <code>iptables</code>.<br />
-  <br />
-  </li>
-  <li><strong>Emulator Support</strong><br />
-  The Android emulator does not support Bluetooth at this time and there currently aren't any plans for its support.<br />
-    <br />
-  </li>
-  <li><strong>Bluetooth 2.1 and Simple Pairing Support</strong><br />
-  In order to support these features, Android needs to move to a Bluez 4.x version. This change is not scheduled at this time.</li>
-</ul>
diff --git a/pdk/docs/guide/bluetooth/bluetooth_process.jd b/pdk/docs/guide/bluetooth/bluetooth_process.jd
deleted file mode 100755
index ea46f23..0000000
--- a/pdk/docs/guide/bluetooth/bluetooth_process.jd
+++ /dev/null
@@ -1,7 +0,0 @@
-page.title=Bluetooth Process Diagram
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<p>The diagram below offers a process-oriented architectural overview of Android's Bluetooth stack. Click <a href="../bluetooth.html">Bluetooth</a> to return to the Bluetooth overview page.</p>
-<img src="images/androidBluetoothProcessDiagram.jpg">
diff --git a/pdk/docs/guide/bluetooth/images/androidBluetoothProcessDiagram.jpg b/pdk/docs/guide/bluetooth/images/androidBluetoothProcessDiagram.jpg
deleted file mode 100755
index 6872180..0000000
--- a/pdk/docs/guide/bluetooth/images/androidBluetoothProcessDiagram.jpg
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/guide/bring_up.jd b/pdk/docs/guide/bring_up.jd
deleted file mode 100755
index a11fe00..0000000
--- a/pdk/docs/guide/bring_up.jd
+++ /dev/null
@@ -1,359 +0,0 @@
-page.title=Bring Up
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<p>Once your code is built and you have verified that all necessary directories exist, power on and test your device with basic bring up, as described below. Bring up tests are typically designed to stress certain aspects of your system and allow you to characterize the device's behavior. </p>
-<p>&nbsp;</p>
-<h3>1. Confirm a Clean Installation of a Basic Linux Kernel </h3>
-<p>Before considering Android-specific modifications to the Linux kernel, verify that you can build, deploy, and boot a core Linux kernel on your target hardware. </p>
-<p>&nbsp;</p>
-<h3>2. Modify Your Kernel Configuration to Accommodate Android Drivers</h3>
-<p>Your kernel configuration file should include the following:</p>
-<pre class="prettyprint">
-#
-# Android
-#
-# CONFIG_ANDROID_GADGET is not set
-# CONFIG_ANDROID_RAM_CONSOLE is not set
-CONFIG_ANDROID_POWER=y
-CONFIG_ANDROID_POWER_STAT=y
-CONFIG_ANDROID_LOGGER=y
-# CONFIG_ANDROID_TIMED_GPIO is not set
-CONFIG_ANDROID_BINDER_IPC=y
-</pre>
-<h3>3. Write Drivers</h3>
-<p>Android ships with default drivers for all basic functionality but you'll likely want to write your own drivers (or at least customize the default drivers) for your own device depending on your hardware configuration. See the following topics for examples of how to write your own drivers. </p>
-<ul>
-  <li><a href="audio_subsystem.html">Audio</a></li>
-  <li><a href="keymaps_keyboard_input.html">Keymaps and Keyboard</a></li>
-  <li><a href="display_drivers.html">Display</a></li>
-</ul>
-<p>&nbsp;</p>
-<h3>4. Burn Images to Flash</h3>
-<p>An image represents the state of a system or part of a system  stored in non-volatile memory. The build process should produce the following system images:</p>
-<ul>
-  <li><strong>bootloader</strong>: The bootloader is a small program responsible for initiating loading of the operating system. </li>
-  <li><strong>boot</strong>: </li>
-  <li><strong>recovery</strong>: </li>
-  <li><strong>system</strong>: The system image stores a snapshot of the Android operating system.</li>
-  <li><strong>data</strong>: The data image stores user data. Anything not saved to the <code>device/data</code> directory will be lost on reboot.</li>
-</ul>
-<ul>
-  <li><strong>kernel</strong>: The kernel represents the most basic element of an operating system. Android's Linux kernel is responsible for managing the system's resources and acts as an abstraction layer between hardware and a system's applications. </li>
-  <li><strong>ramdisk</strong>: RAMdisk defines a portion of Random Access Memory (RAM) that gets used as if it were a hard drive. </li>
-</ul>
-<p>&nbsp;</p>
-<p>Configure the bootloader to load the kernel 	and RAMdisk into RAM and pass the RAMdisk address to the kernel on 	startup. </p>
-<p>&nbsp;</p>
-<h3>5. Boot the kernel and mount the RAMdisk.</h3>
-<p>&nbsp;</p>
-<h3>6. Debug Android-specific init programs on RAMdisk</h3>
-<p>Android-specific init programs are found in <code>device/system/init</code>. Add LOG messages to help you debug potential problems with the LOG macro defined in <code>device/system/init/init.c</code>.</p>
-<p> The init program directly mounts all filesystems and devices using either hard-coded file names or device names generated by probing the sysfs filesystem (thereby eliminating the need for a <code>/etc/fstab</code> file in Android).  After <code>device/system</code> files are mounted, init  reads <code>/etc/init.rc</code> and invokes the programs listed there (one of the first of which is the 	console shell).</p>
-<p>&nbsp;</p>
-<h3>7. Verify that applications have started </h3>
-<p>Once the shell becomes available, execute <code>% ps</code> to confirm that the following applications are running:</p>
-<ul>
-    <li><code>/system/bin/logd</code></li>
-    <li><code>/sbin/adbd</code></li>
-    <li><code>/system/bin/usbd</code></li>
-    <li><code>/system/bin/debuggerd</code></li>
-    <li><code>/system/bin/rild</code></li>
-    <li><code>/system/bin/app_process</code></li>
-    <li><code>/system/bin/runtime</code></li>
-    <li><code>/system/bin/dbus-daemon</code></li>
-    <li><code>system_server</code></li>
-</ul>
-<p>Each of these applications is embedded Linux C/C++ and you can use any standard Linux debugging tool to troubleshoot applications that aren't running. Execute <code>% make showcommands</code> to determine precise build commands. <code>gdbserver</code> (the GNU debugger) is available in the <code>bin</code> directory of the system partition (please see <a href="http://sourceware.org/gdb/">http://sourceware.org/gdb/</a> for more information).  </p>
-<p>&nbsp;</p>
-<h3>8. Pulling it all together </h3>
-<p>If bring up was successful, you should see the following Java applications (with icons) visible on the LCD panel:</p>
-<ul>
-    <li>com.google.android.phone: The Android contact application. </li>
-    <li>com.google.android.home</li>
-    <li>android.process.google.content</li>
-</ul>
-<p>If they are not visible or unresponsive to keypad control, run the <code>framebuffer/keypad</code> tests.</p>
-
-
-<a name="androidInitLanguage"></a><h1>Android Init Language</h1>
-
-
-<p>The Android Init Language consists of four broad classes of statements:</p>
-<ul>
-  <li>Actionn</li>
-  <li>Commands</li>
-  <li>Services</li>
-  <li>Options</li>
-</ul>
-<p>The language syntax includes the following conventions: </p>
-<ul>
-  <li>All classes are line-oriented and consist of tokens separated by whitespace. c-style backslash escapes may be used to insert whitespace into a token. &nbsp;Double quotes may also be used to prevent whitespace from breaking text into multiple tokens. A backslash <br />
-  appearing as the last character on a line is used for line-folding.</li>
-  <li> Lines that start with a # (leading whitespace allowed) are comments.</li>
-  <li>Actions and Services implicitly declare new sections. All commands
-    or options belong to the section most recently declared. &nbsp;Commands
-    or options before the first section are ignored.  </li>
-  <li>Actions and Services have unique names. &nbsp;If a second Action or Service is declared with the same name as an existing one, it is ignored as an error.</li>
-</ul>
-<p>  Actions</p>
-<p> Actions are named sequences of commands. Actions have a trigger used to determine when the action should occur. When an event
-  occurs which matches an action's trigger, that action is added to
-  the tail of a to-be-executed queue (unless it is already on the
-  queue).<br />
-  <br />
-  Each action in the queue is dequeued in sequence. Each command in
-  an action is executed in sequence.&nbsp;Init handles other activities
-  (such as, device creation/destruction, property setting, process restarting) &quot;between&quot; the execution of the commands in activities.
-<p>Actions take the form of:</p>
-<pre class="prettify">
-on &lt;trigger&gt;
-&nbsp; &lt;command&gt;
-&nbsp; &lt;command&gt;
-&nbsp; &lt;command&gt;
-</pre>
-<p>Services</p>
-<p>Services are programs that init launches and (optionally) restarts
-when they exit. </p>
-<p>Services take the form of:</p>
-<pre class="prettify">
-  service &lt;name&gt; &lt;pathname&gt; [ &lt;argument&gt; ]*
-&nbsp; &lt;option&gt;
-&nbsp; &lt;option&gt;
-&nbsp; ...
-</pre>
-<p>Options</p>
-  <p> Options are modifiers to services that affect how and when init
-runs a service. Options are described in the table below:</p>
-<table>
-  <tr>
-    <th scope="col">Option</th><th scope="col">Description</th></tr>
-  <tr>
-    <td><code>disabled</code></td>
-    <td>This service will not automatically start with its class. It must be explicitly started by name.</td>
-  </tr>
-  <tr>
-    <td><code>socket &lt;type&gt; &lt;name&gt; &lt;perm&gt; [ &lt;user&gt; [ &lt;group&gt; ] ]</code></td>
-    <td> Create a unix domain socket named <code>/dev/socket/&lt;name&gt;</code> and pass its fd to the launched process. Valid <code>&lt;type&gt;</code> values include <code>dgram</code> and <code>stream</code>. <code>user</code> and <code>group</code> default to 0.</td>
-  </tr>
-  <tr>
-    <td><code>user &lt;username&gt;</code></td>
-    <td>Change to username before exec'ing this service. Currently defaults to root.</td>
-  </tr>
-  <tr>
-    <td><code>group &lt;groupname&gt; [ &lt;groupname&gt; ]*</code></td>
-    <td> Change to groupname before exec'ing this service. &nbsp;Additional&nbsp; groupnames beyond the first, which is required, are used to set additional groups of the process (with <code>setgroups()</code>). Currently defaults to root.</td>
-  </tr>
-  <tr>
-    <td><code>capability [ &lt;capability&gt; ]+</code></td>
-    <td>Set linux capability before exec'ing this service</td>
-  </tr>
-  <tr>
-    <td><code>oneshot</code></td>
-    <td>Do not restart the service when it exits.</td>
-  </tr>
-  <tr>
-    <td><code>class &lt;name&gt;</code></td>
-    <td>Specify a class name for the service. &nbsp;All services in a named class must start and stop together. A service is considered of class &quot;default&quot; if one is not specified via the class option.</td>
-  </tr>
-</table>
-  <p>  Triggers</p>
-  <p>Triggers are strings used to match certain kinds of events that cause an action to occur.  </p>
-  <table>
-    <tr>
-      <th scope="col">Trigger</th>
-      <th scope="col">Description</th>
-    </tr>
-    <tr>
-      <td><code>boot</code></td>
-      <td>This is the first trigger that occurs when init starts (after <code>/init.conf</code> is loaded).</td>
-    </tr>
-    <tr>
-      <td><code>&lt;name&gt;=&lt;value&gt;</code></td>
-      <td>Triggers of this form occur when the property <code>&lt;name&gt;</code> is set to the specific value <code>&lt;value&gt;</code>.</td>
-    </tr>
-    <tr>
-      <td><code>device-added-&lt;path&gt;<br />
-  device-removed-&lt;path&gt;</code></td>
-      <td>Triggers of these forms occur when a device node is added or removed.</td>
-    </tr>
-    <tr>
-      <td><code> service-exited-&lt;name&gt;</code></td>
-      <td>Triggers of this form occur when the specified service exits.</td>
-    </tr>
-  </table>
-  <p><br />
-  Commands</p>
-  <table>
-    <tr>
-      <th scope="col">Command</th>
-      <th scope="col">Description</th>
-    </tr>
-    <tr>
-      <td><code>exec &lt;path&gt; [ &lt;argument&gt; ]*</code></td>
-      <td>Fork and execute a program (<code>&lt;path&gt;</code>). This will block until the program completes execution. Try to avoid exec. Unlike the <code>builtin</code> commands, it runs the risk of getting init &quot;stuck&quot;.</td>
-    </tr>
-    <tr>
-      <td><code>export &lt;name&gt; &lt;value&gt;</code></td>
-      <td>Set the environment variable <code>&lt;name&gt;</code> equal to <code>&lt;value&gt;</code> in the global environment (which will be inherited by all processes started after this command is executed).</td>
-    </tr>
-    <tr>
-      <td><code>ifup &lt;interface&gt;</code></td>
-      <td>Bring the network interface <code>&lt;interface&gt;</code> online.</td>
-    </tr>
-    <tr>
-      <td><code>import &lt;filename&gt;</code></td>
-      <td> Parse an init config file, extending the current configuration.</td>
-    </tr>
-    <tr>
-      <td><code>hostname &lt;name&gt;</code></td>
-      <td>Set the host name.</td>
-    </tr>
-    <tr>
-      <td><code>class_start &lt;serviceclass&gt;</code></td>
-      <td>Start all services of the specified class if they are not already running.</td>
-    </tr>
-    <tr>
-      <td><code>class_stop &lt;serviceclass&gt;</code></td>
-      <td>Stop all services of the specified class if they are currently running.</td>
-    </tr>
-    <tr>
-      <td><code>domainname &lt;name&gt;</code></td>
-      <td>Set the domain name.</td>
-    </tr>
-    <tr>
-      <td><code>insmod &lt;path&gt;</code></td>
-      <td>Install the module at <code>&lt;path&gt;</code>.</td>
-    </tr>
-    <tr>
-      <td><code>mkdir &lt;path&gt;</code></td>
-      <td>Make a directory at <code>&lt;path&gt;</code>.</td>
-    </tr>
-    <tr>
-      <td><code>mount &lt;type&gt; &lt;device&gt; &lt;dir&gt; [ &lt;mountoption&gt; ]*</code></td>
-      <td>Attempt to mount the named device at the directory <code>&lt;dir&gt;</code>         <code>&lt;device&gt;</code>. This may be of the form mtd@name to specify a mtd block device by name.</td>
-    </tr>
-    <tr>
-      <td><code>setkey</code></td>
-      <td>- currenlty undefined - </td>
-    </tr>
-    <tr>
-      <td><code>setprop &lt;name&gt; &lt;value&gt;</code></td>
-      <td>Set system property <code>&lt;name&gt;</code> to <code>&lt;value&gt;</code>.</td>
-    </tr>
-    <tr>
-      <td><code> setrlimit &lt;resource&gt; &lt;cur&gt; &lt;max&gt;</code></td>
-      <td>Set the rlimit for a resource.</td>
-    </tr>
-    <tr>
-      <td><code>start &lt;service&gt;</code></td>
-      <td>Start a service running if it is not already running.</td>
-    </tr>
-    <tr>
-      <td><code> stop &lt;service&gt;</code></td>
-      <td>Stop a service from running if it is currently running.</td>
-    </tr>
-    <tr>
-      <td><code>symlink &lt;target&gt; &lt;path&gt;</code></td>
-      <td>Create a symbolic link at <code>&lt;path&gt;</code> with the value <code>&lt;target&gt;</code>.</td>
-    </tr>
-    <tr>
-      <td><code>write &lt;path&gt; &lt;string&gt; [ &lt;string&gt; ]*</code></td>
-      <td>Open the file at <code>&lt;path&gt;</code> and write one or more strings to it with write(2).</td>
-    </tr>
-  </table>
-  <p>    Properties</p>
-    Init updates some system properties to provide some insight into<br />
-    what it's doing:</p>
-  <table>
-    <tr>
-      <th scope="col">Property</th>
-      <th scope="col">Description</th>
-    </tr>
-    <tr>
-      <td><code>init.action</code></td>
-      <td>Equal to the name of the action currently being executed or &quot;&quot; if none.</td>
-    </tr>
-    <tr>
-      <td><code>init.command</code></td>
-      <td>Equal to the command being executed or &quot;&quot; if none.</td>
-    </tr>
-    <tr>
-      <td><code>init.svc.&lt;name&gt;</code></td>
-      <td>State of a named service (&quot;stopped&quot;, &quot;running&quot;, or &quot;restarting&quot;).</td>
-    </tr>
-  </table>
-  <p>Example init.conf</p>
-  <p>The following snippet is an incomplete example of the <code>init.conf</code> file, simply meant to give you an idea of what a proper configuration resembles.</p>
-  <pre class="prettify">
-on boot
-  export PATH /sbin:/system/sbin:/system/bin
-  export LD_LIBRARY_PATH /system/lib
-
-  mkdir /dev
-  mkdir /proc
-  mkdir /sys
-
-
-  mount tmpfs tmpfs /dev
-  mkdir /dev/pts
-  mkdir /dev/socket
-  mount devpts devpts /dev/pts
-  mount proc proc /proc
-  mount sysfs sysfs /sys
-
-
-  write /proc/cpu/alignment 4
-
-
-  ifup lo
-
-
-  hostname localhost
-  domainname localhost
-
-
-  mount yaffs2 mtd@system /system
-  mount yaffs2 mtd@userdata /data
-
-
-  import /system/etc/init.conf
-
-
-  class_start default
-
-
-service adbd /sbin/adbd
-  user adb
-  group adb
-
-
-service usbd /system/bin/usbd -r
-  user usbd
-  group usbd
-  socket usbd 666
-
-
-service zygote /system/bin/app_process -Xzygote /system/bin --zygote
-  socket zygote 666
-
-
-service runtime /system/bin/runtime
-  user system
-  group system
-
-
-on device-added-/dev/compass
-  start akmd
-
-
-on device-removed-/dev/compass
-  stop akmd
-
-
-service akmd /sbin/akmd
-  disabled
-  user akmd
-  group akmd
-</pre>
diff --git a/pdk/docs/guide/build_cookbook.jd b/pdk/docs/guide/build_cookbook.jd
deleted file mode 100755
index 4bed947..0000000
--- a/pdk/docs/guide/build_cookbook.jd
+++ /dev/null
@@ -1,556 +0,0 @@
-page.title=Build Cookbook
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#simpleAPK">Simple APK</a></li>
-<li><a href="#APKJar">APK Dependent on static .jar file</a></li>
-    <li><a href="#APKPlatform">APK signed with the platform key</a></li>
-    <li><a href="#APKVendor">APK that signed with vendor key</a></li>
-    <li><a href="#prebuiltAPK">Prebuilt APK</a></li>
-    <li><a href="#staticJava">Adding a Static Java Library</a></li>
-    <li><a href="#mkVars">Android.mk variables</a></li>
-</ul>
-</div>
-</div>
-
-
-<p>The Android Build Cookbook offers code snippets to help you quickly implement some common build tasks. For additional instruction, please see the other build documents in this section.</p>  
-<h3><a name="simpleAPK"></a>Building a simple APK</h3>
-<pre>
-  LOCAL_PATH := $(call my-dir)
-  include $(CLEAR_VARS)
-  &nbsp;
-  # Build all java files in the java subdirectory
-  LOCAL_SRC_FILES := $(call all-subdir-java-files)
-  &nbsp;
-  # Name of the APK to build
-  LOCAL_PACKAGE_NAME := LocalPackage
-  &nbsp;
-  # Tell it to build an APK
-  include $(BUILD_PACKAGE)
-</pre>
-<h3><a name="APKJar"></a>Building a APK that depends on a static .jar file</h3>
-<pre>
-  LOCAL_PATH := $(call my-dir)
-  include $(CLEAR_VARS)
-  &nbsp;
-  # List of static libraries to include in the package
-  LOCAL_STATIC_JAVA_LIBRARIES := static-library
-  &nbsp;
-  # Build all java files in the java subdirectory
-  LOCAL_SRC_FILES := $(call all-subdir-java-files)
-  &nbsp;
-  # Name of the APK to build
-  LOCAL_PACKAGE_NAME := LocalPackage
-  &nbsp;
-  # Tell it to build an APK
-  include $(BUILD_PACKAGE)
-</pre>
-<h3><a name="APKPlatform"></a>Building a APK that should be signed with the platform key</h3>
-<pre>
-  LOCAL_PATH := $(call my-dir)
-  include $(CLEAR_VARS)
-  &nbsp;
-  # Build all java files in the java subdirectory
-  LOCAL_SRC_FILES := $(call all-subdir-java-files)
-  &nbsp;
-  # Name of the APK to build
-  LOCAL_PACKAGE_NAME := LocalPackage
-  &nbsp;
-  LOCAL_CERTIFICATE := platform
-  &nbsp;
-  # Tell it to build an APK
-  include $(BUILD_PACKAGE)
-</pre>
-<h3><a name="APKVendor"></a>Building a APK that should be signed with a specific vendor key</h3>
-<pre>
-  LOCAL_PATH := $(call my-dir)
-  include $(CLEAR_VARS)
-  &nbsp;
-  # Build all java files in the java subdirectory
-  LOCAL_SRC_FILES := $(call all-subdir-java-files)
-  &nbsp;
-  # Name of the APK to build
-  LOCAL_PACKAGE_NAME := LocalPackage
-  &nbsp;
-  LOCAL_CERTIFICATE := vendor/example/certs/app
-  &nbsp;
-  # Tell it to build an APK
-  include $(BUILD_PACKAGE)
-</pre>
-<h3><a name="prebuiltAPK"></a>Adding a prebuilt APK</h3>
-<pre>
-  LOCAL_PATH := $(call my-dir)
-  include $(CLEAR_VARS)
-  &nbsp;
-  # Module name should match apk name to be installed.
-  LOCAL_MODULE := LocalModuleName
-  LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
-  LOCAL_MODULE_CLASS := APPS
-  LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
-  &nbsp;
-  include $(BUILD_PREBUILT)
-</pre>
-<h3><a name="staticJava"></a>Adding a Static Java Library</h3>
-<pre>
-  LOCAL_PATH := $(call my-dir)
-  include $(CLEAR_VARS)
-  &nbsp;
-  # Build all java files in the java subdirectory
-  LOCAL_SRC_FILES := $(call all-subdir-java-files)
-  &nbsp;
-  # Any libraries that this library depends on
-  LOCAL_JAVA_LIBRARIES := android.test.runner
-  &nbsp;
-  # The name of the jar file to create
-  LOCAL_MODULE := sample
-  &nbsp;
-  # Build a static jar file.
-  include $(BUILD_STATIC_JAVA_LIBRARY)
-</pre>
-<h3><a name="mkVars"></a>Android.mk Variables</h3>
-
-<p>These are the variables that you'll commonly see in Android.mk files, listed
-alphabetically. First, a note on the variable naming: </p> 
-
-<ul> 
-    <li><b>LOCAL_</b> - These variables are set per-module.  They are cleared
-    by the <code>include $(CLEAR_VARS)</code> line, so you can rely on them
-    being empty after including that file.  Most of the variables you'll use
-    in most modules are LOCAL_ variables.</li> 
-    <li><b>PRIVATE_</b> - These variables are make-target-specific variables.  That
-    means they're only usable within the commands for that module.  It also
-    means that they're unlikely to change behind your back from modules that
-    are included after yours.  This 
-    <a href="http://www.gnu.org/software/make/manual/make.html#Target_002dspecific">link to the make documentation</a> 
-    describes more about target-specific variables.
-    </li> 
-    <li><b>HOST_</b> and <b>TARGET_</b> - These contain the directories
-    and definitions that are specific to either the host or the target builds.
-    Do not set variables that start with HOST_ or TARGET_ in your makefiles.
-    </li> 
-    <li><b>BUILD_</b> and <b>CLEAR_VARS</b> - These contain the names of
-    well-defined template makefiles to include.  Some examples are CLEAR_VARS
-    and BUILD_HOST_PACKAGE.</li> 
-    <li>Any other name is fair-game for you to use in your Android.mk.  However,
-    remember that this is a non-recursive build system, so it is possible that
-    your variable will be changed by another Android.mk included later, and be
-    different when the commands for your rule / module are executed.</li> 
-</ul>
-
-<table border=1 cellpadding=2 cellspacing=0>
- <tbody><tr>
-  <th scope="col">Parameter</th>
-  <th scope="col">Description</th>
- </tr>
-<tr>
-<td valign="top">LOCAL_AAPT_FLAGS</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_ACP_UNAVAILABLE</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_ADDITIONAL_JAVA_DIR</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_AIDL_INCLUDES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_ALLOW_UNDEFINED_SYMBOLS</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_ARM_MODE</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_ASFLAGS</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_ASSET_DIR</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_ASSET_FILES</td>
-<td valign="top">In Android.mk files that <code>include $(BUILD_PACKAGE)</code> set this
-to the set of files you want built into your app.  Usually:</p> 
-<p><code>LOCAL_ASSET_FILES += $(call find-subdir-assets)</code></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_BUILT_MODULE_STEM</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_C_INCLUDES</td>
-<td valign="top"><p>Additional directories to instruct the C/C++ compilers to look for header
-files in.  These paths are rooted at the top of the tree.  Use
-<code>LOCAL_PATH</code> if you have subdirectories of your own that you
-want in the include paths.  For example:</p> 
-<p><code> 
-LOCAL_C_INCLUDES += extlibs/zlib-1.2.3<br/> 
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/src
-</code></p> 
-<p>You should not add subdirectories of include to
-<code>LOCAL_C_INCLUDES</code>, instead you should reference those files
-in the <code>#include</code> statement with their subdirectories.  For
-example:</p> 
-<p><code>#include &lt;utils/KeyedVector.h&gt;</code><br/> 
-not <code><s>#include &lt;KeyedVector.h&gt;</s></code></p> </td>
-</tr>
-<tr>
-<td valign="top">LOCAL_CC</td>
-<td valign="top">If you want to use a different C compiler for this module, set LOCAL_CC
-to the path to the compiler.  If LOCAL_CC is blank, the appropriate default
-compiler is used.</td>
-</tr>
-<tr>
-<td valign="top">LOCAL_CERTIFICATE</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_CFLAGS</td>
-<td valign="top">If you have additional flags to pass into the C or C++ compiler, add
-them here.  For example:</p> 
-<p><code>LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1</code></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_CLASSPATH</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_COMPRESS_MODULE_SYMBOLS</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_COPY_HEADERS</td>
-<td valign="top"><p>The set of files to copy to the install include tree.  You must also
-supply <code>LOCAL_COPY_HEADERS_TO</code>.</p> 
-<p>This is going away because copying headers messes up the error messages, and
-may lead to people editing those headers instead of the correct ones.  It also
-makes it easier to do bad layering in the system, which we want to avoid.  We
-also aren't doing a C/C++ SDK, so there is no ultimate requirement to copy any
-headers.</p></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_COPY_HEADERS_TO</td>
-<td valign="top"><p>The directory within "include" to copy the headers listed in
-<code>LOCAL_COPY_HEADERS</code> to.</p> 
-<p>This is going away because copying headers messes up the error messages, and
-may lead to people editing those headers instead of the correct ones.  It also
-makes it easier to do bad layering in the system, which we want to avoid.  We
-also aren't doing a C/C++ SDK, so there is no ultimate requirement to copy any
-headers.</p></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_CPP_EXTENSION</td>
-<td valign="top">If your C++ files end in something other than "<code>.cpp</code>",
-you can specify the custom extension here.  For example:
-<p><code>LOCAL_CPP_EXTENSION := .cc</code></p> 
-Note that all C++ files for a given module must have the same
-extension; it is not currently possible to mix different extensions.</td>
-</tr>
-<tr>
-<td valign="top">LOCAL_CPPFLAGS</td>
-<td valign="top">If you have additional flags to pass into <i>only</i> the C++ compiler, add
-them here.  For example:</p> 
-<p><code>LOCAL_CPPFLAGS += -ffriend-injection</code></p> 
-<code>LOCAL_CPPFLAGS</code> is guaranteed to be after <code>LOCAL_CFLAGS</code> 
-on the compile line, so you can use it to override flags listed in
-<code>LOCAL_CFLAGS</code></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_CXX</td>
-<td valign="top">If you want to use a different C++ compiler for this module, set LOCAL_CXX
-to the path to the compiler.  If LOCAL_CXX is blank, the appropriate default
-compiler is used.</td>
-</tr>
-<tr>
-<td valign="top">LOCAL_DX_FLAGS</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_EXPORT_PACKAGE_RESOURCES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_FORCE_STATIC_EXECUTABLE</td>
-<td valign="top"><p>If your executable should be linked statically, set 
-<code>LOCAL_FORCE_STATIC_EXECUTABLE:=true</code>.  There is a very short
-list of libraries that we have in static form (currently only libc).  This is
-really only used for executables in /sbin on the root filesystem.</p> </td>
-</tr>
-<tr>
-<td valign="top">LOCAL_GENERATED_SOURCES</td>
-<td valign="top"><p>Files that you add to <code>LOCAL_GENERATED_SOURCES</code> will be
-automatically generated and then linked in when your module is built.
-See the <a href="#custom-tools">Custom Tools</a> template makefile for an
-example.</p> </td>
-</tr>
-<tr>
-<td valign="top">LOCAL_INSTRUMENTATION_FOR</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_INSTRUMENTATION_FOR_PACKAGE_NAME</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_INTERMEDIATE_SOURCES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_INTERMEDIATE_TARGETS</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_IS_HOST_MODULE</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_JAR_MANIFEST</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_JARJAR_RULES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_JAVA_LIBRARIES</td>
-<td valign="top"><p>When linking Java apps and libraries, <code>LOCAL_JAVA_LIBRARIES</code> 
-specifies which sets of java classes to include.  Currently there are
-two of these: <code>core</code> and <code>framework</code>.
-In most cases, it will look like this:</p> 
-<p><code>LOCAL_JAVA_LIBRARIES := core framework</code></p> 
-<p>Note that setting <code>LOCAL_JAVA_LIBRARIES</code> is not necessary
-(and is not allowed) when building an APK with
-"<code>include $(BUILD_PACKAGE)</code>".  The appropriate libraries
-will be included automatically.</p> </td>
-</tr>
-<tr>
-<td valign="top">LOCAL_JAVA_RESOURCE_DIRS</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_JAVA_RESOURCE_FILES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_JNI_SHARED_LIBRARIES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_LDFLAGS</td>
-<td valign="top"><p>You can pass additional flags to the linker by setting
-<code>LOCAL_LDFLAGS</code>.  Keep in mind that the order of parameters is
-very important to ld, so test whatever you do on all platforms.</p> </td>
-</tr>
-<tr>
-<td valign="top">LOCAL_LDLIBS</td>
-<td valign="top"><p><code>LOCAL_LDLIBS</code> allows you to specify additional libraries
-that are not part of the build for your executable or library.  Specify
-the libraries you want in -lxxx format; they're passed directly to the 
-link line.  However, keep in mind that there will be no dependency generated
-for these libraries.  It's most useful in simulator builds where you want
-to use a library preinstalled on the host.  The linker (ld) is a particularly
-fussy beast, so it's sometimes necessary to pass other flags here if you're
-doing something sneaky. Some examples:</p> 
-<p><code>LOCAL_LDLIBS += -lcurses -lpthread<br/> 
-LOCAL_LDLIBS += -Wl,-z,origin
-</code></p> </td>
-</tr>
-<tr>
-<td valign="top">LOCAL_MODULE</td>
-<td valign="top"><code>LOCAL_MODULE</code> is the name of what's supposed to be generated
-from your Android.mk.  For exmample, for libkjs, the <code>LOCAL_MODULE</code> 
-is "libkjs" (the build system adds the appropriate suffix -- .so .dylib .dll).
-For app modules, use <code>LOCAL_PACKAGE_NAME</code> instead of 
-<code>LOCAL_MODULE</code>. </td>
-</tr>
-<tr>
-<td valign="top">LOCAL_MODULE_PATH</td>
-<td valign="top">Instructs the build system to put the module somewhere other than what's
-normal for its type.  If you override this, make sure you also set
-<code>LOCAL_UNSTRIPPED_PATH</code> if it's an executable or a shared library
-so the unstripped binary has somewhere to go.  An error will occur if you forget
-to.</p> 
-<p>See <a href="#moving-modules">Putting modules elsewhere</a> for more.</td>
-</tr>
-<tr>
-<td valign="top">LOCAL_MODULE_STEM</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_MODULE_TAGS</td>
-<td valign="top"><p>Set <code>LOCAL_MODULE_TAGS</code> to any number of whitespace-separated
-tags.  <p>This variable controls what build flavors the package gets included in. For example:</p>
-<ul type="disc">
-  <li><code>user</code>: include this in user/userdebug builds</li>
-  <li><code>eng</code>: include this in eng builds</li>
-  <li><code>tests</code>: the target is a testing target and makes it available for tests</li>
-  <li><code>optional</code>: don't include this</li>
-</ul></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_NO_DEFAULT_COMPILER_FLAGS</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_NO_EMMA_COMPILE</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_NO_EMMA_INSTRUMENT</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_NO_STANDARD_LIBRARIES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_OVERRIDES_PACKAGES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_PACKAGE_NAME</td>
-<td valign="top"><code>LOCAL_PACKAGE_NAME</code> is the name of an app.  For example,
-Dialer, Contacts, etc. </td>
-</tr>
-<tr>
-<td valign="top">LOCAL_POST_PROCESS_COMMAND</td>
-<td valign="top"><p>For host executables, you can specify a command to run on the module
-after it's been linked.  You might have to go through some contortions
-to get variables right because of early or late variable evaluation:</p> 
-<p><code>module := $(HOST_OUT_EXECUTABLES)/$(LOCAL_MODULE)<br/> 
-LOCAL_POST_PROCESS_COMMAND := /Developer/Tools/Rez -d __DARWIN__ -t APPL\<br/> 
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-d __WXMAC__ -o $(module) Carbon.r
-</code></p> 
- </td>
-</tr>
-<tr>
-<td valign="top">LOCAL_PREBUILT_EXECUTABLES</td>
-<td valign="top">When including $(BUILD_PREBUILT) or $(BUILD_HOST_PREBUILT), set these to
-executables that you want copied.  They're located automatically into the
-right bin directory.</td>
-</tr>
-<tr>
-<td valign="top">LOCAL_PREBUILT_JAVA_LIBRARIES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_PREBUILT_LIBS</td>
-<td valign="top">When including $(BUILD_PREBUILT) or $(BUILD_HOST_PREBUILT), set these to
-libraries that you want copied.  They're located automatically into the
-right lib directory.</td>
-</tr>
-<tr>
-<td valign="top">LOCAL_PREBUILT_OBJ_FILES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_PRELINK_MODULE</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_REQUIRED_MODULES</td>
-<td valign="top"><p>Set <code>LOCAL_REQUIRED_MODULES</code> to any number of whitespace-separated
-module names, like "libblah" or "Email".  If this module is installed, all
-of the modules that it requires will be installed as well.  This can be
-used to, e.g., ensure that necessary shared libraries or providers are
-installed when a given app is installed.</td>
-</tr>
-<tr>
-<td valign="top">LOCAL_RESOURCE_DIR</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_SDK_VERSION</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_SHARED_LIBRARIES</td>
-<td valign="top">These are the libraries you directly link against.  You don't need to
-pass transitively included libraries.  Specify the name without the suffix:</p> 
-<p><code>LOCAL_SHARED_LIBRARIES := \<br/> 
-	&nbsp;&nbsp;&nbsp;&nbsp;libutils \<br/> 
-	&nbsp;&nbsp;&nbsp;&nbsp;libui \<br/> 
-	&nbsp;&nbsp;&nbsp;&nbsp;libaudio \<br/> 
-	&nbsp;&nbsp;&nbsp;&nbsp;libexpat \<br/> 
-	&nbsp;&nbsp;&nbsp;&nbsp;libsgl
-</code></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_SRC_FILES</td>
-<td valign="top">The build system looks at <code>LOCAL_SRC_FILES</code> to know what source
-files to compile -- .cpp .c .y .l .java.  For lex and yacc files, it knows
-how to correctly do the intermediate .h and .c/.cpp files automatically.  If
-the files are in a subdirectory of the one containing the Android.mk, prefix
-them with the directory name:</p> 
-<p><code>LOCAL_SRC_FILES := \<br/> 
-	&nbsp;&nbsp;&nbsp;&nbsp;file1.cpp \<br/> 
-	&nbsp;&nbsp;&nbsp;&nbsp;dir/file2.cpp
-</code></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_STATIC_JAVA_LIBRARIES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_STATIC_LIBRARIES</td>
-<td valign="top">These are the static libraries that you want to include in your module.
-Mostly, we use shared libraries, but there are a couple of places, like
-executables in sbin and host executables where we use static libraries instead.
-<p><code>LOCAL_STATIC_LIBRARIES := \<br/> 
-	&nbsp;&nbsp;&nbsp;&nbsp;libutils \<br/> 
-	&nbsp;&nbsp;&nbsp;&nbsp;libtinyxml
-</code></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_UNINSTALLABLE_MODULE</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_UNSTRIPPED_PATH</td>
-<td valign="top">Instructs the build system to put the unstripped version of the module
-somewhere other than what's normal for its type.  Usually, you override this
-because you overrode <code>LOCAL_MODULE_PATH</code> for an executable or a
-shared library.  If you overrode <code>LOCAL_MODULE_PATH</code>, but not 
-<code>LOCAL_UNSTRIPPED_PATH</code>, an error will occur.</p> 
-<p>See <a href="#moving-modules">Putting modules elsewhere</a> for more.</td>
-</tr>
-<tr>
-<td valign="top">LOCAL_WHOLE_STATIC_LIBRARIES</td>
-<td valign="top">These are the static libraries that you want to include in your module without allowing
-the linker to remove dead code from them. This is mostly useful if you want to add a static library
-to a shared library and have the static library's content exposed from the shared library.
-<p><code>LOCAL_WHOLE_STATIC_LIBRARIES := \<br/> 
-	&nbsp;&nbsp;&nbsp;&nbsp;libsqlite3_android<br/> 
-</code></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_YACCFLAGS</td>
-<td valign="top">Any flags to pass to invocations of yacc for your module.  A known limitation
-here is that the flags will be the same for all invocations of YACC for your
-module.  This can be fixed.  If you ever need it to be, just ask.</p> 
-<p><code>LOCAL_YACCFLAGS := -p kjsyy</code></td>
-</tr>
-<tr>
-<td valign="top">OVERRIDE_BUILT_MODULE_PATH</td>
-<td valign="top"></td>
-</tr>
-
-</table>
diff --git a/pdk/docs/guide/build_new_device.jd b/pdk/docs/guide/build_new_device.jd
deleted file mode 100755
index 28e7c2e..0000000
--- a/pdk/docs/guide/build_new_device.jd
+++ /dev/null
@@ -1,242 +0,0 @@
-page.title=Configuring a New Product
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidOHDPortingDeviceBuildingProcess">Detailed Instructions</a></li>
-<li><a href="#androidBuildNewFileTree">New Product File Tree</a></li>
-<li><a href="#androidBuildSystemProductDefFiles">Product Definition Files</a></li>
-</ul>
-</div>
-</div>
-
-
-<a name="androidOHDPortingDeviceBuildingProcess"></a><h3>Detailed Instructions</h3>
-
-<p>The steps below describe how to configure makefiles for new mobile devices and products running Android.</p>
-<ol>
-  <li>Create a company directory in <code>//vendor/</code>.<br/>
-  <pre class="prettyprint">
-  mkdir vendor/&lt;company_name&gt;</pre></li>
-  <li>Create a <code>products</code> directory beneath the company directory you created in step 1.<BR>
-  <pre class="prettyprint">
-  mkdir vendor/&lt;company_name&gt;/products/</pre></li>
-  <li>Create a product-specific makefile, called <code>vendor/&lt;company_name&gt;/products/&lt;first_product_name&gt;.mk</code>, that includes at least the following code:<BR>
-    <pre class="prettyprint">
-  $(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk)
-  #
-  # Overrides
-  PRODUCT_NAME := &lt;first_product_name&gt;
-  PRODUCT_DEVICE := &lt;board_name&gt;</pre>
-  <li>
-  Additional product-specific variables can be added to this <a href="#androidBuildSystemProductDefFiles">Product Definition</a> 
-file.
-  </li>
-  <li>In the <code>products</code> directory, create an <code>AndroidProducts.mk</code> file that point to (and is responsible for finding) the individual product make files.<BR>
-  <pre class="prettyprint">
-  #
-  # This file should set PRODUCT_MAKEFILES to a list of product makefiles
-  # to expose to the build system.  LOCAL_DIR will already be set to
-  # the directory containing this file. 
-  #
-  # This file may not rely on the value of any variable other than
-  # LOCAL_DIR; do not use any conditionals, and do not look up the
-  # value of any variable that isn't set in this file or in a file that
-  # it includes.
-  #
-  
-  PRODUCT_MAKEFILES := \
-    $(LOCAL_DIR)/first_product_name.mk \</pre></li>
-  <li>Create a board-specific directory beneath your company directory that matches the <code>PRODUCT_DEVICE</code> variable <code>&lt;board_name&gt;</code> referenced in the product-specific make file above. This will include a make file that gets accessed by any product using this board.<BR>
-  <pre class="prettyprint">
-  mkdir vendor/&lt;company_name&gt;/&lt;board_name&gt;</pre></li>
-    <li>Create a <code>BoardConfig.mk</code> file in the directory created in the previous step (<code>vendor/&lt;company_name&gt;/&lt;board_name&gt;</code>). <BR>
-  <pre class="prettyprint">
-  # These definitions override the defaults in config/config.make for &lt;board_name&gt;
-  #
-  # TARGET_NO_BOOTLOADER := false
-  # TARGET_HARDWARE_3D := false 
-  #
-  TARGET_USE_GENERIC_AUDIO := true</pre></li>  
-  <li>If you wish to modify system properties, create a <code>system.prop</code> file in your <code>&lt;board_name&gt;</code> directory(<code>vendor/&lt;company_name&gt;/&lt;board_name&gt;</code>).<BR>
-  <pre class="prettyprint">
-  # system.prop for <board_name>
-  # This overrides settings in the products/generic/system.prop file
-  #
-  # rild.libpath=/system/lib/libreference-ril.so
-  # rild.libargs=-d /dev/ttyS0</pre></li>   
-  <li>Add a pointer to <code>&lt;second_product_name&gt;.mk</code> within <code>products/AndroidProducts.mk</code>.<BR>
-  <pre class="prettypring">
-  PRODUCT_MAKEFILES := \
-    $(LOCAL_DIR)/first_product_name.mk \
-    $(LOCAL_DIR)/second_product_name.mk</pre></li>
-  <li>An <code>Android.mk</code> file must be included in <code>vendor/&lt;company_name&gt;/&lt;board_name&gt;</code> with at least the following code:<BR>
-  <pre class="prettyprint">
-  # make file for new hardware <board_name> from <company_name>
-  #
-  LOCAL_PATH := $(call my-dir)
-  #
-  # this is here to use the pre-built kernel
-  ifeq ($(TARGET_PREBUILT_KERNEL),)
-  TARGET_PREBUILT_KERNEL := $(LOCAL_PATH)/kernel
-  endif
-  #
-  file := $(INSTALLED_KERNEL_TARGET)
-  ALL_PREBUILT += $(file)
-  $(file): $(TARGET_PREBUILT_KERNEL) | $(ACP)
-		$(transform-prebuilt-to-target)
-  #
-  # no boot loader, so we don't need any of that stuff..  
-  #
-  LOCAL_PATH := vendor/&lt;company_name&gt;/&lt;board_name&gt;
-  #
-  include $(CLEAR_VARS)
-  #
-  # include more board specific stuff here? Such as Audio parameters.      
-  #</pre>
-
-  </li>
-<li>To create a second product for the same board, create a second product-specific make file called <code>vendor/company_name/products/&lt;second_product_name&gt;.mk</code> that includes:<BR>
-<pre class="prettyprint">
-  $(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk)
-  #
-  # Overrides
-  PRODUCT_NAME := &lt;second_product_name&gt;
-  PRODUCT_DEVICE := &lt;board_name&gt;</pre></li>   	
-</ol>
-<p>By now, you should have two new products, called <code>&lt;first_product_name&gt;</code> and <code>&lt;second_product_name&gt;</code> associated with <code>&lt;company_name&gt;</code>. To verify that a product is properly configured (<code>&lt;first_product_name&gt;</code>, for example), execute the following:<BR>
-<pre class="prettyprint">
-  . build/envsetup.sh
-  make PRODUCT-&lt;first_product_name&gt;-user
-</pre>
-<p>You should find new build binaries located in <code>/out/target/product/&lt;board_name&gt;</code>.
-
-
-<a name="androidBuildNewFileTree"></a><h3>New Product File Tree</h3>
-
-<p>The file tree below illustrates what your own system should look like after completing the steps above.</p>
-<p>
-<ul>
-  <li><code>&lt;company_name&gt;</code></li>
-  <ul>
-    <li><code>&lt;board_name&gt;</code></li>
-    <ul>
-      <li><code>Android.mk</code></li>
-      <li><code>product_config.mk</code></li>
-      <li><code>system.prop</code></li>
-    </ul>
-    <li><code>products</code></li>
-    <ul>
-      <li><code>AndroidProducts.mk</code></li>
-      <li><code>&lt;first_product_name&gt;.mk</code></li>
-      <li><code>&lt;second_product_name&gt;.mk</code></li>
-    </ul>
-  </ul>
-</ul>
-</p>
-
-<a name="androidBuildSystemProductDefFiles"></a><h3>Product Definition Files</h3>
-
-<p>Product-specific variables are defined in product definition files. A product definition file can inherit from other product definition files, thus reducing the need to copy and simplifying maintenance.</p>
-<p>Variables maintained in a product definition files include:</p>
-<p>
-<table border=1 cellpadding=2 cellspacing=0>
- <tbody><tr>
-  <th scope="col">Parameter</th>
-  <th scope="col">Description</th>
-  <th scope="col">Example</th>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_NAME</td>
-   <td valign="top">End-user-visible name for the overall product. Appears in the "About the phone" info.</td>
-   <td valign="top"></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_MODEL</td>
-   <td valign="top">End-user-visible name for the end product</td>
-   <td valign="top"></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_LOCALES</td>
-   <td valign="top">A space-separated list of two-letter language code, two-letter country code pairs that describe several settings for the user, such as the UI language and time, date and currency formatting. The first locale listed in PRODUCT_LOCALES is is used if the locale has never been set before.</td>
-   <td valign="top"><code>en_GB de_DE es_ES fr_CA</code></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_PACKAGES</td>
-   <td valign="top">Lists the APKs to install.</td>
-   <td valign="top"><code>Calendar Contacts</code></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_DEVICE</td>
-   <td valign="top">Name of the industrial design</td>
-   <td valign="top"><code>dream</code></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_MANUFACTURER</td>
-   <td valign="top">Name of the manufacturer</td>
-   <td valign="top"><code>acme</code></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_BRAND</td>
-   <td valign="top">The brand (e.g., carrier) the software is customized for, if any</td>
-   <td valign="top"></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_PROPERTY_OVERRIDES</td>
-   <td valign="top">List of property assignments in the format "key=value"</td>
-   <td valign="top"></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_COPY_FILES</td>
-   <td valign="top">List of words like <code>source_path:destination_path</code>. The file at the source path should be copied to the destination path when building this product. The rules for the copy steps are defined in config/Makefile</td>
-   <td valign="top"></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_OTA_PUBLIC_KEYS</td>
-   <td valign="top">List of OTA public keys for the product</td>
-   <td valign="top"></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_POLICY</td>
-   <td valign="top">Indicate which policy this product should use</td>
-   <td valign="top"></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_PACKAGE_OVERLAYS</td>
-   <td valign="top">Indicate whether to use default resources or add any product specific overlays</td>
-   <td valign="top"><code>vendor/acme/overlay</code></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_CONTRIBUTORS_FILE</td>
-   <td valign="top">HTML file containing the contributors to the project.</td>
-   <td valign="top"></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_TAGS</td>
-   <td valign="top">list of space-separated words for a given product</td>
-   <td valign="top"></td>
- </tr>
-</table>
-
-</P>
-<p>The snippet below illustrates a typical product definition file.</p>
-<pre class="prettyprint">
-$(call inherit-product, build/target/product/generic.mk)
-
-#Overrides
-PRODUCT_NAME := MyDevice
-PRODUCT_MANUFACTURER := acme
-PRODUCT_BRAND := acme_us
-PRODUCT_LOCALES := en_GB es_ES fr_FR
-PRODUCT_PACKAGE_OVERLAYS := vendor/acme/overlay
-
-</pre>
-
-
diff --git a/pdk/docs/guide/build_system.jd b/pdk/docs/guide/build_system.jd
deleted file mode 100755
index fd0ff80..0000000
--- a/pdk/docs/guide/build_system.jd
+++ /dev/null
@@ -1,270 +0,0 @@
-page.title=Android Build System
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidBuildSystemOverview">Understanding the makefile</a></li>
-<li><a href="#androidBuildSystemLayers">Layers</a></li>
-<li><a href="#androidSourceSetupBuildingCodeBase">Building the Android Platform</a></li>
-<li><a href="#androidSourceSetupBuildingKernel">Building the Android Kernel</a></li>
-<li><a href="#androidBuildVariants">Build Variants</a></li>
-</ul>
-</div>
-</div>
-
-<p>Android uses a custom build system to generate tools, binaries, and documentation. This document provides an overview of Android's build system and instructions for doing a simple build. </p>
-<p>Android's build system is make based and requires a recent version of GNU Make (note that Android uses advanced features of GNU Make that may not yet appear on the GNU Make web site). Before continuing, check your version of make by running <code>% make -v</code>. If you don't have version 3.80 or greater, you need to <a href="http://www.gnu.org/software/make/">upgrade your version of make</a>. </p>
-
-
-
-
-<a name="androidBuildSystemOverview"></a><h4>Understanding the makefile</h4>
-
-<p>A makefile defines how to build a particular application. Makefiles typically include all of the following elements:</p>
-<ol>
-  <li>Name: Give your build a name (<code>LOCAL_MODULE := &lt;build_name&gt;</code>).</li>
-  <li>Local Variables: Clear local variables with CLEAR_VARS  (<code>include $(CLEAR_VARS)</code>).</li>
-  <li>Files: Determine which files your application depends upon (<code>LOCAL_SRC_FILES := main.c</code>).</li>
-  <li>Tags: Define tags, as necessary (<code>LOCAL_MODULE_TAGS := eng development</code>).</li>
-  <li>Libraries: Define whether your application links with other libraries (<code>LOCAL_SHARED_LIBRARIES := cutils</code>).</li>
-  <li>Template file: Include a template file to define underlining make tools for a particular target (<code>include $(BUILD_EXECUTABLE)</code>).</li>
-</ol>
-
-<p>The following snippet illustrates a typical makefile.</p>
-<pre class="prettyprint">
-LOCAL_PATH := $(my-dir)
-include $(CLEAR_VARS)
-LOCAL_MODULE := &lt;buil_name&gt;
-LOCAL_SRC_FILES := main.c
-LOCAL_MODULE_TAGS := eng development
-LOCAL_SHARED_LIBRARIES := cutils
-include $(BUILD_EXECUTABLE)
-(HOST_)EXECUTABLE, (HOST_)JAVA_LIBRARY, (HOST_)PREBUILT, (HOST_)SHARED_LIBRARY,
-  (HOST_)STATIC_LIBRARY, PACKAGE, JAVADOC, RAW_EXECUTABLE, RAW_STATIC_LIBRARY,
-  COPY_HEADERS, KEY_CHAR_MAP
-</pre>
-<p>The snippet above includes artificial line breaks to maintain a print-friendly document.</p>
-
-
-<a name="androidBuildSystemLayers"></a><h4>Layers</h4>
-
-<p>The build hierarchy includes the abstraction layers described in the table below.</p>
-
-<p>Each layer relates to the one above it in a one-to-many relationship. For example, an arch can have more than one board and each board can have more than one device. You may define an element in a given layer as a specialization of an element in the same layer, thus eliminating copying and simplifying maintenance.</p>
- 
-<table border=1 cellpadding=2 cellspacing=0>
- <tbody><tr>
-  <th scope="col">Layer</th>
-  <th  scope="col">Example</th>
-  <th  scope="col">Description</th>
- </tr>
-  <tr>
-    <td valign="top">Product</td>
-    <td valign="top">myProduct, myProduct_eu, myProduct_eu_fr, j2, sdk</td>
-    <td valign="top">The product layer defines a complete specification of a shipping product, defining which modules to build and how to configure them. You might offer a device in several different versions based on locale, for example, or on features such as a camera. </td>
-  </tr>
-  <tr>
-    <td valign="top">Device</td>
-    <td valign="top">myDevice, myDevice_eu, myDevice_eu_lite</td>
-    <td valign="top">The device layer represents the physical layer of plastic on the device. For example, North American devices probably include QWERTY keyboards whereas devices sold in France probably include AZERTY keyboards. Peripherals typically connect to the device layer. </td>
-  </tr>
-  <tr>
-    <td valign="top">Board</td>
-    <td valign="top">sardine, trout, goldfish </td>
-    <td valign="top">The board layer represents the bare schematics of a product. You may still connect peripherals to the board layer. </td>
-  </tr>
-  <tr>
-    <td valign="top">Arch</td>
-    <td valign="top">arm (arm5te) (arm6), x86, 68k </td>
-    <td valign="top">The arch layer describes the processor running on your board. </td>
-  </tr>
-</table>
-
-<a name="androidSourceSetupBuildingCodeBase"></a><h3>Building the Android Platform</h3>
-
-<p>This section describes how to build the default version of Android. Once you are comfortable with a generic build, then you can begin to modify Android for your own target device.</p>
-
-
-<a name="androidSourceSetupBuildingDeviceCodeBase"></a><h4>Device Code</h4>
-
-<p>To do a generic build of android, source <code>build/envsetup.sh</code>, which contains necessary variable and function definitions, as described below.</p>
-<pre class="prettyprint">
-% cd $TOP
-
-% . build/envsetup.sh
-
-# pick a configuration using choosecombo
-% choosecombo
-
-% make -j4 PRODUCT-generic-user
-</pre>
-<p>You can also replace user with eng for a debug engineering build:</p>
-
-<pre class="prettyprint">
-% make -j4 PRODUCT-generic-eng
-</pre>
-
-<p>These <a href="#androidBuildVariants">Build Variants</a> differ in terms of debug options and packages installed. 
- 
-
-<a name="androidBuildingCleaning"></a><h4>Cleaning Up</h4>
-
-<p>Execute <code>% m clean</code> to clean up the binaries you just created. You can also execute <code>% m clobber</code> to get rid of the binaries of all combos. <code>% m clobber</code> is equivalent to removing the <code>//out/</code> directory where all generated files are stored.</p>
-
-
-<a name="androidBuildingSpeeding"></a><h4>Speeding Up Rebuilds</h4>
-
-<p> The binaries of each combo are stored as distinct sub-directories of <code>//out/</code>, making it possible to quickly switch between combos without having to recompile all sources each time. </p>
-<p> However, performing a clean rebuild is necessary if the build system doesn't catch changes to environment variables or makefiles. If this happens often, you should define the <code>USE_CCACHE</code> environment variable as shown below: </p>
-<pre class="prettyprint">
-% export USE_CCACHE=1
-</pre>
-<p>Doing so will force the build system to use the ccache compiler cache tool, which reduces recompiling all sources.</p>
-
-<p><code>ccache</code> binaries are provided in <code>//prebuilt/...</code> and don't need to get installed on your system.</p>
-
-
-<a name="androidBuildingTroubleshooting"></a><h4>Troubleshooting</h4>
-
-<p>The following error is likely caused by running an outdated version of Java.</p>
-<pre class="prettyprint">
-device Dex: core  UNEXPECTED TOP-LEVEL ERROR:
-java.lang.NoSuchMethodError: method java.util.Arrays.hashCode with
-signature ([Ljava.lang.Object;)I was not found.
-  at com.google.util.FixedSizeList.hashCode(FixedSizeList.java:66)
-  at com.google.rop.code.Rop.hashCode(Rop.java:245)
-  at java.util.HashMap.hash(libgcj.so.7)
-[...]
-</pre>
-<p><code>dx</code> is a Java program that uses facilities first made available in Java version 1.5. Check your version of Java by executing <code>% java -version</code> in the shell you use to build. You should see something like:</p>
-<pre class="prettyprint">
-java version "1.5.0_07"
-Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-164)
-Java HotSpot(TM) Client VM (build 1.5.0_07-87, mixed mode, sharing)
-</pre>
-<p>If you do have Java 1.5 or later and your receive this error, verify that you have properly updated your <code>PATH</code> variable.</p>
-
-
-<a name="androidSourceSetupBuildingKernel"></a><h3>Building the Android Kernel</h3>
-
-<p>This section describes how to build Android's default kernel. Once you are comfortable with a generic build, then you can begin to modify Android drivers for your own target device.</p>
-
-
-<p>To build the kernel base, switch to the device directory (<code>/home/joe/android/device</code>) in order to establish variables and run:
-<pre class="prettyprint">
-% . build/envsetup.sh
-% partner_setup generic
-</pre>
-<p>Then switch to the kernel directory <code>/home/joe/android/kernel</code>.
-
-
-<a name="androidSourceSetupBuildingKernelCheckingBranch"></a><h4>Checking Out a Branch</h4>
-
-<p>The default branch is always <code>android</code>. To check out a different branch, execute the following:</p>
-
-<pre class="prettyprint">
-% git checkout --track -b android-mydevice origin/android-mydevice
-  //Branch android-mydevice set up to track remote branch
-% refs/remotes/origin/android-mydevice.
-  //Switched to a new branch "android-mydevice"
-</pre>
-
-<p>To simplify code management, give your local branch the same name as the remote branch it is tracking (as illustrated in the snippet above). Switch between branches by executing <code>% git checkout &lt;branchname&gt;</code>.</p>
-
-
-<a name="androidSourceSetupBuildingKernelBranchLocation"></a><h4>Verifying Location</h4>
-
-<p>Find out which branches exist (both locally and remotely) and which one is active (marked with an asterisk) by executing the following:</p>
-<pre class="prettyprint">
-% git branch -a
-  android
-* android-mydevice
-  origin/HEAD
-  origin/android
-  origin/android-mydevice
-  origin/android-mychipset
-</pre>
-<p>To only see local branches, omit the <code>-a</code> flag.</p> 
-
-
-<a name="androidSourceSetupBuildingKernelBuild"></a><h4>Building the Kernel</h4>
-
-<p>To build the kernel, execute:</p>
-<pre class="prettyprint">
-% make -j4
-</pre>
-
-<a name="androidBuildVariants"></a><h3>Build Variants</h3>
-
-<p> 
-When building for a particular product, it's often useful to have minor
-variations on what is ultimately the final release build.  These are the
-currently-defined build variants:
-</p> 
- 
-<table border=1> 
-<tr> 
-    <td> 
-        <code>eng<code> 
-    </td> 
-    <td> 
-        This is the default flavor. A plain <code>make</code> is the
-        same as <code>make eng</code>.
-        <ul> 
-        <li>Installs modules tagged with: <code>eng</code>, <code>debug</code>,
-            <code>user</code>, and/or <code>development</code>.
-        <li>Installs non-APK modules that have no tags specified.
-        <li>Installs APKs according to the product definition files, in
-            addition to tagged APKs.
-        <li><code>ro.secure=0</code> 
-        <li><code>ro.debuggable=1</code> 
-        <li><code>ro.kernel.android.checkjni=1</code> 
-        <li><code>adb</code> is enabled by default.
-    </td> 
-</tr> 
-<tr> 
-    <td> 
-        <code>user<code> 
-    </td> 
-    <td> 
-        <code>make user</code>
-        <p> 
-        This is the flavor intended to be the final release bits.
-        <ul> 
-        <li>Installs modules tagged with <code>user</code>.</li>
-        <li>Installs non-APK modules that have no tags specified.</li>
-        <li>Installs APKs according to the product definition files; tags
-            are ignored for APK modules.</li>
-        <li><code>ro.secure=1</code> </li>
-        <li><code>ro.debuggable=0</code> </li>
-        <li><code>adb</code> is disabled by default.</li>
-    </td> 
-</tr> 
-<tr> 
-    <td> 
-        <code>userdebug<code> 
-    </td> 
-    <td> 
-        <code>make userdebug</code>
-        <p> 
-        The same as <code>user</code>, except:
-        <ul> 
-        <li>Also installs modules tagged with <code>debug</code>.
-        <li><code>ro.debuggable=1</code> 
-        <li><code>adb</code> is enabled by default.
-    </td> 
-</tr> 
-</table> 
- 
-<p> 
-If you build one flavor and then want to build another, you should run
-<code>make installclean</code> between the two makes to guarantee that
-you don't pick up files installed by the previous flavor.  <code>make
-clean</code> will also suffice, but it takes a lot longer.
-</p> 
diff --git a/pdk/docs/guide/camera.jd b/pdk/docs/guide/camera.jd
deleted file mode 100755
index 98636d8..0000000
--- a/pdk/docs/guide/camera.jd
+++ /dev/null
@@ -1,76 +0,0 @@
-page.title=Camera
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidCameraBuildingDriver">Building a Camera Library</a></li>
-<li><a href="#androidCameraSequenceDiagrams">Sequence Diagrams</a></li>
-<li><a href="#androidCameraInterfaceIntro">Interface</a></li>
-</ul>
-</div>
-</div>
-
-<p>Android's camera subsystem connects the camera application to the application framework and user space libraries, which in turn communicate with the camera hardware layer that operates the physical camera.</p>
-<p>The diagram below illustrates the structure of the camera subsystem.</p>
-<p><img src="images/camera_video2.gif"></p>
-
-
-<a name="androidCameraBuildingDriver"></a><h3>Building a Camera Library</h3>
-
-<p>To implement a camera driver, create a shared library that implements the interface defined in <code>CameraHardwareInterface.h</code>. You must name your shared library <code>libcamera.so</code> so that it will get loaded from <code>/system/lib</code> at runtime.  Place libcamera sources and <code>Android.mk</code> in <code>vendor/acme/chipset_or_board/libcamera/</code>.</p>
-<p>The following stub <code>Android.mk</code> file ensures that <code>libcamera</code> compiles and links to the appropriate libraries:</p>
-<pre class="prettify">
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libcamera
-
-LOCAL_SHARED_LIBRARIES := \
-    libutils \
-    librpc \
-    liblog
-
-LOCAL_SRC_FILES += MyCameraHardware.cpp
-
-LOCAL_CFLAGS +=
-
-LOCAL_C_INCLUDES +=
-
-LOCAL_STATIC_LIBRARIES += \
-    libcamera-common \
-    libclock-rpc \
-    libcommondefs-rpc
-
-include $(BUILD_SHARED_LIBRARY)
-</pre>
-
-
-<a name="androidCameraSequenceDiagrams"></a><h3>Sequence Diagrams</h3>
-
-
-
-<a name="androidCameraSequenceDiagramsPreview"></a><h4>Preview</h4>
-
-<p>The following diagram illustrates the sequence of function calls and actions necessary for your camera to preview.</p>
-<img src="images/cameraPreview.jpg">
-
-
-<a name="androidCameraSequenceDiagramsTakePic"></a><h4>Taking a Picture</h4>
-
-<p>The following diagram illustrates the sequence of function calls and actions necessary for your camera to take a picture.</p>
-<img src="images/cameraTakePicture.jpg">
-
-
-<a name="androidCameraInterfaceIntro"></a><h3>Interface</h3>
-
-
-
-<p class="note"><strong>Note</strong>: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, <a href="camera.html">click here</a>.</p>
-
-
-<iframe onLoad="resizeDoxFrameHeight();" src="CameraHardwareInterface_8h.html" scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" frameborder="0" style="width:100%;"></iframe>
diff --git a/pdk/docs/guide/customization.jd b/pdk/docs/guide/customization.jd
deleted file mode 100755
index 9c56681..0000000
--- a/pdk/docs/guide/customization.jd
+++ /dev/null
@@ -1,321 +0,0 @@
-page.title=Customization
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidBootScreenCustomization">Boot Screen Customization</a></li>
-<li><a href="#androidNetCustPlat">Network Customization Platform</a></li>
-<li><a href="#androidCustomizingPre-LoadedApps">Customizing pre-loaded applications</a></li> 
-<li><a href="#androidBrowserBookmarks">Customizing browser bookmarks</a></li> 
-<li><a href="#androidEmailProviderCustomization">Email Provider Customization</a></li>
-<li><a href="#androidThemes">Platform Themes</a></li>
-</ul>
-</div>
-</div>
-
-
- 
-<a name="androidBootScreenCustomization"></a><h3>Boot Screen Customization</h3> 
- 
-<p>At startup, Android displays a splashscreen image while booting the device. Do the following if you wish to modify the default splash screen:</p> 
-<p> 
-<ol><li>Create a 320x480 image, <code>splashscreen.jpg</code> in this example.</li> 
-<li>Using ImageMagick, convert your .jpg file to .r format:
-<pre class="prettify"> 
-convert screen.jpg screen.r
-</pre> 
-</li> 
-<li>Use the rgb2565 application to convert the image to 565 format:
-<pre class="prettify"> 
-rgb2565 < screen.rgb > screen.565
-</pre> 
-</li> 
-<li>Use fastboot to flash the image to the device:
-<pre class="prettify"> 
-fastboot flash splash1 screen.565
-</pre> 
-</li> 
-</ol> 
- 
- 
-<a name="androidNetCustPlat"></a><h3>Network Customization Platform</h3> 
- 
- 
- 
-<a name="androidNetCustPlatNetworkConfig"></a><h4>Network Configuration</h4> 
- 
-<p>Android stores network configurations as a resource that gets compiled into binary at form at build time. The XML representation of this resource is located at <code>//android/frameworks/base/core/res/res/xml/apns.xml</code>. This file does not include any configured APNs. You should not modify this file, but instead configure APNs by product at build time (see Build-time APN Configuration below).</p> 
-<p>Each network configuration is stored in an XML element following this syntax:</p> 
-<pre class="prettify"> 
-&lt;apn carrier="T-Mobile US"
-         mcc="310"
-         mnc="260"
-         apn=" wap.voicestream.com"
-         user="none"
-         server="*"
-         password="none"
-         proxy=" 216.155.165.50"
-         port="8080"
-         mmsc="http://216.155.174.84/servlets/mms"
-/&gt;
-</pre> 
- 
- 
-<a name="androidNetCustPlatAPNConfig"></a><h4>Build-time APN configuration</h4> 
- 
-<p>To set the APN configuration for a particular product target, add an <code>apns-conf.xml</code> file to the product configuration (do not modify the default platform APNs). This allows multiple products, all with different APNs, to be built off the same code base.  </p> 
- 
-<p>To configure APNs at the product level, add a line to the product configuration file like the example below (<code>vendor/&lt;vendor_name&gt;/products/myphone-us.mk</code>): </p> 
- 
-<pre class="prettify"> 
-PRODUCT_COPY_FILES := vendor/acme/etc/apns-conf-us.xml:system/etc/apns-conf.xml
-</pre> 
- 
- 
- 
-<a name="androidNetCustPlatAPNRunTime"></a><h4>APN configuration at run time</h4> 
- 
-<p>At runtime, the Android reads APNs from the following file:</p> 
-<pre class="prettify"> 
-system/etc/apns-conf.xml
-</pre> 
- 
-<p>Android supports the following run-time network configuration methods to choose the appropriate APN from the list of configured APNs:</p> 
-<p><ul> 
-<li><b>Automatic Configuration</b>: At boot time, Android determines the correct network configuration based on the MCC and MNC from the SIM card and automatically configure all network settings.</li> 
-<li><b>Manual Configuration</b>: The platform will also support runtime (user) manual selection of network settings by name, for example, "Company Name US," and will support manual network configuration entry.</li> 
-<li><b>WAP / SMS Push Configuration</b>: The network configurations are standard Android resources. You can upgrade a resource at runtime by installing a new system resource APK package. It will be possible to develop a network configuration service which listens to a specific binary SMS port for binary SMS messages containing the network configurations.  NOTE: The implementation will likely be network operator dependent due to inconsistent SMS ports, binary SMS formats, etc.</li> 
-</ul> 
- 
- 
- 
- 
-<a name="androidCustomizingPre-LoadedApps"></a><h3>Customizing pre-loaded applications</h3> 
- 
-<p>To customize the list of Android packages for a particular product (applications, input methods, providers, services, etc.), set <code>PRODUCT_PACKAGES</code> property in the product configuration, as illustrated below:</p> 
- 
-<pre class="prettify"> 
-PRODUCT_PACKAGES := \
- &lt;company_name&gt;Mail \
-    &lt;company_name&gt;IM \
- &lt;company_name&gt;HomeScreen \
- &lt;company_name&gt;Maps \
- &lt;company_name&gt;SystemUpdater
-</pre> 
- 
-<p>Package names should correspond to the <code>LOCAL_PACKAGE_NAME</code> specified for each package's build target. For example, the <code>Android.mk</code> build target for &lt;company_name&gt;Mail, referenced above, could look like this:
- 
-<pre class="prettify"> 
-# Build the &lt;company_name&gt;Mail application
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
- 
-LOCAL_MODULE_TAGS := user development
- 
-LOCAL_SRC_FILES := $(call all-java-files-under,src,tests)
- 
-LOCAL_STATIC_JAVA_LIBRARIES := &lt;company_name&gt;login-client
- 
-# Specify the package name
-LOCAL_PACKAGE_NAME := &lt;company_name&gt;Mail
- 
-# Specify the certificate used to sign the application
-LOCAL_CERTIFICATE := vendor/&lt;company_name&gt;/certs/app
- 
-include $(BUILD_PACKAGE)
- 
-# Build the login client static library
-include $(LOCAL_PATH)/client/Android.mk
-</pre> 
- 
-<p>Note that the home screen is just an Android application that can be replaced entirely or customized by changing source code and application resources (Java source, layouts, etc.).</p> 
- 
- 
- 
-<a name="androidBrowserBookmarks"></a><h3>Customizing browser bookmarks</h3> 
- 
-<p>Browser bookmarks are stored as string resources in the Browser application: <code>//android/packages/apps/Browser/res/values/strings.xml</code>.  Bookmarks are defined as simple value string arrays called &quot;bookmarks&quot;.  Each bookmark entry is stored as a pair of array values; the first represents the bookmark name and the second the bookmark URL.  For example:</p> 
-<pre class="prettify"> 
-&lt;!-- Bookmarks --&gt;
-&lt;string-array name=&quot;bookmarks&quot;&gt;
-    &lt;item&gt;Google&lt;/item&gt;
-    &lt;item&gt;http://www.google.com/&lt;/item&gt;
-    &lt;item&gt;Yahoo!&lt;/item&gt;
-    &lt;item&gt;http://www.yahoo.com/&lt;/item&gt;
-    &lt;item&gt;MSN&lt;/item&gt;
-    &lt;item&gt;http://www.msn.com/&lt;/item&gt;
-    &lt;item&gt;MySpace&lt;/item&gt;
-    &lt;item&gt;http://www.myspace.com/&lt;/item&gt;
-    &lt;item&gt;Facebook&lt;/item&gt;
-    &lt;item&gt;http://www.facebook.com/&lt;/item&gt;
-    &lt;item&gt;Wikipedia&lt;/item&gt;
-    &lt;item&gt;http://www.wikipedia.org/&lt;/item&gt;
-    &lt;item&gt;eBay&lt;/item&gt;
-    &lt;item&gt;http://www.ebay.com/&lt;/item&gt;
-    &lt;item&gt;CNN&lt;/item&gt;
-    &lt;item&gt;http://www.cnn.com/&lt;/item&gt;
-    &lt;item&gt;New York Times&lt;/item&gt;
-    &lt;item&gt;http://www.nytimes.com/&lt;/item&gt;
-    &lt;item&gt;ESPN&lt;/item&gt;
-    &lt;item&gt;http://espn.go.com/&lt;/item&gt;
-    &lt;item&gt;Amazon&lt;/item&gt;
-    &lt;item&gt;http://www.amazon.com/&lt;/item&gt;
-    &lt;item&gt;Weather Channel&lt;/item&gt;
-    &lt;item&gt;http://www.weather.com/&lt;/item&gt;
-    &lt;item&gt;BBC&lt;/item&gt;
-    &lt;item&gt;http://www.bbc.co.uk/&lt;/item&gt;
-&lt;/string-array&gt;
-</pre> 
-<p>Like and Android application resource, the platform will load alternate resources based on the platform configuration values.  See <a href="http://developer.android.com/guide/topics/resources/resources-i18n.html">Resources and Internationalization</a> in the Android SDK for details.  To configure bookmarks for a specific mobile network operator, place your customized bookmarks in a separate <code>strings.xml</code> file and place it under a Mobile Network Code (MNO) specific resource folder.  For example, <code>Browser/res/values-mccXXX-mncYYY/strings.xml</code> where XXX and YYY represent the three-digit MCC and two to three digit MNC values.</p> 
-<p>Android loads any configuration-specific resources as override values for the default values, so it is only necessary to include the bookmarks string-array values in this file.</p> 
- 
- 
- 
-<a name="androidEmailProviderCustomization"></a>
-<h3>Email Provider Customization</h3> 
- 
-<p>The default email provider settings are stored as string resources in the Email application (<code>//android/packages/apps/Email/res/xml/providers.xml</code>) as illustrated below.</p> 
-<p>&lt;providers&gt;</p> 
-<pre class="prettify"> 
-&lt;!-- Gmail variants --&gt;
-    &lt;provider id=&quot;gmail&quot; label=&quot;Gmail&quot; domain=&quot;gmail.com&quot;&gt;
-        &lt;incoming uri=&quot;imap+ssl+://imap.gmail.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+ssl+://smtp.gmail.com&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;googlemail&quot; label=&quot;Google Mail&quot; domain=&quot;googlemail.com&quot;&gt;
-        &lt;incoming uri=&quot;imap+ssl+://imap.googlemail.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+ssl+://smtp.googlemail.com&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;google&quot; label=&quot;Google&quot; domain=&quot;google.com&quot;&gt;
-        &lt;incoming uri=&quot;imap+ssl+://imap.gmail.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+ssl+://smtp.gmail.com&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;android&quot; label=&quot;Android&quot; domain=&quot;android.com&quot;&gt;
-        &lt;incoming uri=&quot;imap+ssl+://imap.gmail.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+ssl+://smtp.gmail.com&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;</p> 
- 
-    &lt;!-- Common US providers --&gt;
-    
-    &lt;provider id=&quot;aim&quot; label=&quot;AIM&quot; domain=&quot;aim.com&quot;&gt;
-        &lt;incoming uri=&quot;imap://imap.aim.com&quot; label=&quot;IMAP&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://smtp.aim.com:587&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;aol&quot; label=&quot;AOL&quot; domain=&quot;aol.com&quot;&gt;
-        &lt;incoming uri=&quot;imap://imap.aol.com&quot; label=&quot;IMAP&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://smtp.aol.com:587&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;comcast&quot; label=&quot;Comcast&quot; domain=&quot;comcast.net&quot;&gt;
-        &lt;incoming uri=&quot;pop3+ssl+://mail.comcast.net&quot; username=&quot;$user&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+ssl+://smtp.comcast.net&quot; username=&quot;$user&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;compuserve&quot; label=&quot;CompuServe&quot; domain=&quot;cs.com&quot;&gt;
-        &lt;incoming uri=&quot;imap://imap.cs.com&quot; username=&quot;$user&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://smtp.cs.com&quot; username=&quot;$user&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;dotmac&quot; label=&quot;.Mac&quot; domain=&quot;mac.com&quot;&gt;
-        &lt;incoming uri=&quot;imap+tls://mail.mac.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+tls://smtp.mac.com&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;earthlink&quot; label=&quot;Earthlink&quot; domain=&quot;earthlink.net&quot;&gt;
-        &lt;incoming uri=&quot;pop3://pop.earthlink.net&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://smtpauth.earthlink.net:587&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;juno&quot; label=&quot;Juno&quot; domain=&quot;juno.com&quot;&gt;
-        &lt;incoming uri=&quot;pop3://pop.juno.com&quot; username=&quot;$user&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://smtp.juno.com&quot; username=&quot;$user&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;live&quot; label=&quot;Windows Live Hotmail Plus&quot; domain=&quot;live.com&quot; note=&quot;@string/provider_note_live&quot;&gt;
-        &lt;incoming uri=&quot;pop3+ssl+://pop3.live.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+tls+://smtp.live.com&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;hotmail&quot; label=&quot;Windows Live Hotmail Plus&quot; domain=&quot;hotmail.com&quot; note=&quot;@string/provider_note_live&quot;&gt;
-        &lt;incoming uri=&quot;pop3+ssl+://pop3.live.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+tls+://smtp.live.com&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;msn&quot; label=&quot;Windows Live Hotmail Plus&quot; domain=&quot;msn.com&quot; note=&quot;@string/provider_note_live&quot;&gt;
-        &lt;incoming uri=&quot;pop3+ssl+://pop3.live.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+tls+://smtp.live.com&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;mobileme&quot; label=&quot;MobileMe&quot; domain=&quot;me.com&quot;&gt;
-        &lt;incoming uri=&quot;imap+tls://mail.me.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+tls://smtp.me.com&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;netzero&quot; label=&quot;NetZero&quot; domain=&quot;netzero.com&quot;&gt;
-        &lt;incoming uri=&quot;pop3://pop.netzero.com&quot; username=&quot;$user&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://smtp.netzero.com&quot; username=&quot;$user&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;sbcglobal&quot; label=&quot;SBC Global&quot; domain=&quot;sbcglobal.net&quot;&gt;
-        &lt;incoming uri=&quot;pop3://pop.sbcglobal.yahoo.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://smtp.sbcglobal.yahoo.com&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;verizon&quot; label=&quot;Verizon&quot; domain=&quot;verizon.net&quot;&gt;
-        &lt;incoming uri=&quot;pop3://incoming.verizon.net&quot; username=&quot;$user&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://outgoing.verizon.net&quot; username=&quot;$user&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;yahoo&quot; label=&quot;Yahoo Plus&quot; domain=&quot;yahoo.com&quot; note=&quot;@string/provider_note_yahoo&quot;&gt;
-        &lt;incoming uri=&quot;pop3+ssl+://plus.pop.mail.yahoo.com&quot; username=&quot;$user&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+ssl+://plus.smtp.mail.yahoo.com&quot; username=&quot;$user&quot;/&gt;
-    &lt;/provider&gt;
-  
-    &lt;!-- Common UK providers --&gt;
-    
-    &lt;provider id=&quot;aol-uk&quot; label=&quot;AOL&quot; domain=&quot;aol.co.uk&quot;&gt;
-        &lt;incoming uri=&quot;imap+ssl+://imap.uk.aol.com&quot; label=&quot;IMAP&quot; username=&quot;$user&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+ssl+://smtp.uk.aol.com&quot; username=&quot;$user&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;bt&quot; label=&quot;BT Internet&quot; domain=&quot;btinternet.com&quot;&gt;
-        &lt;incoming uri=&quot;pop3://mail.btinternet.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://mail.btinternet.com&quot; username=&quot;&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;tiscali&quot; label=&quot;Tiscali&quot; domain=&quot;tiscali.co.uk&quot;&gt;
-        &lt;incoming uri=&quot;pop3://pop.tiscali.co.uk&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://smtp.tiscali.co.uk&quot; username=&quot;$email:wq&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;yahoo-uk&quot; label=&quot;Yahoo&quot; domain=&quot;yahoo.co.uk&quot; note=&quot;@string/provider_note_yahoo_uk&quot;&gt;
-        &lt;incoming uri=&quot;pop3+ssl+://pop.mail.yahoo.co.uk&quot; username=&quot;$user&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+ssl+://smtp.mail.yahoo.co.uk&quot; username=&quot;$user&quot;/&gt;
-    &lt;/provider&gt;
-    
-    &lt;!-- Common Germany providers --&gt;
-    
-    &lt;provider id=&quot;freenet&quot; label=&quot;Freenet&quot; domain=&quot;freenet.de&quot;&gt;
-        &lt;incoming uri=&quot;pop3://mx.freenet.de&quot; username=&quot;$user&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+ssl://mx.freenet.de&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;gmx&quot; label=&quot;GMX&quot; domain=&quot;gmx.de&quot;&gt;
-        &lt;incoming uri=&quot;pop3+tls://pop.gmx.net&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+tls://mail.gmx.net&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;T-Online&quot; label=&quot;T-Online&quot; domain=&quot;t-online.de&quot; note=&quot;@string/provider_note_t_online&quot;&gt;
-        &lt;incoming uri=&quot;pop3://popmail.t-online.de&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://smtpmail.t-online.de&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;web.de&quot; label=&quot;Web.de&quot; domain=&quot;web.de&quot;&gt;
-        &lt;incoming uri=&quot;pop3+tls://pop3.web.de&quot; username=&quot;$user&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+tls://smtp.web.de&quot; username=&quot;$user&quot;/&gt;
-    &lt;/provider&gt;
-&lt;/providers&gt;
-</pre> 
-<p>As with all Android application resources, the platform will load alternate resources based on the platform configuration values.  See <a href="http://developer.android.com/guide/topics/resources/resources-i18n.html">Resources and Internationalization</a> in the Android SDK for details.  To configure email providers for a specific mobile network operator, place the customized providers in a separate <code>providers.xml</code> file and place it under  a Mobile Network Code (MNO) specific resource folder.  For example, <code>Email/res/xml-mccXXX-mncYYY/providers.xml</code> where XXX and YYY represent the three-digit MCC and two to three digit MNC values.</p> 
- 
- 
- 
-<a name="androidThemes"></a><h3>Platform Themes</h3> 
- 
- 
- 
-<a name="androidThemesStyles"></a><h4>Themes and Styles</h4> 
- 
-<p>System level styles are defined in <code>//android/framework/base/core/res/res/values/styles.xml</code>.</p> 
- 
- 
-<a name="androidThemesAnimations"></a><h4>Animations</h4> 
- 
-<p>Android supports configurable animations for window and view transitions.  System-level animations are defined in XML in global resource files located in <code>//android/framework/base/core/res/res/anim/</code>.</p> 
- 
diff --git a/pdk/docs/guide/dalvik.jd b/pdk/docs/guide/dalvik.jd
deleted file mode 100755
index 6fa37da..0000000
--- a/pdk/docs/guide/dalvik.jd
+++ /dev/null
@@ -1,355 +0,0 @@
-page.title=Dalvik
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#dalvikCoreLibraries">Core Libraries</a></li>
-<li><a href="#dalvikJNICallBridge">JNI Call Bridge</a></li>
-<li><a href="#dalvikInterpreter">Interpreter</a></li>
-</ul>
-</div>
-</div>
-
-<p> 
-The Dalvik virtual machine is intended to run on a variety of platforms.
-The baseline system is expected to be a variant of UNIX (Linux, BSD, Mac
-OS X) running the GNU C compiler.  Little-endian CPUs have been exercised
-the most heavily, but big-endian systems are explicitly supported.
-</p><p> 
-There are two general categories of work: porting to a Linux system
-with a previously unseen CPU architecture, and porting to a different
-operating system.  This document covers the former.
-</p>
- 
- 
-<a name="dalvikCoreLibraries"></a><h3>Core Libraries</h3> 
- 
-<p> 
-The native code in the core libraries (chiefly <code>dalvik/libcore</code>,
-but also <code>dalvik/vm/native</code>) is written in C/C++ and is expected
-to work without modification in a Linux environment.  Much of the code
-comes directly from the Apache Harmony project.
-</p><p> 
-The core libraries pull in code from many other projects, including
-OpenSSL, zlib, and ICU.  These will also need to be ported before the VM
-can be used.
-</p> 
- 
- 
-<a name="dalvikJNICallBridge"></a><h3>JNI Call Bridge</h3> 
- 
-<p> 
-Most of the Dalvik VM runtime is written in portable C.  The one
-non-portable component of the runtime is the JNI call bridge.  Simply put,
-this converts an array of integers into function arguments of various
-types, and calls a function.  This must be done according to the C calling
-conventions for the platform.  The task could be as simple as pushing all
-of the arguments onto the stack, or involve complex rules for register
-assignment and stack alignment.
-</p><p> 
-To ease porting to new platforms, the <a href="http://sourceware.org/libffi/"> 
-open-source FFI library</a> (Foreign Function Interface) is used when a
-custom bridge is unavailable.  FFI is not as fast as a native implementation,
-and the optional performance improvements it does offer are not used, so
-writing a replacement is a good first step.
-</p><p> 
-The code lives in <code>dalvik/vm/arch/*</code>, with the FFI-based version
-in the "generic" directory.  There are two source files for each architecture.
-One defines the call bridge itself:
-</p><p><blockquote> 
-<code>void dvmPlatformInvoke(void* pEnv, ClassObject* clazz, int argInfo,
-int argc, const u4* argv, const char* signature, void* func,
-JValue* pReturn)</code> 
-</blockquote></p><p> 
-This will invoke a C/C++ function declared:
-</p><p><blockquote> 
-    <code>return_type func(JNIEnv* pEnv, Object* this [, <i>args</i>])<br></code> 
-</blockquote>or (for a "static" method):<blockquote> 
-    <code>return_type func(JNIEnv* pEnv, ClassObject* clazz [, <i>args</i>])</code> 
-</blockquote></p><p> 
-The role of <code>dvmPlatformInvoke</code> is to convert the values in
-<code>argv</code> into C-style calling conventions, call the method, and
-then place the return type into <code>pReturn</code> (a union that holds
-all of the basic JNI types).  The code may use the method signature
-(a DEX "shorty" signature, with one character for the return type and one
-per argument) to determine how to handle the values.
-</p><p> 
-The other source file involved here defines a 32-bit "hint".  The hint
-is computed when the method's class is loaded, and passed in as the
-"argInfo" argument.  The hint can be used to avoid scanning the ASCII
-method signature for things like the return value, total argument size,
-or inter-argument 64-bit alignment restrictions.
-</p> 
- 
-<a name="dalvikInterpreter"></a><h3>Interpreter</h3> 
- 
-<p> 
-The Dalvik runtime includes two interpreters, labeled "portable" and "fast".
-The portable interpreter is largely contained within a single C function,
-and should compile on any system that supports gcc.  (If you don't have gcc,
-you may need to disable the "threaded" execution model, which relies on
-gcc's "goto table" implementation; look for the THREADED_INTERP define.)
-</p><p> 
-The fast interpreter uses hand-coded assembly fragments.  If none are
-available for the current architecture, the build system will create an
-interpreter out of C "stubs".  The resulting "all stubs" interpreter is
-quite a bit slower than the portable interpreter, making "fast" something
-of a misnomer.
-</p><p> 
-The fast interpreter is enabled by default.  On platforms without native
-support, you may want to switch to the portable interpreter.  This can
-be controlled with the <code>dalvik.vm.execution-mode</code> system
-property.  For example, if you:
-</p><p><blockquote> 
-<code>adb shell "echo dalvik.vm.execution-mode = int:portable >> /data/local.prop"</code> 
-</blockquote></p><p> 
-and reboot, the Android app framework will start the VM with the portable
-interpreter enabled.
-</p> 
- 
- 
-<h3>Mterp Interpreter Structure</h3> 
- 
-<p> 
-There may be significant performance advantages to rewriting the
-interpreter core in assembly language, using architecture-specific
-optimizations.  In Dalvik this can be done one instruction at a time.
-</p><p> 
-The simplest way to implement an interpreter is to have a large "switch"
-statement.  After each instruction is handled, the interpreter returns to
-the top of the loop, fetches the next instruction, and jumps to the
-appropriate label.
-</p><p> 
-An improvement on this is called "threaded" execution.  The instruction
-fetch and dispatch are included at the end of every instruction handler.
-This makes the interpreter a little larger overall, but you get to avoid
-the (potentially expensive) branch back to the top of the switch statement.
-</p><p> 
-Dalvik mterp goes one step further, using a computed goto instead of a goto
-table.  Instead of looking up the address in a table, which requires an
-extra memory fetch on every instruction, mterp multiplies the opcode number
-by a fixed value.  By default, each handler is allowed 64 bytes of space.
-</p><p> 
-Not all handlers fit in 64 bytes.  Those that don't can have subroutines
-or simply continue on to additional code outside the basic space.  Some of
-this is handled automatically by Dalvik, but there's no portable way to detect
-overflow of a 64-byte handler until the VM starts executing.
-</p><p> 
-The choice of 64 bytes is somewhat arbitrary, but has worked out well for
-ARM and x86.
-</p><p> 
-In the course of development it's useful to have C and assembly
-implementations of each handler, and be able to flip back and forth
-between them when hunting problems down.  In mterp this is relatively
-straightforward.  You can always see the files being fed to the compiler
-and assembler for your platform by looking in the
-<code>dalvik/vm/mterp/out</code> directory.
-</p><p> 
-The interpreter sources live in <code>dalvik/vm/mterp</code>.  If you
-haven't yet, you should read <code>dalvik/vm/mterp/README.txt</code> now.
-</p> 
- 
- 
-<h3>Getting Started With Mterp</h3> 
- 
-</p><p> 
-Getting started:
-<ol> 
-<li>Decide on the name of your architecture.  For the sake of discussion,
-let's call it <code>myarch</code>.
-<li>Make a copy of <code>dalvik/vm/mterp/config-allstubs</code> to
-<code>dalvik/vm/mterp/config-myarch</code>.
-<li>Create a <code>dalvik/vm/mterp/myarch</code> directory to hold your
-source files.
-<li>Add <code>myarch</code> to the list in
-<code>dalvik/vm/mterp/rebuild.sh</code>.
-<li>Make sure <code>dalvik/vm/Android.mk</code> will find the files for
-your architecture.  If <code>$(TARGET_ARCH)</code> is configured this
-will happen automatically.
-</ol> 
-</p><p> 
-You now have the basic framework in place.  Whenever you make a change, you
-need to perform two steps: regenerate the mterp output, and build the
-core VM library.  (It's two steps because we didn't want the build system
-to require Python 2.5.  Which, incidentally, you need to have.)
-<ol> 
-<li>In the <code>dalvik/vm/mterp</code> directory, regenerate the contents
-of the files in <code>dalvik/vm/mterp/out</code> by executing
-<code>./rebuild.sh</code>.  Note there are two files, one in C and one
-in assembly.
-<li>In the <code>dalvik</code> directory, regenerate the
-<code>libdvm.so</code> library with <code>mm</code>.  You can also use
-<code>make libdvm</code> from the top of the tree.
-</ol> 
-</p><p> 
-This will leave you with an updated libdvm.so, which can be pushed out to
-a device with <code>adb sync</code> or <code>adb push</code>.  If you're
-using the emulator, you need to add <code>make snod</code> (System image,
-NO Dependency check) to rebuild the system image file.  You should not
-need to do a top-level "make" and rebuild the dependent binaries.
-</p><p> 
-At this point you have an "all stubs" interpreter.  You can see how it
-works by examining <code>dalvik/vm/mterp/cstubs/entry.c</code>.  The
-code runs in a loop, pulling out the next opcode, and invoking the
-handler through a function pointer.  Each handler takes a "glue" argument
-that contains all of the useful state.
-</p><p> 
-Your goal is to replace the entry method, exit method, and each individual
-instruction with custom implementations.  The first thing you need to do
-is create an entry function that calls the handler for the first instruction.
-After that, the instructions chain together, so you don't need a loop.
-(Look at the ARM or x86 implementation to see how they work.)
-</p><p> 
-Once you have that, you need something to jump to.  You can't branch
-directly to the C stub because it's expecting to be called with a "glue"
-argument and then return.  We need a C stub "wrapper" that does the
-setup and jumps directly to the next handler.  We write this in assembly
-and then add it to the config file definition.
-</p><p> 
-To see how this works, create a file called
-<code>dalvik/vm/mterp/myarch/stub.S</code> that contains one line:
-<pre> 
-/* stub for ${opcode} */
-</pre> 
-Then, in <code>dalvik/vm/mterp/config-myarch</code>, add this below the
-<code>handler-size</code> directive:
-<pre> 
-# source for the instruction table stub
-asm-stub myarch/stub.S
-</pre> 
-</p><p> 
-Regenerate the sources with <code>./rebuild.sh</code>, and take a look
-inside <code>dalvik/vm/mterp/out/InterpAsm-myarch.S</code>.  You should
-see 256 copies of the stub function in a single large block after the
-<code>dvmAsmInstructionStart</code> label.  The <code>stub.S</code> 
-code will be used anywhere you don't provide an assembly implementation.
-</p><p> 
-Note that each block begins with a <code>.balign 64</code> directive.
-This is what pads each handler out to 64 bytes.  Note also that the
-<code>${opcode}</code> text changed into an opcode name, which should
-be used to call the C implementation (<code>dvmMterp_${opcode}</code>).
-</p><p> 
-The actual contents of <code>stub.S</code> are up to you to define.
-See <code>entry.S</code> and <code>stub.S</code> in the <code>armv5te</code> 
-or <code>x86</code> directories for working examples.
-</p><p> 
-If you're working on a variation of an existing architecture, you may be
-able to use most of the existing code and just provide replacements for
-a few instructions.  Look at the <code>armv4t</code> implementation as
-an example.
-</p> 
- 
- 
-<h3>Replacing Stubs</h3> 
- 
-<p> 
-There are roughly 230 Dalvik opcodes, including some that are inserted by
-<a href="dexopt.html">dexopt</a> and aren't described in the
-<a href="dalvik-bytecode.html">Dalvik bytecode</a> documentation.  Each
-one must perform the appropriate actions, fetch the next opcode, and
-branch to the next handler.  The actions performed by the assembly version
-must exactly match those performed by the C version (in
-<code>dalvik/vm/mterp/c/OP_*</code>).
-</p><p> 
-It is possible to customize the set of "optimized" instructions for your
-platform.  This is possible because optimized DEX files are not expected
-to work on multiple devices.  Adding, removing, or redefining instructions
-is beyond the scope of this document, and for simplicity it's best to stick
-with the basic set defined by the portable interpreter.
-</p><p> 
-Once you have written a handler that looks like it should work, add
-it to the config file.  For example, suppose we have a working version
-of <code>OP_NOP</code>.  For demonstration purposes, fake it for now by
-putting this into <code>dalvik/vm/mterp/myarch/OP_NOP.S</code>:
-<pre> 
-/* This is my NOP handler */
-</pre> 
-</p><p> 
-Then, in the <code>op-start</code> section of <code>config-myarch</code>, add:
-<pre> 
-    op OP_NOP myarch
-</pre> 
-</p><p> 
-This tells the generation script to use the assembly version from the
-<code>myarch</code> directory instead of the C version from the <code>c</code> 
-directory.
-</p><p> 
-Execute <code>./rebuild.sh</code>.  Look at <code>InterpAsm-myarch.S</code> 
-and <code>InterpC-myarch.c</code> in the <code>out</code> directory.  You
-will see that the <code>OP_NOP</code> stub wrapper has been replaced with our
-new code in the assembly file, and the C stub implementation is no longer
-included.
-</p><p> 
-As you implement instructions, the C version and corresponding stub wrapper
-will disappear from the output files.  Eventually you will have a 100%
-assembly interpreter.
-</p> 
- 
- 
-<h3>Interpreter Switching</h3> 
- 
-<p> 
-The Dalvik VM actually includes a third interpreter implementation: the debug
-interpreter.  This is a variation of the portable interpreter that includes
-support for debugging and profiling.
-</p><p> 
-When a debugger attaches, or a profiling feature is enabled, the VM
-will switch interpreters at a convenient point.  This is done at the
-same time as the GC safe point check: on a backward branch, a method
-return, or an exception throw.  Similarly, when the debugger detaches
-or profiling is discontinued, execution transfers back to the "fast" or
-"portable" interpreter.
-</p><p> 
-Your entry function needs to test the "entryPoint" value in the "glue"
-pointer to determine where execution should begin.  Your exit function
-will need to return a boolean that indicates whether the interpreter is
-exiting (because we reached the "bottom" of a thread stack) or wants to
-switch to the other implementation.
-</p><p> 
-See the <code>entry.S</code> file in <code>x86</code> or <code>armv5te</code> 
-for examples.
-</p> 
- 
- 
-<h3>Testing</h3> 
- 
-<p> 
-A number of VM tests can be found in <code>dalvik/tests</code>.  The most
-useful during interpreter development is <code>003-omnibus-opcodes</code>,
-which tests many different instructions.
-</p><p> 
-The basic invocation is:
-<pre> 
-$ cd dalvik/tests
-$ ./run-test 003
-</pre> 
-</p><p> 
-This will run test 003 on an attached device or emulator.  You can run
-the test against your desktop VM by specifying <code>--reference</code> 
-if you suspect the test may be faulty.  You can also use
-<code>--portable</code> and <code>--fast</code> to explictly specify
-one Dalvik interpreter or the other.
-</p><p> 
-Some instructions are replaced by <code>dexopt</code>, notably when
-"quickening" field accesses and method invocations.  To ensure
-that you are testing the basic form of the instruction, add the
-<code>--no-optimize</code> option.
-</p><p> 
-There is no in-built instruction tracing mechanism.  If you want
-to know for sure that your implementation of an opcode handler
-is being used, the easiest approach is to insert a "printf"
-call.  For an example, look at <code>common_squeak</code> in
-<code>dalvik/vm/mterp/armv5te/footer.S</code>.
-</p><p> 
-At some point you need to ensure that debuggers and profiling work with
-your interpreter.  The easiest way to do this is to simply connect a
-debugger or toggle profiling.  (A future test suite may include some
-tests for this.)
-</p> 
-
-
diff --git a/pdk/docs/guide/debugging_gdb.jd b/pdk/docs/guide/debugging_gdb.jd
deleted file mode 100755
index f2a2db5..0000000
--- a/pdk/docs/guide/debugging_gdb.jd
+++ /dev/null
@@ -1,146 +0,0 @@
-page.title=Debugging with GDB
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#gdb">Debugging</a></li>
-  <li><a href="#justInTime">Just-In-Time Debug Feature</a></li>
-</ul>
-</div>
-</div>
-
-<p>The current version of <code>envsetup.sh</code> has a <code>gdbclient</code> command that handles much of the setup.  For example, to attach the
-  already-running <code>globaltime</code> application, execute the following, making sure that: 1) you do this from the same window used to build the software on the device you are debugging and 2) verify that the symbols in the object files in the build tree match up with what is installed on the device or emulator.</p>
-<pre class="prettify">
-gdbclient app_process :5039 globaltime
-</pre>
-<a name="gdb"></a><h3>Debugging</h3>
-<a name="gdbShort"></a>
-<h4>Short Instructions</h4>
-<p>Android runs <code>gdbserver</code> on the device and an ARM aware <code>gdb</code>, named <code>arm-eabi-gdb</code>, on the desktop machine.</p>
-<ol>
-  <li>First you need to
-    run <code>gdbserver</code> on the device:<BR>
-    <pre class="prettify">
-	gdbserver :5039 /system/bin/<i>executable</i>       
-  </pre>
-    <BR>
-    The <code>:5039</code> tells gdbserver to listen on port 5039 on the localhost, which adb bridges from the host to the device. <code>executable</code> represents the command to debug, a common one being runtime -s which starts the entire system all running in a single process. <br>
-    <br>
-  </li>
-  <li>Launch <code>gdb</code> on the desktop.
-    This can be
-    done easily with the following command in the shell from which you built:
-    <pre class="prettify">
-gdbclient <i>executable</i>
-</pre>
-  </li>
-</ol>
-<p>At this point <code>gdb</code> will connect with your device
-  and you should be
-  able to enter <code>c</code> to have the device start executing inside of the
-  desktop <code>gdb</code> session.</p>
-<a name="gdbDetailed"></a>
-<h4>Detailed Instructions</h4>
-<p>If the short instructions don't work, these detailed instructions should:
-<ol>
-  <li>On the device, launch a new command:
-    <pre class="prettify">gdbserver :5039 /system/bin/<i>executable</i></pre>
-    or attach to an existing process:
-    <pre class="prettify">gdbserver :5039 --attach <i>pid</i></pre>
-  </li>
-  <li>On your workstation, forward port 5039 to the device with adb:
-    <pre class="prettify">adb forward tcp:5039 tcp:5039</pre>
-  </li>
-  <li>Start a special version of <code>gdb</code> that lives in the "prebuilt" area of the source tree: <br>
-    <code>prebuilt/Linux/toolchain-eabi-4.2.1/bin/arm-eabi-gdb</code> (for Linux) <br>
-    <code>prebuilt/darwin-x86/toolchain-eabi-4.2.1/bin/arm-eabi-gdb</code> (for Darwin) </li>
-  <li>If you can't find either special version of <code>gdb</code>, run <code>find prebuilt -name arm-eabi-gdb</code> in your source tree to find and run the latest version:
-    <pre class="prettify">
-prebuilt/Linux/toolchain-eabi-4.2.1/bin/arm-eabi-gdb  out/target/product/<i>product-name</i>/symbols/system/bin/<i>executable</i>
-</pre>
-    <BR>
-    Where <i>product-name</i> is the name of the device product that you're building (for example, <code>sooner</code>),
-    and <i>executable</i> is the program to debug (usually <code>app_process</code> for an application).<br>
-    <br>
-    Make sure to use the copy of the executable in the symbols directory, not the
-    primary android directory, because the one in the primary directory has
-    been stripped of its debugging information.</li>
-  <li>In <code>gdb</code>, Tell <code>gdb</code> where to find the shared libraries that will get loaded:
-    <pre class="prettify">
-set solib-absolute-prefix /<i>absolute-source-path</i>/out/target/product/<i>product-name</i>/symbols
-set solib-search-path /<i>absolute-source-path</i>/out/target/product/<i>product-name</i>/symbols/system/lib
-</pre>
-    <BR>
-    <i>absolute-source-path</i> is the path to your source tree; for example, <code>/work/device</code> or <code>/Users/hoser/android/device</code>.<BR>
-    <i>product-name</i> is the same as above; for example, <code>sooner</code>. <BR>
-    <BR>
-    Make sure you specify the correct directories&#151;<code>gdb</code> may not tell you if you make a mistake.</li>
-  <li>Connect to the device by issuing the <code>gdb</code> command:<BR>
-    <pre class="prettify">
-target remote :5039
-</pre>
-    <BR>
-    <BR>
-    The <code>:5039</code> tells <code>gdb</code> to connect to the localhost port 5039, which is bridged to the device by <code>adb</code>.<BR>
-    <BR>
-    You may need to inspire gdb to load some symbols by typing:
-    <pre class="prettify">shared</pre>
-  </li>
-</ol>
-<p>You should be connected and able to debug as you normally would. You can ignore the error about not 
-  finding the location for the thread creation breakpoint. It will be found when
-  the linker loads <code>libc</code> into your process before hitting <code>main()</code>. Also note that
-  the <code>gdb</code> remote protocol doesn't have a way for the device to
-  tell the host about
-  newly created threads so you will not always see notifications about newly
-  created threads. Info about other threads will be queried from the
-  device when a
-  breakpoint is hit or you ask for it by running info thread. <a name="justInTime"></a>
-<h3>Just-In-Time Debug Feature</h3>
-If you see the red LED flashing it means a process is in that new
-state (crashed and waiting for GDB connection). If this happens to the
-system process, most likely your device will be frozen at this point. <strong>Do not press the home key</strong>. Bring the device to someone who can
-debug native crashes and ask for advice.
-If you're in the field and just want your device to continue as it
-would have without this feature (like cylonning), press home (a
-tombstone will be recorded as usual).
-
-To enable a process to be debugged this way, you need to set a property:
-<pre class="prettify">
-adb shell setprop debug.db.uid 10000
-</pre>
-and all processes with a <code>uid &lt;= 10000</code> will be trapped in this 
-manner.  When one of them crashes, the tombstone is processed as usual, an explicit message is printed into the log, and the red LED starts
-flashing waiting for the Home key to be depressed (in which case it
-continues execution as usual).
-<pre class="prettify">
-I/DEBUG   (   27): ********************************************************
-I/DEBUG   (   27): * process 82 crashed. debuggerd waiting for gdbserver
-I/DEBUG   (   27): *
-I/DEBUG   (   27): *     adb shell gdbserver :port --attach 82 &
-I/DEBUG   (   27): *
-I/DEBUG   (   27): * and press the HOME key.
-I/DEBUG   (   27): ********************************************************
-</pre>
-<p>When you see the entry above, make sure <code>adb</code> is forwarding port 5039 (you only need to do this once,
-  unless the ADB server dies) and execute:</p>
-<pre class="prettify">% adb forward tcp:5039 tcp:5039</pre>
-Execute the line shown in the debug output, substituting 5039  for the proper <code>port</code>:
-<pre class="prettify">
-% adb shell gdbserver :5039 --attach 82 &
-</pre>
-<p>If the crashing process is based off zygote (that is, system_server and all
-  applications), the default values for the <code>gdbclient</code> command, <code>app_process</code> binary and port <code>5039</code>, are correct, so you can execute:</p>
-<pre class="prettify">
-% cd &lt;top of device source tree&gt;
-% gdbclient
-</pre>
-<p>Otherwise you need to determine the path of the crashing binary and follow the
-  steps as mentioned above (for example, <code>gdbclient hoser :5039</code> if
-  the <code>hoser</code> command has failed).</p>
diff --git a/pdk/docs/guide/debugging_native.jd b/pdk/docs/guide/debugging_native.jd
deleted file mode 100755
index 0f8b397..0000000
--- a/pdk/docs/guide/debugging_native.jd
+++ /dev/null
@@ -1,305 +0,0 @@
-page.title=Debugging Native Code
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#Capturing_logs">Capturing logs</a></li>
-<li><a href="#Debug_Scenarios">Debug Scenarios</a></li>
-</ul>
-</div>
-</div>
-
-<a name="Capturing_logs"></a><h3>Capturing logs</h3>
-
-<p>To capture log output:</p>
-<ol>
-<li> Produce a process list with <code>ps</code>   (<code>ps -t</code> if you want verbose thread feedback).</li>
-<li> Dump kernel messages with <code>dmesg</code>.</li>
-<li> Get verbose log messages with <code>logcat '*:v' &amp;</code>   (running in bg with &amp; is important).</li>
-
-</ol>
-
-<a name="Debug_Scenarios"></a><h3>Debug Scenarios</h3>
-<pre class="prettify">
-  # command to device shell (via adb)
-  % command to host pc shell
-</pre>
-<p>
-</p>
-
-<a name="Crash_but_no_exit_stuck"></a><h4>Crash but no exit...stuck</h4>
-
-<p>In this scenario, the GTalk app crashed but did not actually exit or seems stuck. Check the debug logs to see if there is anything unusual: </p>
-
-<pre class="prettify">
-# logcat &amp;
-
-...
-E/WindowManager(  182): Window client android.util.BinderProxy@4089f948 has died!!  Removing window.
-W/WindowManager(  182): **** WINDOW CLIENT android.view.WindowProxy@40882248 DIED!
-W/ActivityManager(  182): **** APPLICATION com.google.android.gtalk DIED!
-I/ServiceManager(  257): Executing: /android/bin/app_process (link=/tmp/android-servicemanager/com.google.android.gtalk, wrapper=/tmp/android-servi
-cemanager/com.google.android.gtalk)
-I/appproc (  257): App process is starting with pid=257, class=android/activity/ActivityThread.
-I/        (  257): java.io.FileDescriptor: class initialization
-I/SurfaceFlinger.HW(  182): About to give-up screen
-I/SurfaceFlinger.HW(  182): screen given-up
-I/SurfaceFlinger.HW(  182): Screen about to return
-I/SurfaceFlinger.HW(  182): screen returned
-I/SurfaceFlinger.HW(  182): About to give-up screen
-I/SurfaceFlinger.HW(  182): screen given-up
-I/SurfaceFlinger.HW(  182): Screen about to return
-...
-</pre>
-
-<p>
-The logs indicate that the system launched a replacement GTalk process but that it got stuck somehow:
-</p>
-
-<pre class="prettify">
-# ps
-PID   PPID  VSIZE RSS   WCHAN    PC         NAME
-257   181   45780 5292  ffffffff 53030cb4 S com.google.andr
-</pre>
-
-<p>
-GTalk's PC is at 53030cb4. Look at the memory map to find out what lib is 0x53......
-</p>
-
-<pre class="prettify">
-# cat /proc/257/maps
-...
-51000000-5107c000 rwxp 00000000 1f:03 619        /android/lib/libutils.so
-52000000-52013000 rwxp 00000000 1f:03 639        /android/lib/libz.so
-53000000-53039000 rwxp 00000000 1f:03 668        /android/lib/libc.so
-53039000-53042000 rw-p 53039000 00:00 0
-54000000-54002000 rwxp 00000000 1f:03 658        /android/lib/libstdc++.so
-...
-</pre>
-
-<p>
-Disassemble <code>libc</code> to figure out what is going on:
-</p>
-
-<pre class="prettify">
-% prebuilt/Linux/toolchain-eabi-4.2.1/bin/arm-elf-objdump -d out/target/product/sooner/symbols/android/lib/libc.so
-
-00030ca4 &lt;__futex_wait&gt;:
-  30ca4:       e1a03002        mov     r3, r2
-  30ca8:       e1a02001        mov     r2, r1
-  30cac:       e3a01000        mov     r1, #0  ; 0x0
-  30cb0:       ef9000f0        swi     0x009000f0
-  30cb4:       e12fff1e        bx      lr
-</pre>
-
-<a name="Blocked_in_a_syscall"></a><h4>Blocked in a syscall</h4>
-
-<p>
-In this scenario, the system is blocked in a syscall. To debug using <code>gdb</code>, first tell <code>adb</code> to forward the <code>gdb</code> port:
-</p>
-
-<pre class="prettify">
-
-% adb forward tcp:5039 tcp:5039
-</pre>
-
-<p>
-Start the <code>gdb</code> server and attach to process 257 (as demonstrated in the previous example):
-</p>
-
-<pre class="prettify">
-# gdbserver :5039 --attach 257 &amp;
-Attached; pid = 257
-Listening on port 5039
-
-% prebuilt/Linux/toolchain-eabi-4.2.1/bin/arm-elf-gdb out/target/product/sooner/system/bin/app_process
-(gdb) set solib-absolute-prefix /work/android/device/out/target/product/sooner/symbols
-(gdb) set solib-search-path /work/android/device/out/target/product/sooner/symbols/android/lib
-(gdb) target remote :5039
-Remote debugging using :5039
-0x53030cb4 in ?? ()
-Current language:  auto; currently asm
-</pre>
-
-<p>
-Don't let other threads get scheduled while we're debugging.
-You should "set scheduler-locking off" before issuing a "continue", or else your thread may get stuck on a futex or other
-spinlock because no other thread can release it.
-</p>
-
-<pre class="prettify">
-(gdb) set scheduler-locking on
-</pre>
-
-<p>
-Ignore SIGUSR1 if you're using JamVM.  Shouldn't hurt if you're not.
-</p>
-
-<pre class="prettify">
-(gdb) handle SIGUSR1 noprint
-
-(gdb) where
-#0  __futex_wait () at system/klibc/android/atomics_arm.S:88
-#1  0x53010eb8 in pthread_cond_timedwait (cond=0x12081c, mutex=0x120818, abstime=0xffffffff)
-   at system/klibc/android/pthread.c:490
-#2  0x6b01c848 in monitorWait (mon=0x120818, self=0x6b039ba4, ms=0, ns=0) at extlibs/jamvm-1.4.1/src/lock.c:194
-#3  0x6b01d1d8 in objectWait (obj=0x408091c0, ms=0, ns=0) at extlibs/jamvm-1.4.1/src/lock.c:420
-#4  0x6b01d4c8 in jamWait (clazz=0xfffffffc, mb=0x0, ostack=0x2e188) at extlibs/jamvm-1.4.1/src/natives.c:91
-#5  0x6b013b2c in resolveNativeWrapper (clazz=0x408001d0, mb=0x41798, ostack=0x2e188) at extlibs/jamvm-1.4.1/src/dll.c:236
-#6  0x6b015c04 in executeJava () at extlibs/jamvm-1.4.1/src/interp.c:2614
-#7  0x6b01471c in executeMethodVaList (ob=0x0, clazz=0x40808f20, mb=0x12563c, jargs=0xbe9229f4)
-   at extlibs/jamvm-1.4.1/src/execute.c:91
-#8  0x6b01bcd0 in Jam_CallStaticVoidMethod (env=0xfffffffc, klass=0x0, methodID=0x12563c)
-   at extlibs/jamvm-1.4.1/src/jni.c:1063
-#9  0x58025b2c in android::AndroidRuntime::callStatic (this=0xfffffffc,
-   className=0xbe922f0a "android/activity/ActivityThread", methodName=0x57000b7c "main")
-   at libs/android_runtime/AndroidRuntime.cpp:215
-#10 0x57000504 in android::app_init (className=0xbe922f0a "android/activity/ActivityThread")
-   at servers/app/library/app_init.cpp:20
-#11 0x000089b0 in android::sp&lt;android::ProcessState&gt;::~sp ()
-#12 0x000089b0 in android::sp&lt;android::ProcessState&gt;::~sp ()
-Previous frame identical to this frame (corrupt stack?)
-
-(gdb) info threads
- 7 thread 263  __ioctl () at system/klibc/syscalls/__ioctl.S:12
- 6 thread 262  accept () at system/klibc/syscalls/accept.S:12
- 5 thread 261  __futex_wait () at system/klibc/android/atomics_arm.S:88
- 4 thread 260  __futex_wait () at system/klibc/android/atomics_arm.S:88
- 3 thread 259  __futex_wait () at system/klibc/android/atomics_arm.S:88
- 2 thread 258  __sigsuspend () at system/klibc/syscalls/__sigsuspend.S:12
- 1 thread 257  __futex_wait () at system/klibc/android/atomics_arm.S:88
-
-
-(gdb) thread 7
-[Switching to thread 7 (thread 263)]#0  __ioctl () at system/klibc/syscalls/__ioctl.S:12
-12          movs    r0, r0
-(gdb) bt
-#0  __ioctl () at system/klibc/syscalls/__ioctl.S:12
-#1  0x53010704 in ioctl (fd=-512, request=-1072143871) at system/klibc/android/ioctl.c:22
-#2  0x51040ac0 in android::IPCThreadState::talkWithDriver (this=0x1207b8, doReceive=true) at RefBase.h:83
-#3  0x510418a0 in android::IPCThreadState::joinThreadPool (this=0x1207b8, isMain=false)
-   at libs/utils/IPCThreadState.cpp:343
-#4  0x51046004 in android::PoolThread::threadLoop (this=0xfffffe00) at libs/utils/ProcessState.cpp:52
-#5  0x51036428 in android::Thread::_threadLoop (user=0xfffffe00) at libs/utils/Threads.cpp:1100
-#6  0x58025c68 in android::AndroidRuntime::javaThreadShell (args=0x105ffe28) at libs/android_runtime/AndroidRuntime.cpp:540
-
-(gdb) thread 6
-[Switching to thread 6 (thread 262)]#0  accept () at system/klibc/syscalls/accept.S:12
-12          movs    r0, r0
-(gdb) bt
-#0  accept () at system/klibc/syscalls/accept.S:12
-#1  0x6b0334e4 in jdwpAcceptConnection (state=0xfffffe00) at extlibs/jamvm-1.4.1/jdwp/JdwpNet.c:213
-#2  0x6b032660 in jdwpThreadEntry (self=0x4d020) at extlibs/jamvm-1.4.1/jdwp/JdwpMain.c:37
-#3  0x6b022c2c in shell (args=0x4d960) at extlibs/jamvm-1.4.1/src/thread.c:629
-
-(gdb) thread 5
-[Switching to thread 5 (thread 261)]#0  __futex_wait () at system/klibc/android/atomics_arm.S:88
-88              bx              lr
-(gdb) bt
-#0  __futex_wait () at system/klibc/android/atomics_arm.S:88
-#1  0x53010f48 in pthread_cond_timeout (cond=0x6b039b64, mutex=0x6b039b60, msecs=0) at system/klibc/android/pthread.c:513
-#2  0x6b01c8d0 in monitorWait (mon=0x6b039b60, self=0x4d400, ms=1000, ns=272629312) at extlibs/jamvm-1.4.1/src/lock.c:183
-#3  0x6b022084 in threadSleep (thread=0x4d400, ms=1000, ns=272629312) at extlibs/jamvm-1.4.1/src/thread.c:215
-#4  0x6b00d4fc in asyncGCThreadLoop (self=0x4d400) at extlibs/jamvm-1.4.1/src/alloc.c:1179
-#5  0x6b022c2c in shell (args=0x4d480) at extlibs/jamvm-1.4.1/src/thread.c:629
-
-(gdb) thread 4
-[Switching to thread 4 (thread 260)]#0  __futex_wait () at system/klibc/android/atomics_arm.S:88
-88              bx              lr
-(gdb) bt
-#0  __futex_wait () at system/klibc/android/atomics_arm.S:88
-#1  0x53010eb8 in pthread_cond_timedwait (cond=0x6b039934, mutex=0x6b039930, abstime=0x0)
-   at system/klibc/android/pthread.c:490
-#2  0x6b00b3ec in referenceHandlerThreadLoop (self=0x4d360) at extlibs/jamvm-1.4.1/src/alloc.c:1247
-#3  0x6b022c2c in shell (args=0x4d960) at extlibs/jamvm-1.4.1/src/thread.c:629
-
-(gdb) thread 3
-[Switching to thread 3 (thread 259)]#0  __futex_wait () at system/klibc/android/atomics_arm.S:88
-88              bx              lr
-(gdb) bt
-#0  __futex_wait () at system/klibc/android/atomics_arm.S:88
-#1  0x53010eb8 in pthread_cond_timedwait (cond=0x6b03992c, mutex=0x6b039928, abstime=0x0)
-   at system/klibc/android/pthread.c:490
-#2  0x6b00b1dc in finalizerThreadLoop (self=0x4d8e0) at extlibs/jamvm-1.4.1/src/alloc.c:1238
-#3  0x6b022c2c in shell (args=0x4d960) at extlibs/jamvm-1.4.1/src/thread.c:629
-
-(gdb) thread 2
-[Switching to thread 2 (thread 258)]#0  __sigsuspend () at system/klibc/syscalls/__sigsuspend.S:12
-12          movs    r0, r0
-(gdb) bt
-#0  __sigsuspend () at system/klibc/syscalls/__sigsuspend.S:12
-#1  0x6b023814 in dumpThreadsLoop (self=0x51b98) at extlibs/jamvm-1.4.1/src/thread.c:1107
-#2  0x6b022c2c in shell (args=0x51b58) at extlibs/jamvm-1.4.1/src/thread.c:629
-</pre>
-
-<a name="Crash_in_C_C_code"></a><h4>Crash in C / C++ code</h4>
-<p>If it crashes, connect with <code>aproto</code> and run <code>logcat</code> on the device. You should see output like this:</p>
-
-<pre class="prettify">
-I/ActivityManager(  188): Starting activity: Intent { component=com.android.calendar.MonthScreen }
-I/ActivityManager(  188): Starting application com.android.calendar to host activity com.android.calendar.MonthScree
-n
-I/ServiceManager(  417): Executing: /android/bin/app_process (link=/android/bin/app_process, wrapper=/android/bin/app_process)
-I/DEBUG: -- observer of pid 417 starting --
-I/appproc (  417): App process is starting with pid=417, class=android/activity/ActivityThread.
-I/DEBUG: -- observer of pid 417 exiting --
-I/DEBUG: -- observer of pid 420 starting --
-I/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
-I/DEBUG: pid: 373, tid: 401  &gt;&gt;&gt; android.content.providers.pim &lt;&lt;&lt;
-I/DEBUG: signal 11 (SIGSEGV), fault addr 00000000
-I/DEBUG:  r0 ffffffff  r1 00000000  r2 00000454  r3 002136d4
-I/DEBUG:  r4 002136c0  r5 40804810  r6 0022dc70  r7 00000010
-I/DEBUG:  r8 0020a258  r9 00000014  10 6b039074  fp 109ffcf8
-I/DEBUG:  ip 6b039e90  sp 109ffc0c  lr 580239f0  pc 6b0156a0
-I/DEBUG:          #01  pc 6b0156a0  /android/lib/libjamvm.so
-I/DEBUG:          #01  lr 580239f0  /android/lib/libandroid_runtime.so
-I/DEBUG:          #02  pc 6b01481c  /android/lib/libjamvm.so
-I/DEBUG:          #03  pc 6b0148a4  /android/lib/libjamvm.so
-I/DEBUG:          #04  pc 6b00ebc0  /android/lib/libjamvm.so
-I/DEBUG:          #05  pc 6b02166c  /android/lib/libjamvm.so
-I/DEBUG:          #06  pc 6b01657c  /android/lib/libjamvm.so
-I/DEBUG:          #07  pc 6b01481c  /android/lib/libjamvm.so
-I/DEBUG:          #08  pc 6b0148a4  /android/lib/libjamvm.so
-I/DEBUG:          #09  pc 6b0235c0  /android/lib/libjamvm.so
-I/DEBUG:          #10  pc 5300fac4  /android/lib/libc.so
-I/DEBUG:          #11  pc 5300fc5c  /android/lib/libc.so
-I/DEBUG: -- observer of pid 373 exiting --
-I/DEBUG: -- observer of pid 423 starting --
-</pre>
-
-<p>If debugging output indicates an error in C or C++ code, the addresses aren't particularly useful, but the debugging symbols aren't present on the device.  Use the "stack" tool to convert these addresses to files and line numbers, for example:</p>
-
-<pre class="prettify"> 
-pid: 373, tid: 401  &gt;&gt;&gt; android.content.providers.pim &lt;&lt;&lt;
-
- signal 11 (SIGSEGV), fault addr 00000000
-  r0 ffffffff  r1 00000000  r2 00000454  r3 002136d4
-  r4 002136c0  r5 40804810  r6 0022dc70  r7 00000010
-  r8 0020a258  r9 00000014  10 6b039074  fp 109ffcf8
-  r8 0020a258  r9 00000014  10 6b039074  fp 109ffcf8
-
-  ADDR      FUNCTION                        FILE:LINE
-  6b0156a0  executeJava                     extlibs/jamvm-1.4.1/src/interp.c:2674
-  580239f0  android_util_Parcel_freeBuffer  libs/android_runtime/android_util_Binder.cpp:765
-  6b01481c  executeMethodVaList             extlibs/jamvm- 1.4.1/src/execute.c:91
-  6b0148a4  executeMethodArgs               extlibs/jamvm-1.4.1/src/execute.c:67
-  6b00ebc0  initClass                       extlibs/jamvm-1.4.1/src/class.c:1124
-  6b02166c  resolveMethod                   extlibs/jamvm- 1.4.1/src/resolve.c:197
-  6b01657c  executeJava                     extlibs/jamvm-1.4.1/src/interp.c:2237
-  6b01481c  executeMethodVaList             extlibs/jamvm-1.4.1/src/execute.c:91
-  6b0148a4  executeMethodArgs               extlibs/jamvm- 1.4.1/src/execute.c:67
-  6b0235c0  threadStart                     extlibs/jamvm-1.4.1/src/thread.c:355
-  5300fac4  __thread_entry                  system/klibc/android/pthread.c:59
-  5300fc5c  pthread_create                  system/klibc/android/pthread.c:182
-</pre>
-
-<p>Or you can run <code>logcat</code> without any parameters and it will read from <code>stdin</code>.  You can then paste output into the terminal or pipe it. Run <code>logcat</code> from the top of the tree in the environment in which you do builds so that the application can determine relative paths to the toolchain to use to decode the object files.
-</p>
-</body>
-</html>
diff --git a/pdk/docs/guide/display_drivers.jd b/pdk/docs/guide/display_drivers.jd
deleted file mode 100755
index 1eddd15..0000000
--- a/pdk/docs/guide/display_drivers.jd
+++ /dev/null
@@ -1,345 +0,0 @@
-page.title=Display Drivers
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidDisplayDriverFunctionality">Functionality</a></li>
-<li><a href="#androidDisplayDriversSourceTemplate">Implementing Your Own Driver (Driver Template)</a></li>
-<li><a href="#androidDisplayDriversTroubleshooting">Troubleshooting</a></li>
-</ul>
-</div>
-</div>
-
-<p>This section describes how the display driver functions and offers a functional template designed to help you build your own device-specific driver.</p>
-<p>Android relies on the standard frame buffer device (<code>/dev/fb0</code> or <code>/dev/graphics/fb0</code>) and driver as described in the <code>linux/fb.h</code> kernel header file. For more information regarding the standard Linux frame buffer, please see <a href="http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.24.y.git;a=blob;f=Documentation/fb/framebuffer.txt">The Frame Buffer Device</a> at <a href="http://kernel.org">http://kernel.org</a>.
-
-
-<a name="androidDisplayDriverFunctionality"></a><h3>Functionality</h3>
-
-<p>In Android, every window gets implemented with an underlying Surface object, an object that gets placed on the framebuffer by SurfaceFlinger, the system-wide screen composer. Each Surface is double-buffered. The back buffer is where drawing takes place and the front buffer is used for composition. </p>
-<p> When <code>unlockCanvas()</code> is called, the back buffer is posted, which 
-  means that it gets displayed and &nbsp;becomes available again. Android flips the front and back buffers, ensuring a minimal amount of buffer copying and that there is always a buffer for SurfaceFlinger to use for composition (which ensures that the screen never flickers or shows artifacts).</p>
-<p>Android makes two requirements of the driver: a linear address space of mappable memory that it can write to directly and support for the rgb_565 pixel format. A typical frame display includes:</p>
-<ul>
-  <li>accessing the driver by calling open on <code>/dev/fb0</code></li>
-  <li>using the <code>FBIOGET_FSCREENINFO</code> and <code>FBIOGET_VSCREENINFO</code> Input / Output Control (ioctl) calls to retrieve information about the screen</li>
-  <li>using <code>FBIOPUT_VSCREENINFO</code> ioctl to attempt to create a virtual display twice the size of the physical screen and to set the pixel format to rgb_565. If this succeeds, double buffering is accomplished with video memory. </li>
-</ul>
-<p>When a page flip is required, Android makes another <code>FBIOPUT_VSCREENINFO</code> ioctl call with a new y-offset pointing to the other buffer in video memory.  This ioctl, in turn, invokes the driver's <code>.fb_pan_display</code> function in order to do the actual flip. If there isn't sufficient video memory, regular memory is used and is just copied into the video memory when it is time do the flip. After allocating the video memory and setting the pixel format, Android  uses <code>mmap()</code> to map the memory into the process's address space.  All writes to the frame buffer are done through this mmaped memory.</p>
-<p>To maintain adequate performance, framebuffer memory should be cacheable. If you use write-back, flush the cache before the frame buffer is written from DMA to the LCD. If that isn't possible, you may use write-through. As a last resort, you can also use uncached memory with the write-bugger enabled, but performance will suffer.</p>
-
-
-<a name="androidDisplayDriversSourceTemplate"></a><h3>Implementing Your Own Driver (Driver Template)</h3>
-
-<p>The following sample driver offers a functional example to help you build your own display driver. Modify <code>PGUIDE_FB...</code> macros as desired to match the requirements of your own device hardware.</p>
-<pre class="prettyprint">
-/*
- *  pguidefb.c
- * 
- *  Copyright 2007, Google Inc.
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License version 2 as
- *  published by the Free Software Foundation.
- */
-
-
-/*
- * ANDROID PORTING GUIDE: FRAME BUFFER DRIVER TEMPLATE
- *
- * This template is designed to provide the minimum frame buffer
- * functionality necessary for Android to display properly on a new
- * device.  The PGUIDE_FB macros are meant as pointers indicating
- * where to implement the hardware specific code necessary for the new
- * device.  The existence of the macros is not meant to trivialize the
- * work required, just as an indication of where the work needs to be
- * done.
- */
-
-#include &lt;linux/module.h&gt;
-#include &lt;linux/kernel.h&gt;
-#include &lt;linux/errno.h&gt;
-#include &lt;linux/string.h&gt;
-#include &lt;linux/slab.h&gt;
-#include &lt;linux/delay.h&gt;
-#include &lt;linux/mm.h&gt;
-#include &lt;linux/fb.h&gt;
-#include &lt;linux/init.h&gt;
-#include &lt;linux/platform_device.h&gt;
-
-
-/* Android currently only uses rgb565 in the hardware framebuffer */
-#define ANDROID_BYTES_PER_PIXEL 2
-
-/* Android will use double buffer in video if there is enough */
-#define ANDROID_NUMBER_OF_BUFFERS 2
-
-/* Modify these macros to suit the hardware */
-
-#define PGUIDE_FB_ROTATE 
-	/* Do what is necessary to cause the rotation */
-
-#define PGUIDE_FB_PAN 
-	/* Do what is necessary to cause the panning */
-
-#define PGUIDE_FB_PROBE_FIRST 
-	/* Do any early hardware initialization */
-
-#define PGUIDE_FB_PROBE_SECOND
-	/* Do any later hardware initialization */
-
-#define PGUIDE_FB_WIDTH 320
-	/* Return the width of the screen */
-
-#define PGUIDE_FB_HEIGHT 240
-	/* Return the heighth of the screen */
-
-#define PGUIDE_FB_SCREEN_BASE 0
-	/* Return the virtual address of the start of fb memory */
-
-#define PGUIDE_FB_SMEM_START PGUIDE_FB_SCREEN_BASE
-	/* Return the physical address of the start of fb memory */
-
-#define PGUIDE_FB_REMOVE 
-	/* Do any hardware shutdown */
-
-
-
-
-
-struct pguide_fb {
-	int rotation;
-	struct fb_info fb;
-	u32			cmap[16];
-};
-
-static inline u32 convert_bitfield(int val, struct fb_bitfield *bf)
-{
-	unsigned int mask = (1 << bf->length) - 1;
-
-	return (val >> (16 - bf->length) & mask) << bf->offset;
-}
-
-
-/* set the software color map.  Probably doesn't need modifying. */
-static int
-pguide_fb_setcolreg(unsigned int regno, unsigned int red, unsigned int green,
-		 unsigned int blue, unsigned int transp, struct fb_info *info)
-{
-        struct pguide_fb  *fb = container_of(info, struct pguide_fb, fb);
-
-	if (regno < 16) {
-		fb->cmap[regno] = convert_bitfield(transp, &fb->fb.var.transp) |
-				  convert_bitfield(blue, &fb->fb.var.blue) |
-				  convert_bitfield(green, &fb->fb.var.green) |
-				  convert_bitfield(red, &fb->fb.var.red);
-		return 0;
-	}
-	else {
-		return 1;
-	}
-}
-
-/* check var to see if supported by this device.  Probably doesn't
- * need modifying.
- */
-static int pguide_fb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
-{
-	if((var->rotate & 1) != (info->var.rotate & 1)) {
-		if((var->xres != info->var.yres) ||
-		   (var->yres != info->var.xres) ||
-		   (var->xres_virtual != info->var.yres) ||
-		   (var->yres_virtual > 
-		    info->var.xres * ANDROID_NUMBER_OF_BUFFERS) ||
-		   (var->yres_virtual < info->var.xres )) {
-			return -EINVAL;
-		}
-	}
-	else {
-		if((var->xres != info->var.xres) ||
-		   (var->yres != info->var.yres) ||
-		   (var->xres_virtual != info->var.xres) ||
-		   (var->yres_virtual > 
-		    info->var.yres * ANDROID_NUMBER_OF_BUFFERS) ||
-		   (var->yres_virtual < info->var.yres )) {
-			return -EINVAL;
-		}
-	}
-	if((var->xoffset != info->var.xoffset) ||
-	   (var->bits_per_pixel != info->var.bits_per_pixel) ||
-	   (var->grayscale != info->var.grayscale)) {
-		return -EINVAL;
-	}
-	return 0;
-}
-
-
-/* Handles screen rotation if device supports it. */
-static int pguide_fb_set_par(struct fb_info *info)
-{
-	struct pguide_fb *fb = container_of(info, struct pguide_fb, fb);
-	if(fb->rotation != fb->fb.var.rotate) {
-		info->fix.line_length = 
-		  info->var.xres * ANDROID_BYTES_PER_PIXEL;
-		fb->rotation = fb->fb.var.rotate;
-		PGUIDE_FB_ROTATE;
-	}
-	return 0;
-}
-
-
-/* Pan the display if device supports it. */
-static int pguide_fb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
-{
-	struct pguide_fb *fb    __attribute__ ((unused)) 
-	    = container_of(info, struct pguide_fb, fb);
-
-	/* Set the frame buffer base to something like:
-	   fb->fb.fix.smem_start + fb->fb.var.xres * 
-	   ANDROID_BYTES_PER_PIXEL * var->yoffset
-	*/
-	PGUIDE_FB_PAN;
-
-	return 0;
-}
-
-
-static struct fb_ops pguide_fb_ops = {
-	.owner          = THIS_MODULE,
-	.fb_check_var   = pguide_fb_check_var,
-	.fb_set_par     = pguide_fb_set_par,
-	.fb_setcolreg   = pguide_fb_setcolreg,
-	.fb_pan_display = pguide_fb_pan_display,
-
-	/* These are generic software based fb functions */
-	.fb_fillrect    = cfb_fillrect,
-	.fb_copyarea    = cfb_copyarea,
-	.fb_imageblit   = cfb_imageblit,
-};
-
-
-static int pguide_fb_probe(struct platform_device *pdev)
-{
-	int ret;
-	struct pguide_fb *fb;
-	size_t framesize;
-	uint32_t width, height;
-
-	fb = kzalloc(sizeof(*fb), GFP_KERNEL);
-	if(fb == NULL) {
-		ret = -ENOMEM;
-		goto err_fb_alloc_failed;
-	}
-	platform_set_drvdata(pdev, fb);
-
-	PGUIDE_FB_PROBE_FIRST;
-	width = PGUIDE_FB_WIDTH;
-	height = PGUIDE_FB_HEIGHT;
-
-
-	fb->fb.fbops		= &pguide_fb_ops;
-
-	/* These modes are the ones currently required by Android */
-
-	fb->fb.flags		= FBINFO_FLAG_DEFAULT;
-	fb->fb.pseudo_palette	= fb->cmap;
-	fb->fb.fix.type		= FB_TYPE_PACKED_PIXELS;
-	fb->fb.fix.visual = FB_VISUAL_TRUECOLOR;
-	fb->fb.fix.line_length = width * ANDROID_BYTES_PER_PIXEL;
-	fb->fb.fix.accel	= FB_ACCEL_NONE;
-	fb->fb.fix.ypanstep = 1;
-
-	fb->fb.var.xres		= width;
-	fb->fb.var.yres		= height;
-	fb->fb.var.xres_virtual	= width;
-	fb->fb.var.yres_virtual	= height * ANDROID_NUMBER_OF_BUFFERS;
-	fb->fb.var.bits_per_pixel = 16;
-	fb->fb.var.activate	= FB_ACTIVATE_NOW;
-	fb->fb.var.height	= height;
-	fb->fb.var.width	= width;
-
-	fb->fb.var.red.offset = 11;
-	fb->fb.var.red.length = 5;
-	fb->fb.var.green.offset = 5;
-	fb->fb.var.green.length = 6;
-	fb->fb.var.blue.offset = 0;
-	fb->fb.var.blue.length = 5;
-
-	framesize = width * height * 
-	  ANDROID_BYTES_PER_PIXEL * ANDROID_NUMBER_OF_BUFFERS;
-	fb->fb.screen_base = PGUIDE_FB_SCREEN_BASE;
-	fb->fb.fix.smem_start = PGUIDE_FB_SMEM_START;
-	fb->fb.fix.smem_len = framesize;
-
-	ret = fb_set_var(&fb->fb, &fb->fb.var);
-	if(ret)
-		goto err_fb_set_var_failed;
-
-	PGUIDE_FB_PROBE_SECOND;
-
-	ret = register_framebuffer(&fb->fb);
-	if(ret)
-		goto err_register_framebuffer_failed;
-
-	return 0;
-
-
-err_register_framebuffer_failed:
-err_fb_set_var_failed:
-	kfree(fb);
-err_fb_alloc_failed:
-	return ret;
-}
-
-static int pguide_fb_remove(struct platform_device *pdev)
-{
-	struct pguide_fb *fb = platform_get_drvdata(pdev);
-
-	PGUIDE_FB_REMOVE;
-
-	kfree(fb);
-	return 0;
-}
-
-
-static struct platform_driver pguide_fb_driver = {
-	.probe		= pguide_fb_probe,
-	.remove		= pguide_fb_remove,
-	.driver = {
-		.name = "pguide_fb"
-	}
-};
-
-static int __init pguide_fb_init(void)
-{
-	return platform_driver_register(&pguide_fb_driver);
-}
-
-static void __exit pguide_fb_exit(void)
-{
-	platform_driver_unregister(&pguide_fb_driver);
-}
-
-module_init(pguide_fb_init);
-module_exit(pguide_fb_exit);
-
-MODULE_LICENSE("GPL");
-</pre>
-
-
-<a name="androidDisplayDriversTroubleshooting"></a><h3>Troubleshooting</h3>
-
-<p>Both of the following problems have a similar cause:</p>
-<ul>
-  <li><strong>Number keys</strong>: In the dialer application, when a number key is pressed to dial a phone number, the number doesn't display on the screen until after the next number has been pressed. </li>
-  <li><strong>Arrow keys</strong>: When an arrow key is pressed, the desired icon doesn't get highlighted. For example, if you browse through icons in the Applications menu, you might notice that icons aren't highlighted as expected when you use the arrow key to navigate between options.</li>
-</ul>
-<p>Both problems are caused by an incorrect implementation of the frame buffer's page flipping. Key events are captured, but the graphical interface appears to drop every other frame. </p>
-<p>Android relies on a double buffer to smoothly render page flips (please see <a href="#androidDisplayDriverFunctionality">Functionality</a> for details).</p>
diff --git a/pdk/docs/guide/getting_source_code.jd b/pdk/docs/guide/getting_source_code.jd
deleted file mode 100755
index e735274..0000000
--- a/pdk/docs/guide/getting_source_code.jd
+++ /dev/null
@@ -1,128 +0,0 @@
-page.title=Getting Source Code
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<a name="toc"/>
-<div style="padding:10px">
-<a href="#androidSourceSetupBuildGitSetup">Introduction</a><br/>
-<a href="#androidSourceSetupBuildGitSetupInstall">Installing and Configuring Git</a><br/>
-<a href="#androidSourceSetupBuildGitSetupServer">Establishing Server Access</a><br/><div style="padding-left:40px">
-
-<a href="#androidSourceSetupBuildGitSetupServerRSAKeys">Generating RSA Keys</a><br/>
-<a href="#androidSourceSetupBuildGitSetupServerVerifyConnection">Verifying a Connection to the Git Server</a><br/></div>
-<a href="#androidSourceSetupGetCode">Downloading Code</a><br/>
-<a href="#androidSourceSetupExtractingPatch">Extracting an Android Patch</a><br/></div>
-
-<a name="androidSourceSetupBuildGitSetup"></a><h2>Introduction</h2>
-
-<p>Android relies on Git, a version control system, to install the Android platform. You will need to install Git 1.5.2 or greater in order to access the source tree. Please visit <a href="http://git.or.cz/">http://git.or.cz/</a> for more information regarding Git.</p>
-<p>Git permits you to control access to working directories, and we recommend that you use it to limit Android repository access to only a few people within your organization (please refer to your Google NDA for potential contractual restraints on sharing Android source access). </p>
-<p>You may clone Google's repository to a local copy for sharing internally (see Git documentation for details).</p>
-
-
-<a name="androidSourceSetupBuildGitSetupInstall"></a><h2>Installing and Configuring Git</h2>
-
-<p>To install the Git package, execute:</p>
-<pre class="prettyprint">
-% sudo apt-get install git-core
-</pre>
-
-
-<a name="androidSourceSetupBuildGitSetupServer"></a><h2>Establishing Server Access</h2>
-
-<p>Once Git is cleanly installed, you need to establish a connection with Google's Git server, a connection that requires an RSA key in order to authenticate requests.</p>
-
-
-<a name="androidSourceSetupBuildGitSetupServerRSAKeys"></a><h3>Generating RSA Keys</h3>
-
-<p>Each developer must have a unique RSA key in order to access Android source code. To generate an RSA key: </p>
-<p>
-<ol>
-<li>Type:<br/>
-<pre class="prettyprint">% ssh-keygen -t rsa -C  email@domain.com</pre><br/>
-You must use a valid email address to create your key.</li>
-<li>When prompted, indicate the file to which you wish to write your key (<code>id_rsa</code> in this example).</li>
-<li>When prompted, associate a passphrase with your key.</li>
-<li>Upon success, you should have two files saved to the designated directory:  </li>
-<ul>
-  <li><code>id_rsa</code>: This file contains the private half of your RSA key. You shouldn't share this file with anyone. </li>
-  <li><code>id_rsa.pub</code>: This is the public half or your RSA key and you should send it to your Google technical account manager.</li>
-  </ul>
-</ol>
-</p>
-<p>Send your Google Account Manager your public key file in order to establish Git server access. </p>
-
-
-<a name="androidSourceSetupBuildGitSetupServerVerifyConnection"></a><h3>Verifying a Connection to the Git Server</h3>
-
-<p>Once you have generated an RSA key and shared the public file with Google, you can test your connection with the Git server with the following command:</p>
-<pre class="prettyprint">
-% ssh  android-git.ext.google.com
-</pre>
-
-<p>You should receive one of the following results:</p>
-
-<table border=1 cellpadding=2 cellspacing=0>
- <tbody><tr>
-  <th scope="col">Result</th>
-  <th scope="col">Cause</th>
-  <th  scope="col">Action</th>
- </tr>
-  <tr>
-    <td>
-<code>fatal: What do you think I am? A shell?<BR>
-Connection to android-git closed.</code>
-</pre>	</td>
-    <td>Success</td>
-    <td>None. You successfully connected to the Git server. (You should not have shell access and it's expected to receive this error.)</td>
-  </tr>
-  <tr>
-    <td>ssh hangs and eventually times out. </td>
-    <td>Your setup is failing to locate and establish a basic connection. </td>
-    <td>Google needs to debug network settings. </td>
-  </tr>
-  <tr>
-    <td>Error: Permission denied &lt;public key&gt; </td>
-    <td>Either you are not using the matching username or the RSA private key does not match the public key. </td>
-    <td>Try executing:<BR> 
-	<code>
-% ssh $USER@android-
-  git.ext.google.com
-</code></td>
-  </tr>
-</table>
-
-
-<a name="androidSourceSetupGetCode"></a><h2>Downloading Code</h2>
-
-<p>Android source code is maintained in two repositories: <code>device</code> and <code>kernel</code>. The <code>device</code> repository includes the Android framework (things like the Activity Manager, Window Manager, Telephony Manager, View System, etc.). The <code>kernel</code> repository includes the core code necessary to run the operating system (things like the Display Driver, Camera Driver, Keypad Driver, Power Management, etc.). (Please see <a href="http://code.google.com/android/what-is-android.html">What is Android?</a> for details.)</p>
-
-<p>Save device and kernel code at the same directory level, for example:</p>
-<p>
-<ul><li><code>/home/joe/android/device</code></li>
-<li><code>/home/joe/android/kernel</code></li>
-</ul></p>
-<p><b>Device Code</b></p>
-<p>To download device code, you need your username and a unique <code>&lt;path&gt;</code> string supplied by Google to execute the following:</p>
-<pre class="prettyprint">
-% git-clone $USER@android-git.ext.google.com:&lt;path&gt;/device.git
-</pre>
-
-<p><b>Kernel Code</b></p>
-<p>To download kernel code, you need your username and a unique <code>&lt;path&gt;</code> string supplied by Google to execute the following:</p>
-<pre class="prettyprint">
-% git-clone $USER@android-git.ext.google.com:&lt;path&gt;/kernel.git
-</pre>
- 
-
-
-<a name="androidSourceSetupExtractingPatch"></a><h2>Extracting an Android Patch</h2>
-
-<p>You likely already have Linux running on your platform and only need to integrate Android-specific changes. The following directions describe how to extract an Android patch.</p>
-<ol>
-  <li>Download a generic version  of the Linux kernel that matches the Linux version downloaded with the Android Kernel code.</li>
-  <li>Run <code>diff</code> on the two kernel packages to get Android-specific changes.</li>
-  <li>Apply the patch to your target kernel and build.</li>
-</ol>
-
diff --git a/pdk/docs/guide/gps.jd b/pdk/docs/guide/gps.jd
deleted file mode 100755
index 2acad6d..0000000
--- a/pdk/docs/guide/gps.jd
+++ /dev/null
@@ -1,60 +0,0 @@
-page.title=GPS
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidGPSBuildingDriver">Building a GPS Library</a></li>
-<li><a href="#androidGPSInterface">Interface</a></li>
-</ul>
-</div>
-</div>
-
-<p>Android defines a user space C abstraction interface for GPS hardware. The interface header is defined in <code>include/hardware/gps.h</code>. In order to integate GPS with Android, you need to build a shared library that implements this interface. </p>
-
-
-<a name="androidGPSBuildingDriver"></a><h3>Building a GPS Library</h3>
-
-<p>To implement a GPS driver, create a shared library that implements the interface defined in <code>gps.h</code>. You must name your shared library <code>libgps.so</code> so that it will get loaded from <code>/system/lib</code> at runtime. Place GPS sources and Android.mk in <code>vendor/acme/chipset_or_board/gps/</code> (where "acme" is your organization name and "chipset_or_board" is your hardware target).</p>
-
-<p>The following stub <code>Android.mk</code> file ensures that <code>libgps</code> compiles and links to the appropriate libraries:</p>
-
-<pre class="prettify">
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libgps
-
-LOCAL_STATIC_LIBRARIES:= \
-# include any static library dependencies
-
-LOCAL_SHARED_LIBRARIES := \
-# include any shared library dependencies
-
-LOCAL_SRC_FILES += \
-# include your source files.  eg. MyGpsLibrary.cpp
-
-LOCAL_CFLAGS += \
-# include any needed compile flags
-
-LOCAL_C_INCLUDES:= \
-# include any needed local header files
-
-include $(BUILD_SHARED_LIBRARY)
-</pre>
-
-
-<a name="androidGPSInterface"></a><h3>Interface</h3>
-
-
-
-<p><span class="lh3"><a name="androidDoxygenNote"></a></span>
-
-<p class="note"><strong>Note</strong>: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, <a href="gps.html">click here</a>.</p>
-
-
-<iframe onLoad="resizeDoxFrameHeight();" src="gps_8h.html" scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" frameborder="0" style="width:100%;"></iframe>
diff --git a/pdk/docs/guide/group__memory.jd b/pdk/docs/guide/group__memory.jd
deleted file mode 100755
index 0423515..0000000
--- a/pdk/docs/guide/group__memory.jd
+++ /dev/null
@@ -1,24 +0,0 @@
-page.title=Providing Heap Memory
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div>
-
-<small>
-[<a class="el" href="group__networking.html">Neworking Support</a>]</small>
-</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-</table>
-This is the text in the "Providing Heap Memory" subgroup </div>
-
diff --git a/pdk/docs/guide/group__networking.jd b/pdk/docs/guide/group__networking.jd
deleted file mode 100755
index e1e942c..0000000
--- a/pdk/docs/guide/group__networking.jd
+++ /dev/null
@@ -1,26 +0,0 @@
-page.title=Networking Support
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div>
-
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Modules</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__memory.html">Porividng Heap Memory</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This is a text for the Networking Support Group </div>
-
diff --git a/pdk/docs/guide/images/androidBluetooth.gif b/pdk/docs/guide/images/androidBluetooth.gif
deleted file mode 100755
index e62f5a8..0000000
--- a/pdk/docs/guide/images/androidBluetooth.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/guide/images/androidPMArchitecture.gif b/pdk/docs/guide/images/androidPMArchitecture.gif
deleted file mode 100755
index 1aa48db..0000000
--- a/pdk/docs/guide/images/androidPMArchitecture.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/guide/images/android_audio_architecture.gif b/pdk/docs/guide/images/android_audio_architecture.gif
deleted file mode 100755
index 79854a3..0000000
--- a/pdk/docs/guide/images/android_audio_architecture.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/guide/images/cameraPreview.jpg b/pdk/docs/guide/images/cameraPreview.jpg
deleted file mode 100755
index 3dea011..0000000
--- a/pdk/docs/guide/images/cameraPreview.jpg
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/guide/images/cameraTakePicture.jpg b/pdk/docs/guide/images/cameraTakePicture.jpg
deleted file mode 100755
index 4ac6d95..0000000
--- a/pdk/docs/guide/images/cameraTakePicture.jpg
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/guide/images/camera_video2.gif b/pdk/docs/guide/images/camera_video2.gif
deleted file mode 100755
index 8c46a83..0000000
--- a/pdk/docs/guide/images/camera_video2.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/guide/images/customLogo.gif.png b/pdk/docs/guide/images/customLogo.gif.png
deleted file mode 100755
index 3322fed..0000000
--- a/pdk/docs/guide/images/customLogo.gif.png
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/guide/images/stk.gif b/pdk/docs/guide/images/stk.gif
deleted file mode 100755
index 9d6db69..0000000
--- a/pdk/docs/guide/images/stk.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/guide/images/stk_display_text.gif b/pdk/docs/guide/images/stk_display_text.gif
deleted file mode 100755
index b737c51..0000000
--- a/pdk/docs/guide/images/stk_display_text.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/guide/images/stk_display_text2.gif b/pdk/docs/guide/images/stk_display_text2.gif
deleted file mode 100755
index cac707b..0000000
--- a/pdk/docs/guide/images/stk_display_text2.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/guide/images/stk_refresh_init.gif b/pdk/docs/guide/images/stk_refresh_init.gif
deleted file mode 100755
index a79ccaa..0000000
--- a/pdk/docs/guide/images/stk_refresh_init.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/guide/images/stk_refresh_reset.gif b/pdk/docs/guide/images/stk_refresh_reset.gif
deleted file mode 100755
index dff8d4e..0000000
--- a/pdk/docs/guide/images/stk_refresh_reset.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/guide/images/stk_refresh_update.gif b/pdk/docs/guide/images/stk_refresh_update.gif
deleted file mode 100755
index 15614ed..0000000
--- a/pdk/docs/guide/images/stk_refresh_update.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/guide/images/stk_send_SMS.gif b/pdk/docs/guide/images/stk_send_SMS.gif
deleted file mode 100755
index 67fc1a0..0000000
--- a/pdk/docs/guide/images/stk_send_SMS.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/guide/images/telephony.gif b/pdk/docs/guide/images/telephony.gif
deleted file mode 100755
index 8515730..0000000
--- a/pdk/docs/guide/images/telephony.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/guide/images/telephony_solicted_example.gif b/pdk/docs/guide/images/telephony_solicted_example.gif
deleted file mode 100755
index 352ca98..0000000
--- a/pdk/docs/guide/images/telephony_solicted_example.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/guide/images/telephony_unsolicted_example.gif b/pdk/docs/guide/images/telephony_unsolicted_example.gif
deleted file mode 100755
index e51c4d6..0000000
--- a/pdk/docs/guide/images/telephony_unsolicted_example.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/guide/index.jd b/pdk/docs/guide/index.jd
deleted file mode 100644
index d22fae8..0000000
--- a/pdk/docs/guide/index.jd
+++ /dev/null
@@ -1,28 +0,0 @@
-page.title=Android Platform Developer's Guide
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-
-<p>Welcome to the <i>Android Platform Dev Guide</i>!  This guide provides an under-the-hood introduction to the Android platform, and is designed for platform developers and manufacturers building Android-powered devices.</p>
-
-<p>If you're a software developer interested in developing applications for Android, please visit the <a href="http://developer.android.com">Android Developers site</a>.</p>
-
-<a name="androidWelcomeAboutThisGuide"></a><h2>About this Guide</h2>
-
-<p>This guide is divided into sections by logical platform component (see the table of contents on the left).  Android is a complex project under constant development, and the level of detail, as well as the rate of change, may vary from section to section.  This guide will be updated regularly as more content becomes available.</p>
-
-<a name="androidWelcomeIntendedAudience"></a><h2>Intended Audience</h2>
-
-<p>This guide is intended for engineers who are proficient with building and running Linux on embedded devices.  It aims to provide explanation of the Android platform rather than Linux or embedded development in general.</p>
-
-<a name="androidWelcomeGettingStarted"></a><h2>Getting Started with Android</h2>
-
-<p>If you are new to Android, start with the platform documentation on the following sites:
-<ul>
-<li><a href="http://developer.android.com">Android Developers site</a>:  This site offers high-level platform documentation and architecture concepts.</li>
-<li><a href="http://source.android.com">Android Open Source Project site</a>:  This site provides instructions on how to get the source code, establish a development environment, and perform a simple build.</li>
-</ul>
-
-<p>When you are ready to start customizing the platform or porting to your target hardware, start in this guide with the <a href="build_system.html">Build System overview</a>.</p>
-
diff --git a/pdk/docs/guide/instrumentation_framework.jd b/pdk/docs/guide/instrumentation_framework.jd
deleted file mode 100755
index f2c51ef..0000000
--- a/pdk/docs/guide/instrumentation_framework.jd
+++ /dev/null
@@ -1,143 +0,0 @@
-page.title=Instrumentation Framework
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<a name="toc"/>
-<div style="padding:10px">
-<a href="#androidInstrumentationFrameworkIntro">Introduction</a><br/>
-<a href="#androidInstrumentationFrameworkamCommand">Understanding the am Command</a><br/>
-<a href="#androidInstrumentationFrameworkWritingRunning">Writing and Running Test Cases</a><br/>
-<a href="#androidInstrumentationFrameworkTestCase">Exploring a Test Case</a><br/>
-<a href="#androidInstrumentationFrameworkTroubleshooting">Troubleshooting</a><br/></div>
-
-<a name="androidInstrumentationFrameworkIntro"></a><h2>Introduction</h2>
-
-<p>This document describes how to use the Instrumentation Framework to write test cases. You should have a working knowledge of the following:</p>
-<ul>
-  <li> Android Application Framework </li>
-  <li> Using <code>adb</code>, <code>am</code> and various logging functionality </li>
-  <li> A brief understanding of the application of interest, that is, he names of the classes which handle the intents etc. </li>
-  <li> Junit testing. </li>
-</ul>
-<p> Each Android application runs in its own process. Instrumentation kills the application process and  restarts the process with Instrumentation. Instrumentation gives a handle to the application context used to poke around the application to validate test assertions, allowing you to write test cases to test applications at a much lower level than UI screen shot tests. Note that Instrumentation cannot catch UI bugs. </p>
-
-
-<a name="androidInstrumentationFrameworkamCommand"></a><h2>Understanding the am Command</h2>
-
-<p><code>am</code> is used to start and instrument activities using the adb shell command, as shown in the snippet below:</p>
-<pre class="prettify">
-&gt; adb shell am
-usage: am [start|instrument]
-       am start [-a &lt;ACTION&gt;] [-d &lt;DATA_URI&gt;] [-t &lt;MIME_TYPE&gt;]
-                [-c &lt;CATEGORY&gt; [-c &lt;CATEGORY&gt;] ...]
-                [-e &lt;EXTRA_KEY&gt; &lt;EXTRA_VALUE&gt; [-e &lt;EXTRA_KEY&gt; &lt;EXTRA_VALUE&gt; ...]
-                [-n &lt;COMPONENT&gt;] [-D] [&lt;URI&gt;]
-       am instrument [-e &lt;ARG_NAME&gt; &lt;ARG_VALUE&gt;] [-p &lt;PROF_FILE&gt;]
-                [-w] &lt;COMPONENT&gt;
-For example, to start the Contacts application you can use
-&gt; adb shell am start -n com.google.android.contacts/.ContactsActivity
-</pre>
-
-
-<a name="androidInstrumentationFrameworkWritingRunning"></a><h2>Writing and Running Test Cases</h2>
-
-<p>Each instrumentation test case is similar to an Android application with the distinction that it starts another application. For example, have a look in the <code>tests/Contacts</code> directory. </p>
-<ul>
-  <li> There should be a Makefile and an Android Manifest file. </li>
-  <li> Tests are located in <code>tests/Contacts/src/com/google/android/contactstests</code>. </li>
-  <li> The Instrumentation Test Runner is located at <code>tests/Contacts/src/com/google/android/contactstests/functional/ContactsInstrumentationTestRunner.java</code>.</li>
-</ul>
-<p>Suppose you have a makefile with <code>Contactstests</code> as the target. </p>
-<ul>
-  <li> <code>make Contactstests</code>: Compiles the test cases. </li>
-  <li> <code>adb install Contactstests.apk</code>: Installs the apk on the device. </li>
-  <li> Use the adb shell <code>am</code> command to run them. </li>
-</ul>
-<p> For options and other details, please see <a href="instrumentation_testing.html" target="_top">Instrumentation Testing</a>.</p>
-
-
-<a name="androidInstrumentationFrameworkTestCase"></a><h2>Exploring a Test Case</h2>
-
-<p> The test case described in this section adds and tests a new Contact. Note that you can send intents, register intent receivers, etc. </p>
-<p><code>Instrumentation.java</code> has helper functions that send key events and string, for example: </p>
-<ul>
-  <li><code>getInstrumentation()</code>: Returns the handle to the instrumentation </li>
-  <li><code>sendCharacterSync</code>: Sends a character. </li>
-  <li><code>sendStringSync</code>: Sends a string to an input box. </li>
-  <li><code>sendKeyDownUpSync</code>: Sends a specific keyevent. </li>
-  <li><code>sendTrackballEventSync</code>: Send a trackball event.</li>
-</ul>
-<p> You can find the test case below at <code>device/tests/Contacts.</code></p>
-<pre class="prettify">
-private void addNewContact(String name, int star, int phoneType, String number, String label,
-		String email, int emailType){
-	ContentValues values = new ContentValues();
-	Uri phoneUri = null;
-	Uri emailUri = null;
-
-	values.put(Contacts.People.NAME, name);
-	values.put(Contacts.People.STARRED, star);
-
-	//Add Phone Numbers
-	Uri uri = mActivity.getContentResolver().insert(Contacts.People.CONTENT_URI, values);
-	phoneUri = Uri.withAppendedPath(uri, Contacts.People.Phones.CONTENT_DIRECTORY);
-
-	values.clear();
-	values.put(Contacts.Phones.TYPE, phoneType);
-	values.put(Contacts.Phones.NUMBER, number);
-	values.put(Contacts.Phones.LABEL, label);
-	mActivity.getContentResolver().insert(phoneUri, values);
-
-	//Add Email
-	emailUri = Uri.withAppendedPath(uri, ContactMethods.CONTENT_DIRECTORY);
-
-	values.clear();
-	values.put(ContactMethods.KIND, Contacts.KIND_EMAIL);
-	values.put(ContactMethods.DATA, email);
-	values.put(ContactMethods.LABEL, "");
-	values.put(ContactMethods.TYPE, emailType);
-	mActivity.getContentResolver().insert(emailUri, values);
-}
-
-
- public void testAddSaveSingleContact(){
-	int previousCount = mActivity.getListView().getCount();
-	String message;
-
-	addNewContact(INPUT_NAME_1 + "1", "5435754532", "1" + INPUT_EMAIL_1, CONFIRM_OPTION);
-
-	message = "Added 1 to initial length=" + previousCount + ", but resulted with a count=" +
-		mActivity.getListView().getCount();
-	assertEquals(message, ++previousCount, mActivity.getListView().getCount());
-
-	// Check Content; Name; Num; Starred
-	assertEquals(INPUT_NAME_1 + "1", getTextFromView(0, android.R.id.text1));
-	assertEquals("5435754532", getTextFromView(0, android.R.id.text2));
-
-	//Check email is saved
-	//cursor = returnEmailCursorAtId("1");
-	Uri uri = Uri.parse("content://contacts/people/1");
-	uri = Uri.withAppendedPath(uri, ContactMethods.CONTENT_DIRECTORY);
-	Cursor cursor = mActivity.getContentResolver().query(uri, CONTACTS_COLUMNS, null, null, null);
-	assertTrue("returnEmailCursorAtId: Moving cursor to first row has failed", cursor.first());
-
-	int dataIndex = cursor.getColumnIndexOrThrow("data");
-	assertEquals("1" + INPUT_EMAIL_1, cursor.getString(dataIndex));
-	cursor.deactivate();
-}
-	</pre>
-
-
-<a name="androidInstrumentationFrameworkTroubleshooting"></a><h2>Troubleshooting</h2>
-
-<p>If you run your test cases and nothing appears to happen, have a look at <code>adb logcat</code>. The following is a common problem:</p>
-<pre class="prettify">
-I/dalvikvm(  688): threadid=11: attached from native, name=Binder Thread #1
-I/dalvikvm(  688): threadid=13: attached from native, name=Binder Thread #2
-W/ActivityManager(  469): Unable to find instrumentation info for: ComponentInfo{com.google.android.browser_instrumentation/com.google.android.browser_instrumentation.BrowserWebkitLayoutInstrumentation}
-D/AndroidRuntime(  688): Shutting down VM
-E/AndroidRuntime(  688): ERROR: thread attach failed
-</pre>		
-<p>It's possible that the instrumentation apk isn't installed on your device or that the package name is incorrect in the Manifest file. </p>
-
diff --git a/pdk/docs/guide/instrumentation_testing.jd b/pdk/docs/guide/instrumentation_testing.jd
deleted file mode 100755
index e4d7cc5..0000000
--- a/pdk/docs/guide/instrumentation_testing.jd
+++ /dev/null
@@ -1,494 +0,0 @@
-page.title=Instrumentation Testing
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidInstrumentationTestingFramework">Instrumentation Framework</a></li>
-<li><a href="#androidInstrumentationFrameworkPlatform">Platform Test Suites</a></li>
-<li><a href="#androidInstrumentationFrameworkWritingRunning">Running Tests</a></li>
-<li><a href="#androidInstrumentationTestingCreating">Writing Tests</a></li>
-<li><a href="#troubleshooting">Troubleshooting</a></li>
-</ul>
-</div>
-</div>
-
-<p>This document describes how to use the Instrumentation Framework to write test cases. Instrumentation testing allows you to verify a particular feature or behavior with an automated JUnit TestCase. You can launch activities and providers within an application, send key events, and make assertions about various UI elements. </p>
-<p>You should have a working knowledge of the following:</p>
-<ul>
-  <li> Android Application Framework</li>
-  <li> Using <code>adb</code>, <code>am</code> and various logging functionality </li>
-  <li> A brief understanding of the application of interest, that is, the names of the classes which handle the intents etc. </li>
-  <li> JUnit testing.</li>
-</ul>
-<p> Each Android application runs in its own process. Instrumentation kills the application process and  restarts the process with Instrumentation. Instrumentation gives a handle to the application context used to poke around the application to validate test assertions, allowing you to write test cases to test applications at a much lower level than UI screen shot tests. Note that Instrumentation cannot catch UI bugs. </p>
-
-
-<a name="androidInstrumentationTestingFramework"></a><h3>Instrumentation Framework</h3>
-
-
-
-<a name="androidInstrumentationTestingClasses"></a><h4>Classes</h4>
-
-<p> The following classes help glue together <code>Instrumentation</code> with JUnit testing. </p>
-<table>
-  <tr>
-    <th scope="col">Class</th>
-    <th scope="col">Description</th></tr>
-  <tr>
-    <td valign="top"><code>InstrumentationTestCase</code></td>
-    <td valign="top">
-	<p>This extends the standard JUnit <code>TestCase</code> and offers access to an <code>Instrumentation</code> class. Write tests inside your instrumentation class any way you see fit. For example, your test might launch activities and send key events. For this to work properly, the instrumentation needs to be injected into the test case.</p>	</td>
-  </tr>
-  <tr>
-    <td valign="top"><code>InstrumentationTestRunner</code></td>
-    <td valign="top">The instrumentation test runner is an instrumentation that runs instrumentation test cases and injects itself into each test case. Instrumentation test cases need to be grouped together with an instrumentation test runner with the appropriate target package.</td>
-  </tr>
-  <tr>
-    <td valign="top"><code>InstrumentationTestSuite</code></td>
-    <td valign="top">The instrumentation test suite is a simple extension of the standard JUnit <code>TestSuite</code> that keeps a member <code>Instrumentation</code> variable on hand to inject into each <code>TestCase</code> before running them.  It is used by <code>InstrumentationTestRunner</code>.</td>
-  </tr>
-</table>
-<p> Three additional base classes extend <code>InstrumentationTestCase</code> to allow you to test <code>Activity</code> and <code>Provider</code> classes:</p>
-<table>
-  <tr>
-    <th scope="col">Class</th>
-    <th scope="col">Description</th>
-  </tr>
-  <tr>
-    <td valign="top"><code>ActivityTestCase</code></td>
-    <td valign="top"><p>This class can be used to write tests for a specific activity.  An activity is launched in its <code>setUp()</code> method and finished with <code>tearDown</code>.  If you write a test case that extends <code>ActivityTestCase</code>, you can write tests that access the activity using <code>getActivity()</code> and assume it has been set up properly.</p></td>
-  </tr>
-  <tr>
-    <td valign="top"><code>ServiceTestCase</code></td>
-    <td valign="top">This test case provides a framework in which you can test Service classes in a controlled environment.  It provides basic support for the lifecycle of a Service, and hooks by which you can inject various dependencies and control the environment in which your Service is tested.</td>
-  </tr>
-  <tr>
-    <td valign="top"><code>SingleLaunchActivityTestCase</code></td>
-    <td valign="top">This class is similar to <code>ActivityTestCase</code> except that the activity is launched once per class instead of every time the test case calls setup. </td>
-  </tr>
-  <tr>
-    <td valign="top"><code>ProviderTestCase</code></td>
-    <td valign="top">This class is similar to <code>ActivityTestCase</code> except that it will setup, tear down, and provide access to the <code>Provider</code> of your choice.</td>
-  </tr>
-</table>
-
-
-<a name="androidInstrumentationFrameworkamCommand"></a><h4>Understanding the am Command</h4>
-
-<p>The am command is a command-line interface to the ActivityManager (see <a href="http://code.google.com/android/reference/android/app/ActivityManager.html">http://code.google.com/android/reference/android/app/ActivityManager.html</a> for details). <code>am</code> is used to start and instrument activities using the adb shell command, as shown in the snippet below:</p>
-<pre class="prettify">
-&gt; adb shell am
-usage: am [start|instrument]
-       am start [-a &lt;ACTION&gt;] [-d &lt;DATA_URI&gt;] [-t &lt;MIME_TYPE&gt;]
-                [-c &lt;CATEGORY&gt; [-c &lt;CATEGORY&gt;] ...]
-                [-e &lt;EXTRA_KEY&gt; &lt;EXTRA_VALUE&gt; [-e &lt;EXTRA_KEY&gt; &lt;EXTRA_VALUE&gt; ...]
-                [-n &lt;COMPONENT&gt;] [-D] [&lt;URI&gt;]
-       am instrument [-e &lt;ARG_NAME&gt; &lt;ARG_VALUE&gt;] [-p &lt;PROF_FILE&gt;]
-                [-w] &lt;COMPONENT&gt;
-For example, to start the Contacts application you can use
-&gt; adb shell am start -n com.google.android.contacts/.ContactsActivity
-</pre>
-
-
-<a name="androidInstrumentationFrameworkPlatform"></a><h3>Platform Test Suites</h3>
-
-<p>This section provides an overview for various unit and functional test cases that can be executed through the instrumentation framework.</p>
-
-
-<a name="androidTestingPlatformFramework"></a><h4>Framework Tests</h4>
-
-<p>Framework test cases test the Android application framework or specific Android application functionality that requires an Android runtime context.  These tests can be found in <code>//device/tests</code> and <code>//device/apps/AndroidTests</code>.</p>
-
-
-<a name="androidTestingPlatformCoreLibrary"></a><h4>Core Library</h4>
-
-<p>Core library test cases test the Android library functionality that does not require an Android runtime context.  These tests are split into Android library (android.* package space) tests at <code>//device/java/tests</code> and Java library (java.*, javax.*, etc. packages) tests at <code>//device/dalvik/libcore/.../tests</code>.</p>
-
-
-<a name="androidInstrumentationFrameworkWritingRunning"></a><h3>Running Tests</h3>
-
-<p>Each instrumentation test case is similar to an Android application with the distinction that it starts another application. For example, have a look in the <code>tests/Contacts</code> directory. </p>
-<ul>
-  <li> There should be a Makefile and an Android Manifest file. </li>
-  <li> Tests are located in <code>tests/Contacts/src/com/google/android/contactstests</code>. </li>
-  <li> The Instrumentation Test Runner is located at <code>tests/Contacts/src/com/google/android/contactstests/functional/ContactsInstrumentationTestRunner.java</code>.</li>
-</ul>
-<p>Suppose you have a makefile with <code>Contactstests</code> as the target. </p>
-<ul>
-  <li> <code>make Contactstests</code>: Compiles the test cases. </li>
-  <li> <code>adb install Contactstests.apk</code>: Installs the apk on the device. </li>
-  <li> Use the adb shell <code>am</code> command to run them. </li>
-</ul>
-<p> To run your tests, use the <code>am instrument</code> command with your <code>InstrumentationTestRunner</code> as its argument. Results are printed as a result of the instrumentation. For example, the following snippet displays the output after running the framework tests with one test failing (note the unusual syntax caused by how instrumentations are run via <code>am</code>):</p>
-<pre class="prettify">
-$ adb shell am instrument -w com.google.android.frameworktest/.tests.FrameworkInstrumentationTestRunner
-INSTRUMENTATION_RESULT: test results:=.......F.......
-Time: 6.837
-There was 1 failure:
-1) testSetUpConditions(com.google.android.frameworktest.tests.focus.RequestFocusTest)junit.framework.AssertionFailedError: requestFocus() should work from onCreate.
-        at com.google.android.frameworktest.tests.focus.RequestFocusTest.testSetUpConditions(RequestFocusTest.java:66)
-        at java.lang.reflect.Method.invokeNative(Native Method)
-        at android.test.InstrumentationTestSuite.runTest(InstrumentationTestSuite.java:73)
-        at android.test.InstrumentationTestSuite.runTest(InstrumentationTestSuite.java:73)
-        at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:151)
-        at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1088)
-
-FAILURES!!!
-Tests run: 14,  Failures: 1,  Errors: 0
-
-&lt;RETURN&gt; to continue
-
-INSTRUMENTATION_CODE: -1
-$ 
-</pre>
-
-
-<a name="androidInstrumentationTestingRunningAll"></a><h4>All Tests with Default TestRunner behavior</h4>
-
-<p>If no class or package is passed in to run, InstrumentationTestRunner will automatically find and run all tests under the package of the test application (as defined by the <code>android:targetPackage</code> attribute of the instrumentation defined in its manifest file).
-</p> 
-<pre> 
-$ adb shell am instrument -w \
-  com.android.samples.tests/android.test.InstrumentationTestRunner
- 
-INSTRUMENTATION_RESULT: Test results for InstrumentationTestRunner=..........
-Time: 2.317
- 
-OK (10 tests)
- 
- 
-INSTRUMENTATION_CODE: -1
-</pre>
-
-
-<a name="androidTestingTestSinglePakcage"></a><h4>Running all Tests Under Single Package</h4>
-
-<p>If you have many tests under one package, use the <code>-e package &lt;packagename&gt;</code> option to run all tests under that package without having to manually create a test suite.</p> 
-<pre> 
-$ adb shell am instrument -w \
-  -e package com.android.samples.view \
-  com.android.samples.tests/android.test.InstrumentationTestRunner
-INSTRUMENTATION_RESULT: Test results for InstrumentationTestRunner=........
-Time: 1.587
- 
-OK (8 tests)
-</pre>  
-
-
-<a name="androidTestingSingleTestSuite"></a><h4>Running a Single Test Suite</h4>
-
-<p>If you prefer to explicitly state which tests comprise all of your tests, you can define a test suite and run that directly. By convention, all test packages in your system should have at least one suite called <code>AllTests</code> (see <code>AllTests.java</code>).  To run all of the tests using the <code>AllTests</code> suite for the api demos test app:</p>
-
-<pre> 
-$ adb shell am instrument -w \
-  -e class com.android.samples.AllTests \
-  com.android.samples.tests/android.test.InstrumentationTestRunner
- 
-INSTRUMENTATION_RESULT: Test results for AllTests=..........
-Time: 2.286
- 
-OK (10 tests)
- 
- 
-INSTRUMENTATION_CODE: -1
-</pre> 
-
-
-<a name="androidInstrumentationTestingRunningSingleTestCase"></a><h4>A Single Test Case</h4>
-
-<pre> 
-$ adb shell am instrument -w \
-  -e class com.android.samples.view.Focus2ActivityTest \
-  com.android.samples.tests/android.test.InstrumentationTestRunner
- 
-INSTRUMENTATION_RESULT: Test results for Focus2ActivityTest=....
-Time: 1.359
- 
-OK (4 tests)
- 
- 
-INSTRUMENTATION_CODE: -1
-</pre> 
-
-
-<a name="androidInstrumentationTestingRunningSingleTest"></a><h4>A Single Test</h4>
-
-<pre> 
-$ adb shell am instrument -w \
-  -e class com.android.samples.view.Focus2ActivityTest#testGoingLeftFromRightButtonGoesToCenter \
-  com.android.samples.tests/android.test.InstrumentationTestRunner
- 
-INSTRUMENTATION_RESULT: Test results for Focus2ActivityTest=.
-Time: 0.51
- 
-OK (1 test)
- 
- 
-INSTRUMENTATION_CODE: -1
-</pre> 
-
-
-<a name="androidTestingDebugging"></a><h4>Attaching a debugger to your test</h4>
-
-<p>In order to debug your test code, instruct the controller to stop and wait for the debugger by adding <code>-e debug true</code> to your
-command line.  This causes the test runner to stop and wait for the debugger just before calling your <code>setUp()</code> method.  For example,</p> 
-
-<pre> 
-$ adb shell am instrument -w \
-  -e debug true \
-  com.android.samples.tests/android.test.InstrumentationTestRunner
-</pre> 
-
-
-<a name="androidInstrumentationTestingCreating"></a><h3>Writing Tests</h3>
-
-<p>When writing tests, refer to the ApiDemos tests as models (located at <code>//device/samples/ApiDemos</code>). This section provides an overview of the test structure with ApiDemos.</p>
-
-
-<a name="androidTestingLocationFiles"></a><h4>Location of Files</h4>
-
-<p>Test packages should use the following structure and include <code>Android.mk</code>, <code>AndroidManifest.xml</code>, <code>AllTests.java</code>, and a src directory that mirrors the src directory of the tested application.</p> 
-<p>Files are located within a <code>tests</code> directory found in the root directory:</p> 
-<pre> 
-$ find samples/ApiDemos/tests
-samples/ApiDemos/tests
-samples/ApiDemos/tests/Android.mk
-samples/ApiDemos/tests/AndroidManifest.xml
-samples/ApiDemos/tests/src
-samples/ApiDemos/tests/src/com
-samples/ApiDemos/tests/src/com/google
-samples/ApiDemos/tests/src/com/google/android
-samples/ApiDemos/tests/src/com/google/android/samples
-samples/ApiDemos/tests/src/com/google/android/samples/AllTests.java
-samples/ApiDemos/tests/src/com/google/android/samples/ApiDemosTest.java
-samples/ApiDemos/tests/src/com/google/android/samples/os
-samples/ApiDemos/tests/src/com/google/android/samples/os/MorseCodeConverterTest.java
-samples/ApiDemos/tests/src/com/google/android/samples/view
-samples/ApiDemos/tests/src/com/google/android/samples/view/Focus2ActivityTest.java
-samples/ApiDemos/tests/src/com/google/android/samples/view/Focus2AndroidTest.java
-</pre>
-
-
-<a name="androidTestingContentMakefile"></a><h4>Contents of makefile</h4>
-
-<p>The contents of the makefile are similar to a normal application with the addition of a <code>LOCAL_INSTRUMENTATION_FOR</code> declaration.<p /> 
-<pre> 
-# Add appropriate copyright banner here
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
- 
-# We only want this apk build for tests.
-LOCAL_MODULE_TAGS := tests
- 
-# Include all test java files.
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
- 
-# Notice that we don't have to include the src files of ApiDemos because, by
-# running the tests using an instrumentation targeting ApiDemos, we
-# automatically get all of its classes loaded into our environment.
- 
-LOCAL_PACKAGE_NAME := ApiDemosTests
- 
-LOCAL_INSTRUMENTATION_FOR := ApiDemos
- 
-include $(BUILD_PACKAGE)
-</pre>
-
-
-<a name="androidTestingContentManifest"></a><h4>Content of Manifest</h4>
-
-<p>Use the following example to create an <code>AndroidManifest.xml</code> file that declares the instrumentation. Specify that the framework supplied Instrumentation TestRunner targest the package of your application, allowing the tests that are run with the instrumentation to get access to all of the classes of your application without having to build the source into the test app. The name of the test application is typically the same as your target application with <code>.tests</code> appended. </p>
-<pre> 
-# Add appropriate copyright banner here
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.samples.tests"&gt;
- 
-    &lt;uses-permission android:name="android.permission.RUN_INSTRUMENTATION" /&gt;
- 
-    &lt;!--
-    This declares that this app uses the instrumentation test runner targeting
-    the package of com.android.samples.  To run the tests use the command:
-    "adb shell am instrument -w com.android.samples.tests/android.test.InstrumentationTestRunner"
-    --&gt;
-    &lt;instrumentation android:name="android.test.InstrumentationTestRunner"
-                     android:targetPackage="com.android.samples"
-                     android:label="Tests for Api Demos."/&gt;
- 
-&lt;/manifest&gt;
-</pre> 
-<p>&nbsp;</p> 
-<p>The following snippet will prefix the <code>/android.test.InstrumentationTestRunner</code> when running tests from the command line:</p>
-<pre> 
-$ adb shell am instrument -w \
-  com.android.samples.tests/android.test.InstrumentationTestRunner
-</pre> 
-
-
-<a name="androidInstrumentationTestingCreatingTestRunner"></a><h4>New Instrumentation TestRunner</h4>
-
-<p>Create a class that derives from this class. You must override two abstract methods; one that returns the class loader of the target package, and another that defines all of the tests within the package. For example, the snippet below displays the test runner for the framework tests.</p>
-<pre class="prettify">
-public class FrameworkInstrumentationTestRunner extends InstrumentationTestRunner {
-
-    @Override
-    public TestSuite getAllTests() {
-        InstrumentationTestSuite suite = new InstrumentationTestSuite(this);
-
-        suite.addTestSuite(FocusAfterRemovalTest.class);
-        suite.addTestSuite(RequestFocusTest.class);
-        suite.addTestSuite(RequestRectangleVisibleTest.class);
-        return suite;
-    }
-
-    @Override
-    public ClassLoader getLoader() {
-        return FrameworkInstrumentationTestRunner.class.getClassLoader();
-    }
-}
-</pre>
-<p> Next, in an appropriate <code>AndroidManifest.xml</code>, define the instrumentation for the derived class with the appropriate <code>android:targetPackage</code> set.  For example, the snippet below defines the instrumentation runner for the framework tests.</p>
-<pre class="prettify">
-&lt;uses-permission android:name="android.permission.RUN_INSTRUMENTATION" /&gt;
-
-&lt;instrumentation android:name="android.tests.FrameworkInstrumentationTestRunner"
-                 android:targetPackage="com.google.android.frameworktest"
-                 android:label="framework instrumentation test runner" /&gt;
-</pre>		
-
-
-<a name="androidInstrumentationTestingCreatingTestCase"></a><h4>New InstrumentationTestCase</h4>
-
-<p> To create a new test case, write a class that extends <code>InstrumentationTestCase</code> in the same application as your test runner.  The following snippet illustrates an example <code>ActivityTestCase</code> that tests an activity named <code>MyActivity</code>.</p>
-<pre class="prettify">
-public class ButtonPressTest extends ActivityTestCase&lt;MyActivity&gt; {
-
-    Button mLeftButton;
-
-    public ButtonPressTest() {
-        super("com.example", MyActivity.class);
-    }
-
-    @Override
-    public void setUp() throws Exception {
-      super.setUp();
-      mLeftButton = (Button) getActivity().findViewById(R.id.leftButton);
-    }
-
-    public void testFocusMovesToRight() throws Exception {
-        assertTrue(mLeftButton.hasFocus());
-        getInstrumentation().sendCharacterSync(KeyEvent.KEYCODE_DPAD_RIGHT);
-
-        Button rightButton = (Button) getActivity().findViewById(R.id.rightButton);
-        assertTrue(rightButton.hasFocus());
-    }
-
-    // could have several more tests...
-}
-</pre>
-
-
-<a name="androidInstrumentationFrameworkTestCase"></a><h4>Exploring a Test Case</h4>
-
-<p> The test case described in this section adds and tests a new Contact. Note that you can send intents, register intent receivers, etc. </p>
-<p><code>Instrumentation.java</code> has helper functions that send key events and strings, for example: </p>
-<ul>
-  <li><code>getInstrumentation()</code>: Returns the handle to the instrumentation </li>
-  <li><code>sendCharacterSync</code>: Sends a character. </li>
-  <li><code>sendStringSync</code>: Sends a string to an input box. </li>
-  <li><code>sendKeyDownUpSync</code>: Sends a specific keyevent. </li>
-  <li><code>sendTrackballEventSync</code>: Sends a trackball event.</li>
-</ul>
-<p> You can find the test case below at <code>device/tests/Contacts.</code></p>
-<pre class="prettify">
-private void addNewContact(String name, int star, int phoneType, String number, String label,
-		String email, int emailType){
-	ContentValues values = new ContentValues();
-	Uri phoneUri = null;
-	Uri emailUri = null;
-
-	values.put(Contacts.People.NAME, name);
-	values.put(Contacts.People.STARRED, star);
-
-	//Add Phone Numbers
-	Uri uri = mActivity.getContentResolver().insert(Contacts.People.CONTENT_URI, values);
-	phoneUri = Uri.withAppendedPath(uri, Contacts.People.Phones.CONTENT_DIRECTORY);
-
-	values.clear();
-	values.put(Contacts.Phones.TYPE, phoneType);
-	values.put(Contacts.Phones.NUMBER, number);
-	values.put(Contacts.Phones.LABEL, label);
-	mActivity.getContentResolver().insert(phoneUri, values);
-
-	//Add Email
-	emailUri = Uri.withAppendedPath(uri, ContactMethods.CONTENT_DIRECTORY);
-
-	values.clear();
-	values.put(ContactMethods.KIND, Contacts.KIND_EMAIL);
-	values.put(ContactMethods.DATA, email);
-	values.put(ContactMethods.LABEL, "");
-	values.put(ContactMethods.TYPE, emailType);
-	mActivity.getContentResolver().insert(emailUri, values);
-}
-
-
- public void testAddSaveSingleContact(){
-	int previousCount = mActivity.getListView().getCount();
-	String message;
-
-	addNewContact(INPUT_NAME_1 + "1", "5435754532", "1" + INPUT_EMAIL_1, CONFIRM_OPTION);
-
-	message = "Added 1 to initial length=" + previousCount + ", but resulted with a count=" +
-		mActivity.getListView().getCount();
-	assertEquals(message, ++previousCount, mActivity.getListView().getCount());
-
-	// Check Content; Name; Num; Starred
-	assertEquals(INPUT_NAME_1 + "1", getTextFromView(0, android.R.id.text1));
-	assertEquals("5435754532", getTextFromView(0, android.R.id.text2));
-
-	//Check email is saved
-	//cursor = returnEmailCursorAtId("1");
-	Uri uri = Uri.parse("content://contacts/people/1");
-	uri = Uri.withAppendedPath(uri, ContactMethods.CONTENT_DIRECTORY);
-	Cursor cursor = mActivity.getContentResolver().query(uri, CONTACTS_COLUMNS, null, null, null);
-	assertTrue("returnEmailCursorAtId: Moving cursor to first row has failed", cursor.first());
-
-	int dataIndex = cursor.getColumnIndexOrThrow("data");
-	assertEquals("1" + INPUT_EMAIL_1, cursor.getString(dataIndex));
-	cursor.deactivate();
-}
-	</pre>
-
-
-<a name="androidTestingKindsofTests"></a><h4>Deciding Kinds of Tests to Write</h4>
-
-<p>Once you are bootstrapped with your test application, you can start writing tests.  There are three of types of tests you may wish to write:</p> 
-<p><ul> 
-<li> <strong>TestCase</strong>: The standard junit test case.
-</li> 
-<li> <strong>AndroidTestCase</strong>: A test case with access to a Context object that is injected for you by the instrumentation test runner.
-</li> 
-<li> <strong>InstrumentationTestCase</strong>: A test case with access to an Instrumentation, which can be used to launch activities, content providers, send key events, etc.
-</li> 
-</ul> 
-</p> 
-<p>The API Demos test suite includes examples of all three styles and can be used as a guideline for writing each type of test.</p>
-<p>There are two utility classes available for the most common uses of InstrumentationTestCase: ActivityTestCase and ProviderTestCase.  See their javadoc for more information.
-</p>
-
-
-<a name="troubleshooting"></a><h3>Troubleshooting</h3>
-
-<p>If you run your test cases and nothing appears to happen, have a look at <code>adb logcat</code>. The following is a common problem:</p>
-<pre class="prettify">
-I/dalvikvm(  688): threadid=11: attached from native, name=Binder Thread #1
-I/dalvikvm(  688): threadid=13: attached from native, name=Binder Thread #2
-W/ActivityManager(  469): Unable to find instrumentation info for: ComponentInfo{com.google.android.browser_instrumentation/com.google.android.browser_instrumentation.BrowserWebkitLayoutInstrumentation}
-D/AndroidRuntime(  688): Shutting down VM
-E/AndroidRuntime(  688): ERROR: thread attach failed
-</pre>		
-<p>It's possible that the instrumentation apk isn't installed on your device or that the package name is incorrect in the Manifest file. </p>
diff --git a/pdk/docs/guide/intro_source_code.jd b/pdk/docs/guide/intro_source_code.jd
deleted file mode 100755
index 21b34a7..0000000
--- a/pdk/docs/guide/intro_source_code.jd
+++ /dev/null
@@ -1,171 +0,0 @@
-page.title=Source Code Overview
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<a name="toc"/>
-<div style="padding:10px">
-<a href="#androidSourceCodeDirectories">Introduction</a><br/>
-<a href="#Android_Source">Android Source</a><br/><div style="padding-left:40px">
-
-<a href="#androidSourceCodeDirectoriesKernel">Linux Kernel</a><br/>
-<a href="#androidSourceCodeDirectoriesDevice">Android Platform and Applications</a><br/></div>
-<a href="#androidSourceGuidelines">Adding Source Code</a><br/></div>
-
-<a name="androidSourceCodeDirectories"></a><h2>Introduction</h2>
-
-<p>Android source code is maintained in two code bases: the Android Linux kernel (<code>kernel</code> directory) and Android platform and applications (<code>device</code> directory). This document provides a high-level introduction to the source code organization and an overview of the major components of each primary directory.</p>
-
-<a name="Android_Source"></a><h2>Android Source</h2>
-
-
-<a name="androidSourceCodeDirectoriesKernel"></a><h3>Linux Kernel</h3>
-
-<p>The Android Linux kernel includes enhancements to the Linux 2.6 kernel that provide additional drivers to support the Android platform, including:</p>
-<ul>
-  <li>Binder: an OpenBinder-based driver to facilitate inter-process communication (IPC) in the Android platform.</li>
-  <li>Android Power Management: a light weight power management driver built on top of standard Linux power management but optimized for embedded systems.</li>
-  <li>Low Memory Killer: Based on hints from the userspace, the low memory killer can kill off processes to free up memory as necessary. It is designed to provide more flexibility than the Out Of Memory (OOM) killer in the standard kernel.</li>
-  <li>Logger: A light weight logging device used to capture system, radio, logdata, etc.</li>
-  <li>USB Gadget: Uses the USB function framework.</li>
-  <li>Android/PMEM: The PMEM (physical memory) driver is used to provide contiguous physical memory regions to userspace libraries that interact with the digital signal processor (DSP) and other hardware that cannot cope with scatter-gather.</li>
-  <li>Android Alarm: A driver which provides timers that can wake the device up from sleep and a monotonic timebase that runs while the device is asleep.</li>
-</ul>
-<p>Look for Android-specific enhancements in the following directories:</p>
-<p><ul>
-<li><code>/drivers/android</code></li>
-<li><code>/drivers/misc</code></li>
-<li><code>/include/linux</code></li>
-</ul>
-</p>
-
-
-<a name="androidSourceCodeDirectoriesDevice"></a><h3>Android Platform and Applications</h3>
-
-<p>The following list outlines the directory structure found within the <code>device</code> branch of Android source code:</p>
-
-
-<p><span class="lh2"><a name="gmapiMobileTagsListStart"></a></span>
-
-<ul>
-
-
-<li>apps
-Core Android applications such as Phone, Camera, and Calendar.
-</li>
-
-
-<li>boot
-Reference Android bootloader and other boot-related source code.
-</li>
-
-
-<li>commands
-Common Android commands, the most important of which is the runtime command, which does much of the initialization of the system.
-</li>
-
-
-<li>config
-System-wide makefiles and linker scripts.
-</li>
-
-
-<li>content
-Standard Android ContentProvider modules.
-</li>
-
-
-<li>dalvik
-Android runtime Virtual Machine (VM).
-</li>
-
-
-<li>data
-Fonts, keymaps, sounds, timezone information, etc.
-</li>
-
-
-<li>docs
-Full set of Android documentation.
-</li>
-
-
-<li>extlibs
-Non-Android libraries. This directory is intended to host unmodified external code. None of the libraries included within this directory rely on Android headers or libraries.
-</li>
-
-
-<li>ide
-Tools for support of the IDE's used to write Android applications.
-</li>
-
-
-<li>include
-Android system headers for inclusion.
-</li>
-
-
-<li>java
-Android core APIs, as well as some external libraries.
-</li>
-
-
-<li>libs
-Android-specific C++ based libraries.
-</li>
-
-
-<li>partner
-Project-specific source code for various proprietary components.
-</li>
-
-
-<li>prebuilt
-Prebuilt tools, like the toolchains and emulator binary.
-</li>
-
-
-<li>product
-Device-specific configuration files. This directory will include a subdirectory for each new device.
-</li>
-
-
-<li>samples
-Sample applications.
-</li>
-
-
-<li>servers
-C++ based system servers.
-</li>
-
-
-<li>system
-Core of the embedded Linux platform at the heart of Android. These essential bits are required for basic booting, operation, and debugging.
-</li>
-
-
-<li>tests
-Platform and application test cases.
-</li>
-
-
-<li>tools
-Tools for building and debugging Android (of particular interest for porting are "adb" and "emulator").
-</li>
-
-
-
-<p><span class="lh2"><a name="gmapiMobileTagsListEnd"></a></span>
-
-</ul>
-
-
-<a name="androidSourceGuidelines"></a><h2>Adding Source Code</h2>
-
-<p>You can develop Android applications with the same standard tools you use to develop any Java application. The Android core libraries provide the functionality needed to build rich mobile applications and the Android development tools are designed to simplify running, debugging, and testing your applications.</p>
-
-<p>Add project-specific source code to the Android source tree under the <code>partner</code> directory in a directory specific to the application or service you are building. For example, all Google-specific applications would be placed under <code>vendor/google/</code>.  A Google search application would be placed under <code>vendor/google/apps/Search</code>.
-<p>See <a href="build_new_device.html">Building Android for a new Mobile Device</a> for detailed instructions.</p>
-
-
diff --git a/pdk/docs/guide/keymaps_keyboard_input.jd b/pdk/docs/guide/keymaps_keyboard_input.jd
deleted file mode 100755
index 5db0a86..0000000
--- a/pdk/docs/guide/keymaps_keyboard_input.jd
+++ /dev/null
@@ -1,504 +0,0 @@
-page.title=Keymaps and Keyboard Input
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidKeymapFunctionality">Functionality</a></li>
-<li><a href="#androidKeymapKeyLayoutMapTitle">Key Layout Map</a></li>
-<li><a href="#androidKeymapKeyCharMap">Key Character Map</a></li>
-<li><a href="#androidKeymapDriverTemplate">Implementing Your Own Driver (Driver Template)</a></li>
-<li><a href="#androidKeymapKeyCharMapSampleImplementation">Sample Implementation</a></li>
-</ul>
-</div>
-</div>
-
-<p>This document describes how keyboard input gets translated into Android actions and how you can customize key layout and key character maps to match the needs of your own device. </p>
-<p>Android uses the standard Linux input event device (<code>/dev/event0</code>) and driver as described in the <code>linux/input.h</code> kernel header file. For more information regarding standard Linux input drivers, please see <a href="http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.24.y.git;a=blob;f=Documentation/input/input.txt">Linux Input drivers</a> at <a href="http://kernel.org">http://kernel.org</a>.</p>
-
-
-
-
-<a name="androidKeymapFunctionality"></a><h3>Functionality</h3>
-
-<p>Android's input event device is structured around an interrupt or polling routine that captures the device-specific scancode and converts it to a standard form acceptable to Linux (as defined in <code>input.h</code>) before passing it to the kernel with <code>input_event()</code>.</p>
-<p>The keymap driver's other primary function is to establish a probe function that sets up the interrupt or polling function, handles hardware initialization, and attaches the driver to the input subsystem with <code>input_register_device()</code>.</p>
-<p>The table below describes the steps required to translate from keyboard input to application action: </p>
-<table border=1>
-    <tbody><tr>
-      <th scope="col">Step</th>
-        <th scope="col">Action</th>
-        <th scope="col">Explanation</th>
-    </tr>
-	<tr>
-	  <td>1.</td>
-	  <td>Window manager reads key event from Linux keyboard driver. </td>
-	  <td>Events are typically positional. For example, the top-left position on a keypad returns 16 regardless of whether that key is printed with a Q (as on a QWERTY keypad) or an A (as on an AZERTY keypads). This first conversion by the Linux Keyboard Driver yields a scancode (for example, 16).</td>
-	</tr>
-	<tr>
-	  <td>2. </td>
-	  <td>Window manager maps scancode to keycode.</td>
-	  <td>When the window manager reads a key event out of the driver, it maps the scancode to a keycode using a key layout map file. Typically, the keycode is the primary symbol screen-printed on a key. For example, <code>KEYCODE_DPAD_CENTER</code> is the center button on the five-way navigation control. Even though ALT + G generates a &quot;?&quot; character, <code>KEYCODE_G</code> is the keycode.</td>
-	  </tr>
-	<tr>
-	  <td>3. </td>
-	  <td>Window manager  sends both the scancode and the keycode to the application.</td>
-	  <td>Both the scancode and keycode are handled by the view with focus. 
-  How the application interprets both depend on the application.</td>
-	  </tr>
-</tbody>
-</table>
-
-
-<a name="androidKeymapKeyLayoutMapTitle"></a><h3>Key Layout Map</h3>
-
-
-
-<a name="androidKeymapKeyLayoutMapSelection"></a><h4>Selection of a Key Layout Map</h4>
-
-<p>Key layout maps are installed in <code>/system/usr/keylayout</code> and <code>/data/usr/keylayout</code>.</p>
-<p>For each keyboard device xxx, set the <code>android.keylayout.xxx</code> system property (see <a href="build_new_device.html">Building New Device</a> for help setting system properties). If you don't specify a keylayout file, Android will default to <code>/system/usr/keylayout/qwerty.kl</code>.</p>
-
-
-<a name="androidKeymapKeyLayoutMapFileFormat"></a><h4>File Format</h4>
-
-<p>Key layout maps are stored on the device as UTF-8 text files and have the following characteristics:</p>
-<p><ul>
-<li>Comments: The pound symbol (#) denotes a comment and everything after the pound symbol on a line is ignored.</li>
-<li>Whitespace: All empty lines are ignored.</li>
-<li>Key definitions: Key definitions follow the syntax <code>key SCANCODE KEYCODE [FLAGS...]</code>, where <code>SCANCODE</code> is a number, <code>KEYCODE</code> is defined in your specific keylayout file (<code>android.keylayout.xxx</code>), and potential <code>FLAGS</code> are defined as follows:
-<ul><li>SHIFT: While pressed, the shift key modifier is set</li>
-<li>ALT: While pressed, the alt key modifier is set</li>
-<li>CAPS: While pressed, the caps lock key modifier is set</li>
-<li>WAKE: When this key is pressed while the device is asleep, the device will wake up and the key event gets sent to the app.</li>
-<li>WAKE_DROPPED: When this key is pressed while the device is asleep, the device will wake up and the key event does not get sent to the app.</li>
-</ul>
-</li>
-</ul>
-</p>
-
-
-<a name="androidKeymapKeyLayoutMapExample"></a><h4>Example of a Key Layout Map File</h4>
-
-<p>The following code comes from  <code>android/src/device/product/generic/tuttle2.kl</code> and is an example of a complete key layout file:</p>
-<pre class="prettify">
-# Copyright 2007 Google Inc.
-
-key 2     1
-key 3     2
-key 4     3
-key 5     4
-key 6     5
-key 7     6
-key 8     7
-key 9     8
-key 10    9
-key 11    0
-key 158   BACK              WAKE_DROPPED
-key 230   SOFT_RIGHT        WAKE
-key 60    SOFT_RIGHT        WAKE
-key 107   ENDCALL           WAKE_DROPPED
-key 62    ENDCALL           WAKE_DROPPED
-key 229   MENU         WAKE_DROPPED
-key 59    MENU         WAKE_DROPPED
-key 228   POUND
-key 227   STAR
-key 231   CALL              WAKE_DROPPED
-key 61    CALL              WAKE_DROPPED
-key 232   DPAD_CENTER       WAKE_DROPPED
-key 108   DPAD_DOWN         WAKE_DROPPED
-key 103   DPAD_UP           WAKE_DROPPED
-key 102   HOME              WAKE
-key 105   DPAD_LEFT         WAKE_DROPPED
-key 106   DPAD_RIGHT        WAKE_DROPPED
-key 115   VOLUME_UP
-key 114   VOLUME_DOWN
-key 116   POWER             WAKE
-key 212   SLASH
-
-key 16    Q
-key 17    W
-key 18    E
-key 19    R
-key 20    T
-key 21    Y
-key 22    U
-key 23    I
-key 24    O
-key 25    P
-
-key 30    A
-key 31    S
-key 32    D
-key 33    F
-key 34    G
-key 35    H
-key 36    J
-key 37    K
-key 38    L
-key 14    DEL
-        
-key 44    Z
-key 45    X
-key 46    C
-key 47    V
-key 48    B
-key 49    N
-key 50    M
-key 51    COMMA
-key 52    PERIOD
-key 28    NEWLINE
-        
-key 56    ALT_LEFT
-key 42    SHIFT_LEFT
-key 215   AT
-key 57    SPACE
-key 53    SLASH
-key 127   SYM
-key 100   ALT_LEFT
-
-key 399   GRAVE
-</pre>
-
-
-<a name="androidKeymapKeyCharMap"></a><h3>Key Character Map</h3>
-
-
-
-<a name="androidKeymapKeyCharMapSelection"></a><h4>Selection of a Key Character Map</h4>
-
-<p>Key character maps are installed in <code>/system/usr/keychars</code> and <code>/data/usr/keychars</code>.</p>
-<p>For each keyboard device xxx, set the <code>android.keychar.xxx</code> system property to the full path of the desired keychar file. If you don't specify a keychar file, Android will default to <code>/system/usr/keychar/qwerty.kl</code>.
-
-
-<a name="androidKeymapKeyCharMapFileFormat"></a><h4>File Format</h4>
-
-<p>Key character maps are stored on the device as binary resources in order to reduce loading time. Key character maps have the following characteristics:</p>
-<p><ul>
-
-<li>Comments: The pound symbol (#) denotes a comment and everything after the pound symbol on a line is ignored.</li>
-<li>Whitespace: All empty lines are ignored.</li>
-<li>Column definitions: Column definitions follow the syntax <code>columns MODIFIERS [...]</code>, where <code>MODIFIERS</code> are defined as follows:
-<table border=1 cellpadding=2 cellspacing=0>
-    <tbody><tr>
-        <th scope="col">Character in MODIFIERS</th>
-        <th scope="col">Corresponding bit in the modifiers</th>
-    </tr>
-    <tr>
-        <td>O</td>
-        <td>no modifiers</td>
-    </tr>
-    <tr>
-        <td>S</td>
-        <td>MODIFIER_SHIFT</td>
-    </tr>
-    <tr>
-        <td>C</td>
-        <td>MODIFIER_CONTROL</td>
-    </tr>
-    <tr>
-        <td>L</td>
-        <td>MODIFIER_CAPS_LOCK</td>
-    </tr>
-    <tr>
-        <td>A</td>
-        <td>MODIFIER_ALT</td>
-    </tr>
-</table>
-</li>
-<li>Key definitions: Key definitions have the syntax <code>key SCANCODE CHARACTER [...]</code> where <code>SCANCODE</code> is a number and <code>CHARACTER</code> values are either UTF-8 characters in quotation marks (for example, "a") or a numeric value that <code>strtol</code> can parse.</li>
-</ul></p>
-
-
-<a name="androidKeymapKeyCharMapExample"></a><h4>Example of a Key Character Map File</h4>
-
-<p>The following code comes from <code>android/src/device/product/generic/tuttle2.kcm</code> and represents a complete key character file:</p>
-<p>The type line indicates what kind of keyboard your device implements. Possible types include:</p>
-<p><ul>
-<li><b>NUMERIC</b>: A numeric (12-key) keyboard.</li>
-<li><b>Q14</b>: A keyboard that includes all letters but multiple letters per key.</li>
-<li><b>QWERTY</b>: A keyboard with all letters and possibly numbers. This option applies to all full keyboard configurations, such as AZERTY.</li>
-</ul>
-</p>
-<pre class="prettify">
-# Copyright 2007 Google Inc.
-
-[type=QWERTY]
-
-# keycode   base    caps    fn      caps_fn number  display_label
-
-A           'a'     'A'     '%'     0x00    '%'     'A'
-B           'b'     'B'     '='     0x00    '='     'B'
-C           'c'     'C'     '8'     0x00E7  '8'     'C'
-D           'd'     'D'     '5'     0x00    '5'     'D'
-E           'e'     'E'     '2'     0x0301  '2'     'E'
-F           'f'     'F'     '6'     0x00A5  '6'     'F'
-G           'g'     'G'     '-'     '_'     '-'     'G'
-H           'h'     'H'     '['     '{'     '['     'H'
-I           'i'     'I'     '$'     0x0302  '$'     'I'
-J           'j'     'J'     ']'     '}'     ']'     'J'
-K           'k'     'K'     '"'     '~'     '"'     'K'
-L           'l'     'L'     '''     '`'     '''     'L'
-M           'm'     'M'     '>'     0x00    '>'     'M'
-N           'n'     'N'     '<'     0x0303  '<'     'N'
-O           'o'     'O'     '('     0x00    '('     'O'
-P           'p'     'P'     ')'     0x00    ')'     'P'
-Q           'q'     'Q'     '*'     0x0300  '*'     'Q'
-R           'r'     'R'     '3'     0x20AC  '3'     'R'
-S           's'     'S'     '4'     0x00DF  '4'     'S'
-T           't'     'T'     '+'     0x00A3  '+'     'T'
-U           'u'     'U'     '&'     0x0308  '&'     'U'
-V           'v'     'V'     '9'     '^'     '9'     'V'
-W           'w'     'W'     '1'     0x00    '1'     'W'
-X           'x'     'X'     '7'     0xEF00  '7'     'X'
-Y           'y'     'Y'     '!'     0x00A1  '!'     'Y'
-Z           'z'     'Z'     '#'     0x00    '#'     'Z'
-
-COMMA       ','     ';'     ';'     '|'     ','     ','
-PERIOD      '.'     ':'     ':'     0x2026  '.'     '.'
-AT          '@'     '0'     '0'     0x2022  '0'     '@'
-SLASH       '/'     '?'     '?'     '\'     '/'     '/'
-
-SPACE       0x20    0x20    0x9     0x9     0x20    0x20
-NEWLINE     0xa     0xa     0xa     0xa     0xa     0xa
-
-# on pc keyboards
-TAB         0x9     0x9     0x9     0x9     0x9     0x9
-0           '0'     ')'     ')'     ')'     '0'     '0'
-1           '1'     '!'     '!'     '!'     '1'     '1'
-2           '2'     '@'     '@'     '@'     '2'     '2'
-3           '3'     '#'     '#'     '#'     '3'     '3'
-4           '4'     '$'     '$'     '$'     '4'     '4'
-5           '5'     '%'     '%'     '%'     '5'     '5'
-6           '6'     '^'     '^'     '^'     '6'     '6'
-7           '7'     '&'     '&'     '&'     '7'     '7'
-8           '8'     '*'     '*'     '*'     '8'     '8'
-9           '9'     '('     '('     '('     '9'     '9'
-
-GRAVE         '`'     '~'     '`'     '~'     '`'     '`'
-MINUS         '-'     '_'     '-'     '_'     '-'     '-'
-EQUALS        '='     '+'     '='     '+'     '='     '='
-LEFT_BRACKET  '['     '{'     '['     '{'     '['     '['
-RIGHT_BRACKET ']'     '}'     ']'     '}'     ']'     ']'
-BACKSLASH     '\'     '|'     '\'     '|'     '\'     '\'
-SEMICOLON     ';'     ':'     ';'     ':'     ';'     ';'
-APOSTROPHE    '''     '"'     '''     '"'     '''     '''
-STAR          '*'     '*'     '*'     '*'     '*'     '*'
-POUND         '#'     '#'     '#'     '#'     '#'     '#'
-PLUS          '+'     '+'     '+'     '+'     '+'     '+'
-</pre>
-
-
-<a name="androidKeymapKeyCharMapResourceBinaryFileFormat"></a><h4>Resource Binary File Format</h4>
-
-<p>The file snippet above gets converted to the following by the <code>makekcharmap</code> tool as part of the build process. You can <code>mmap</code> this file in and share the approximately 4k of memory that it uses between processes to minimize load time.</p>
-<table>
-    <tbody><tr>
-        <th scope="col">Offset</th>
-
-        <th scope="col">Size (bytes)</th>
-        <th scope="col">Description</th>
-    </tr>
-    <tr>
-        <td>0x00-0x0b</td>
-        <td></td>
-        <td>The ascii value "keycharmap1" including the null character</td>
-
-    </tr>
-    <tr>
-        <td>0x0c-0x0f</td>
-        <td></td>
-        <td>padding</td>
-    </tr>
-    <tr>
-        <td>0x10-0x13</td>
-
-        <td></td>
-        <td>The number of entries in the modifiers table (COLS)</td>
-    </tr>
-    <tr>
-        <td>0x14-0x17</td>
-        <td></td>
-        <td>The number of entries in the characters table (ROWS)</td>
-
-    </tr>
-    <tr>
-        <td>0x18-0x1f</td>
-        <td></td>
-        <td>padding</td>
-    </tr>
-    <tr>
-        <td></td>
-
-        <td>4*COLS</td>
-        <td>Modifiers table.  The modifier mask values that each of the 
-            columns in the characters table correspond to.</td>
-    </tr>
-    <tr>
-        <td></td>
-        <td></td>
-        <td>padding to the next 16 byte boundary</td>
-
-    </tr>
-    <tr>
-        <td></td>
-        <td>4*COLS*ROWS</td>
-        <td>Characters table.  The modifier mask values that each of the
-            columns correspond to.</td>
-    </tr>
-</tbody></table>
-
-
-<a name="androidKeymapDriverTemplate"></a><h3>Implementing Your Own Driver (Driver Template)</h3>
-
-<p>The following file, <code>pguide_events.c</code>, illustrates how to implement an Android keymap driver.</p>
-<pre class="prettyprint">
-/*
- * pguide_events.c
- *
- * ANDROID PORTING GUIDE: INPUT EVENTS DRIVER TEMPLATE
- *
- * This template is designed to an example of the functionality
- * necessary for Android to recieve input events.  The PGUIDE_EVENT
- * macros are meant as pointers indicating where to implement the
- * hardware specific code necessary for the new device.  The existence
- * of the macros is not meant to trivialize the work required, just as
- * an indication of where the work needs to be done.
- * 
- * Copyright 2007, Google Inc.
- * Based on goldfish-events.c
- *
- */
-
-#include <linux/module.h>
-#include <linux/init.h>
-#include <linux/interrupt.h>
-#include <linux/types.h>
-#include <linux/input.h>
-#include <linux/kernel.h>
-#include <linux/platform_device.h>
-
-
-#include <asm/irq.h>
-#include <asm/io.h>
-
-
-
-#define PGUIDE_EVENTS_INTERRUPT do{} while(0)
-#define PGUIDE_EVENTS_PROBE do{} while(0)
-
-struct event_dev {
-    struct input_dev *input;
-    int irq;
-};
-
-static irqreturn_t pguide_events_interrupt(int irq, void *dev_id)
-{
-    struct event_dev *edev = dev_id;
-    unsigned type=0, code=0, value=0;
-
-    /* Set up type, code, and value per input.h
-     */
-    PGUIDE_EVENTS_INTERRUPT;
-
-    input_event(edev->input, type, code, value);
-    return IRQ_HANDLED;
-}
-
-static int pguide_events_probe(struct platform_device *pdev)
-{
-    struct input_dev *input_dev;
-    struct event_dev *edev;
-    
-    printk("*** pguide events probe ***\n");
-
-    edev = kzalloc(sizeof(struct event_dev), GFP_KERNEL);
-    input_dev = input_allocate_device();
-
-    /* Setup edev->irq and do any hardware init */
-    PGUIDE_EVENTS_PROBE;
-
-    if(request_irq(edev->irq, pguide_events_interrupt, 0,
-                   "pguide_events", edev) < 0) {
-        goto fail;
-    }
-    
-        /* indicate that we generate key events */
-    set_bit(EV_KEY, input_dev->evbit);
-    set_bit(EV_REL, input_dev->evbit);
-    set_bit(EV_ABS, input_dev->evbit);
-
-    /* indicate that we generate *any* key event */
-
-    bitmap_fill(input_dev->keybit, KEY_MAX);
-    bitmap_fill(input_dev->relbit, REL_MAX);
-    bitmap_fill(input_dev->absbit, ABS_MAX);
-    
-    platform_set_drvdata(pdev, edev);
-
-    input_dev->name = "pguide_events";
-    input_dev->private = edev;
-    input_dev->cdev.dev = &pdev->dev;
-    
-    input_register_device(input_dev);
-    return 0;
-
-fail:
-    kfree(edev);
-    input_free_device(input_dev);
-    
-    return -EINVAL;
-}
-
-static struct platform_driver pguide_events_driver = {
-    .probe = pguide_events_probe,
-    .driver = {
-        .name = "pguide_events",
-    },
-};
-
-static int __devinit pguide_events_init(void)
-{
-    return platform_driver_register(&pguide_events_driver);
-}
-
-
-static void __exit pguide_events_exit(void)
-{
-}
-
-module_init(pguide_events_init);
-module_exit(pguide_events_exit);
-
-MODULE_DESCRIPTION("Pguide Event Device");
-MODULE_LICENSE("GPL");
-</pre>
-
-
-<a name="androidKeymapKeyCharMapSampleImplementation"></a><h3>Sample Implementation</h3>
-
-<p>Assume the following for the setup of a new keypad device:</p>
-<pre class="prettify">
-android.keylayout.partnerxx_keypad = /system/usr/keylayout/partnerxx_keypad.kl
-android.keychar.partnerxx_keypad = /system/usr/keychars/partnerxx.kcm
-</pre>
-<p>The following example log file indicates that you have correctly registered the new keypad:</p>
-<pre class="prettify">
-I/EventHub( 1548): New device: path=/dev/input/event0 name=partnerxx_keypad id=0x10000 (of 0x1) index=1 fd=30
-I/EventHub( 1548): new keyboard input device added, name = partnerxx_keypad
-D/WindowManager( 1548): Starting input thread.
-D/WindowManager( 1548): Startup complete!
-I/EventHub( 1548): New keyboard: name=partnerxx_keypad 
-  keymap=partnerxx_keypad.kl 
-  keymapPath=/system/usr/keychars/partnerxx_keypad.kcm.bin
-I/ServiceManager( 1535): ServiceManager: addService(window, 0x13610)
-I/EventHub( 1548): Reporting device opened: id=0x10000, name=/dev/input/event0
-I/KeyInputQueue( 1548): Device added: id=0x10000, name=partnerxx_keypad, classes=1
-I/KeyInputQueue( 1548):   Keymap: partnerxx_keypad.kl
-</pre>
-<p>The snippet above contains artificial line breaks to maintain a print-friendly document.</p>
diff --git a/pdk/docs/guide/lights.jd b/pdk/docs/guide/lights.jd
deleted file mode 100755
index 1c445b2..0000000
--- a/pdk/docs/guide/lights.jd
+++ /dev/null
@@ -1,48 +0,0 @@
-page.title=Lights
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidLightsBuildingDriver">Building a Lights Library</a></li>
-<li><a href="#androidLightsInterface">Interface</a></li>
-</ul>
-</div>
-</div>
-
-<p>Android defines a user space C abstraction interface for LED hardware. The interface header is defined in 
-<code>hardware/libhardware/include/hardware/lights.h</code>.
-In order to integrate LEDs with Android you need to build a shared library that implements this interface. 
-
-The types of logical lights currently supported by Android include:
-<ul>
-<li>Backlight</li>
-<li>Keyboard</li>
-<li>Buttons</li>
-<li>Battery</li>
-<li>Notifications</li>
-<li>Attention</li>
-</ul>
-</p> 
- 
-<a name="androidLightsBuildingDriver"></a><h3>Building a Lights Library</h3>
-<p> To implement a Lights driver, create a shared library that implements the interface defined in <code>lights.h</code>. You must name your shared library 
-<code>liblights.so</code> so that it will get loaded from <code>/system/lib</code> at runtime. 
-</p
-
- 
-<a name="androidLightsInterface"></a><h3>Interface</h3> 
- 
- 
- 
-<p><span class="lh3"><a name="androidDoxygenNote"></a></span> 
- 
-<p class="note"><strong>Note</strong>: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, <a href="lights.html">click here</a>.</p> 
- 
- 
-<iframe onLoad="resizeDoxFrameHeight();" src="lights_8h.html" scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" 
-frameborder="0" style="width:100%;"></iframe> 
diff --git a/pdk/docs/guide/modules.html b/pdk/docs/guide/modules.html
deleted file mode 100755
index ea2a07a..0000000
--- a/pdk/docs/guide/modules.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<title>Doxygen-Generated Content</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-<style type="text/css">
-<!--
-.navigation {
-	display: none;
-}
--->
-</style>
-</head>
-<body>
-<!-- Generated by Doxygen 1.5.6 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li class="current"><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>Modules</h1>Here is a list of all modules:<ul>
-<li><a class="el" href="group__networking.html">Neworking Support</a>
-<ul>
-<li><a class="el" href="group__memory.html">Porividng Heap Memory</a>
-</ul>
-</ul>
-</div>
-</body>
-</html>
diff --git a/pdk/docs/guide/pdk_toc.cs b/pdk/docs/guide/pdk_toc.cs
deleted file mode 100644
index f829d43..0000000
--- a/pdk/docs/guide/pdk_toc.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-<script type="text/javascript" language="JavaScript">
-<!--
-function nothing() {}
--->
-</script>
-
-<ul>
-
-<li> <h2>Setup and Building</h2>
-  <ul>
-     <li class="toggle-list">
-     <div><a href="<?cs var:toroot ?>guide/build_system.html">Build System</a></div>
-     <ul>  
-       <li><a href="<?cs var:toroot ?>guide/build_new_device.html">Configuring a New Product</a></li>
-       <li><a href="<?cs var:toroot ?>guide/build_cookbook.html">Build Cookbook</a></li>
-     </ul>
-     </li>
-     <li><a href="<?cs var:toroot ?>guide/release_keys.html">Release Keys and Signing Builds</a></li> 
-     <li><a href="<?cs var:toroot ?>guide/release_checklist.html">Release Checklist</a></li>
- </ul>
-</li>
-
-<li> <h2>Customization</h2>
-  <ul>
-    <li><a href="<?cs var:toroot ?>guide/customization.html">Customization</a></li>
-  </ul>
-</li>
-
-<li> <h2>System</h2>
-
-<ul>
-  <li><a href="<?cs var:toroot ?>guide/bring_up.html">Bring up</a></li>
-  <li class="toggle-list">
-    <div><a href="javascript:nothing()">Connectivity</a></div>
-    <ul> 
-      <li><a href="<?cs var:toroot ?>guide/bluetooth.html">Bluetooth</a></li>
-      <li><a href="<?cs var:toroot ?>guide/gps.html">GPS</a></li>
-      <li><a href="<?cs var:toroot ?>guide/wifi.html">Wi-Fi</a></li>
-    </ul>
-  </li>
-
-  <li><a href="<?cs var:toroot ?>guide/display_drivers.html">Display Drivers</a></li>
-  <li class="toggle-list"> 
-    <div><a href="javascript:nothing()">Input Devices</a></div>
-    <ul>
-      <li><a href="<?cs var:toroot ?>guide/keymaps_keyboard_input.html">Keymaps and Keyboard</a></li>
-    </ul>
-  </li>
-  <li><a href="<?cs var:toroot ?>guide/lights.html">Lights</a></li>
-  <li class="toggle-list">
-    <div><a href="javascript:nothing()">Multimedia</a></div>
-    <ul>
-      <li><a href="<?cs var:toroot ?>guide/audio.html">Audio</a></li>
-      <li><a href="<?cs var:toroot ?>guide/camera.html">Camera/Video</a></li>
-    </ul>
-  </li>
-  
-  <li><a href="<?cs var:toroot ?>guide/power_management.html">Power Management</a></li>
-  <li><a href="<?cs var:toroot ?>guide/sensors.html">Sensors</a></li>
-  <li class="toggle-list">
-    <div><a href="javascript:nothing()">Telephony</a></div>
-    <ul>
-      <li><a href="<?cs var:toroot ?>guide/telephony.html">Radio Interface Layer</a></li>
-      <li><a href="<?cs var:toroot ?>guide/stk.html">SIM Toolkit Application (STK)</a></li>
-    </ul>
-  </li>
-
-</ul>
-</li>
-
-<li> <h2>Dalvik Virtual Machine</h2>
-  <ul>
-    <li><a href="<?cs var:toroot ?>guide/dalvik.html">Porting Dalvik</a></li>
-  </ul>
-</li>
-<li> <h2>Testing and Debugging</h2>
-  <ul>
-    <li><a href="<?cs var:toroot ?>guide/instrumentation_testing.html">Instrumentation Testing</a></li>
-    <li><a href="<?cs var:toroot ?>guide/debugging_gdb.html">Debugging with GDB</a></li>
-    <li><a href="<?cs var:toroot ?>guide/debugging_native.html">Debugging Native Code</a></li>
-    <li><a href="<?cs var:toroot ?>guide/tcpdump.html">Debugging with tcpdump</a></li>
-  </ul>
-</li>
-
-
-
-</ul>
-
-<script type="text/javascript">
-<!--
-    buildToggleLists();
-//-->
-</script>
diff --git a/pdk/docs/guide/power_management.jd b/pdk/docs/guide/power_management.jd
deleted file mode 100755
index daff6ed..0000000
--- a/pdk/docs/guide/power_management.jd
+++ /dev/null
@@ -1,203 +0,0 @@
-page.title=Power Management
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<a name="toc"/>
-<div style="padding:10px">
-<a href="#androidPowerIntro">Introduction</a><br/>
-<a href="#androidPowerWakeLocks">Wake Locks</a><br/><div style="padding-left:40px">
-
-<a href="#androidPowerWakeLocksDefinitions">Types of Wake Locks</a><br/>
-<a href="#androidPowerWakeLockExample">Exploring a Wake Lock Example</a><br/></div>
-<a href="#androidPowerPowerManagerClass">PowerManager class</a><br/>
-<a href="#androidPowerKernelRegistration">Registering Drivers with the PM Driver</a><br/>
-<a href="#androidPowerEarlySuspend">Early Suspend</a><br/>
-</div>
-
-<a name="androidPowerIntro"></a><h2>Introduction</h2>
-
-<p>Android supports its own Power Management (on top of the standard Linux Power Management) designed with the premise that the CPU shouldn't consume power if no applications or services require power. For more information regarding standard Linux power management, please see <a href="http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.24.y.git;a=blob;f=Documentation/pm.txt">Linux Power Management Support</a> at <a href="http://kernel.org">http://kernel.org</a>.</p>
-<p>Android requires that applications and services request CPU resources with &quot;wake locks&quot; through the Android application framework and native Linux libraries. If there are no active wake locks, Android will shut down the CPU. </p>
-<p>The image below illustrates the Android power management architecture. </p>
-<p><img src='images/androidPMArchitecture.gif'></p>
-
-Solid elements represent Android blocks and dashed elements represent partner-specific blocks.
-
-
-
-<a name="androidPowerWakeLocks"></a><h2>Wake Locks</h2>
-
-<p>Wake locks are used by applications and services to request CPU resources.</p>
-
-<p>A locked wakelock, depending on its type, prevents the system from entering suspend or other low-power states. This document describes how to employ wakelocks. </p>
-<p>There are two settings for a wakelock:</p>
-<ul>
-  <li><code>WAKE_LOCK_SUSPEND</code>: prevents a full system suspend. </li>
-  <li><code></code><code>WAKE_LOCK_IDLE</code>: low-power states, which often cause large interrupt latencies or that disable a set of interrupts, will not be entered from idle until the wakelocks are released. </li>
-</ul>
-<p>Unless the type is specified, this document refers to wakelocks of type <code>WAKE_LOCK_SUSPEND</code>. </p>
-<p>If the suspend operation has already started when locking a wakelock, the system will abort the suspend operation as long it has not already reached the <code>suspend_late</code> stage. This means that locking a wakelock from an interrupt handler or a freezeable thread always works, but if you lock a wakelock from a <code>suspend_late</code> handler, you must also return an error from that handler to abort suspend. You can use wakelocks to allow the user-space to decide which keys should wake the full system and turn on the screen. Use <code>set_irq_wake</code> or a platform-specific API to ensure that the keypad interrupt wakes up the CPU. Once the keypad driver has resumed, the sequence of events can look like this:</p>
-<ol>
-  <li> The Keypad driver receives an interrupt, locks the keypad-scan wakelock,
-    and starts scanning the keypad matrix. </li>
-  <li>The keypad-scan code detects a key change and reports it to the input-event
-    driver. </li>
-  <li>The input-event driver sees the key change, enqueues an event, and locks
-    the input-event-queue wakelock. </li>
-  <li>The keypad-scan code detects that no keys are held and unlocks the
-    keypad-scan wakelock. </li>
-  <li>The user-space input-event thread returns from select/poll, locks the
-    process-input-events wakelock, and calls read in the input-event device. </li>
-  <li>The input-event driver dequeues the key-event and, since the queue is now
-    empty, unlocks the input-event-queue wakelock. </li>
-  <li>The user-space input-event thread returns from read. It determines that the
-    key should not wake up the full system, releases the process-input-events
-    wakelock, and calls select or poll. </li>
-</ol>
-<p>The simple sequence diagram below illustrates these steps:</p>
-    <pre>
-     					Key pressed      Key released
-      					     |		      |
-      keypad-scan       		     ++++++++++++++++++++++
-      input-event-queue 			  +++ 		  +++
-      process-input-events 		            +++ 	    +++
-      </pre>
-
-<a name="driverAPI"></a><h3>Driver API</h3>
-<p>A driver can use the wakelock API by adding a wakelock variable to its state and calling <code>wake_lock_init</code>, as illustrated in the snippet below:</p>
-<pre>
-  struct state {
-  struct wakelock wakelock;
-  }
-  init() {
-  wake_lock_init(&amp;state-&gt;wakelock, WAKE_LOCK_SUSPEND, &quot;wakelockname&quot;);
-  }
-  Before freeing the memory, wake_lock_destroy must be called:
-  uninit() {
-  wake_lock_destroy(&amp;state-&gt;wakelock);
-  }
-  </pre>
-<p> When the driver determines that it needs to run (usually in an interrupt handler), it calls <code>wake_lock</code>:</p>
-<pre>
-  wake_lock(&amp;state-&gt;wakelock);
-  </pre>
-<p>When it no longer needs to run, it calls <code>wake_unlock</code>:</p>
-<pre>
-  wake_unlock(&amp;state-&gt;wakelock);
-  </pre>
-<p> It can also call <code>wake_lock_timeout</code> to release the wakelock after a delay:</p>
-<pre>
-  wake_lock_timeout(&amp;state-&gt;wakelock, HZ);
-</pre>
-<p> This works whether or not the wakelock is already held. It is useful if the driver woke up other parts of the system that do not use wakelocks but still need to run. Avoid this when possible, since it will waste power if the timeout is long or may fail to finish needed work if the timeout is short.</p>
-<a name="userspaceAPI"></a><h3>User-space API</h3>
-<p>Write <code>lockname</code> or <code>lockname timeout</code> to <code>/sys/power/wake_lock</code> lock and, if needed, create a wakelock. The timeout here is specified in nanoseconds. Write <code>lockname</code> to <code>/sys/power/wake_unlock</code> to unlock a user wakelock.</p>
-<p> Do not use randomly generated wakelock names as there is no API to free a user-space wakelock.</p>
-
-<a name="androidPowerWakeLocksDefinitions"></a><h3>Types of Wake Locks</h3>
-
-<table border=1 cellpadding=2 cellspacing=0>
-    <tbody><tr>
-        <th scope="col">Wake Lock </th>
-        <th scope="col">Description</th>
-    </tr>
-    <tr>
-      <td>ACQUIRE_CAUSES_WAKEUP<br/></td>
-        <td>Normally wake locks don't actually wake the device, they just cause it to remain on once it's already on. Think of the video player app as the normal behavior. Notifications that pop up and want the device to be on are the exception; use this flag to be like them.</td>
-    </tr>
-    <tr>
-      <td>FULL_WAKE_LOCK</td>
-      <td>Wake lock that ensures that the screen and keyboard are on at full brightness. </td>
-    </tr>
-    <tr>
-      <td>ON_AFTER_RELEASE</td>
-      <td>When this wake lock is released, poke the user activity timer so the screen stays on for a little longer.</td>
-    </tr>
-    <tr>
-      <td>PARTIAL_WAKE_LOCK</td>
-      <td>Wake lock that ensures that the CPU is running. The screen might not be on.</td>
-    </tr>
-    <tr>
-      <td>SCREEN_BRIGHT_WAKE_LOCK</td>
-      <td>Wake lock that ensures that the screen is on at full brightness; the keyboard backlight will be allowed to go off.</td>
-    </tr>
-    <tr>
-      <td>SCREEN_DIM_WAKE_LOCK</td>
-      <td>Wake lock that ensures that the screen is on, but the keyboard backlight will be allowed to go off, and the screen backlight will be allowed to go dim.</td>
-    </tr>
-</table>
-
-
-<a name="androidPowerWakeLockExample"></a><h3>Exploring a Wake Lock Example</h3>
-
-<p>All power management calls follow the same basic format:</p>
-<p><ol><li>Acquire handle to the <code>PowerManager</code> service.</li>
-<li>Create a wake lock and specify the power management flags for screen, timeout, etc.</li>
-<li>Acquire wake lock.</li>
-<li>Perform operation (play MP3, open HTML page, etc.).</li>
-<li>Release wake lock.</li>
-</ol>
-</p>
-<p>The snippet below illustrates this process.</p>
-<pre class="prettify">
-PowerManager pm = (PowerManager)mContext.getSystemService(
-                                          Context.POWER_SERVICE);
-PowerManager.WakeLock wl = pm.newWakeLock(
-                                      PowerManager.SCREEN_DIM_WAKE_LOCK
-                                      | PowerManager.ON_AFTER_RELEASE,
-                                      TAG);
-wl.acquire();
- // ...
-wl.release();
-</pre>
-
-
-<a name="androidPowerPowerManagerClass"></a><h2>PowerManager class</h2>
-
-<p>The Android Framework exposes power management to services and applications through the <code>PowerManager</code> class.</p>
-<p>User space native libraries (any hardware function in <code>//device/lib/hardware/</code> meant to serve as supporting libraries for Android runtime) should never call into Android Power Management directly (see the image above). Bypassing the power management policy in the Android runtime will destabilize the system.</p>
-<p>All calls into Power Management should go through the Android runtime PowerManager APIs.</p>
-<p> Please visit 
-<a href="http://code.google.com/android/reference/android/os/PowerManager.html">http://code.google.com/android/reference/android/os/PowerManager.html</a> for a description of the API and examples.</p>
-
-
-<a name="androidPowerKernelRegistration"></a><h2>Registering Drivers with the PM Driver</h2>
-
-<p>You can register Kernel-level drivers with the Android Power Manager driver so that they're notified immediately before power down or after power up. For example, you might set a display driver to completely power down when a request comes in to power down from the user space (see the Android MSM MDDI display driver for a sample implementation).</p>
-<p>To register drivers with the Android PM driver, implement call-back handlers and register them with the Android PM, as illustrated in the snippet below:</p>
-<pre class="prettify">
-android_register_early_suspend(android_early_suspend_t *handler)
-android_register_early_resume(android_early_resume_t *handler)
-</pre>
-<p>It is critical in a drive to return immediately and not wait for anything to happen in the call back.</p>
-
-
-<a name="androidPowerEarlySuspend"></a><h2>Early Suspend</h2>
-
-<p>The early-suspend API allows drivers to get notified when user-space writes to <code>/sys/power/request_state</code> to indicate that the user visible sleep state should change. Suspend handlers are called in order of low to high (4 - 1 below) and resume handlers are called in order of high to low (1 - 4 below).</p>
-<ol>
-  <li><code>EARLY_SUSPEND_LEVEL_BLANK_SCREEN</code>: </li>
-  <ul>
-    <li>on suspend: the screen should be turned off but the framebuffer must still be accessible. </li>
-    <li>on resume: the screen can be turned back on.</li>
-  </ul>
-  <li><code>EARLY_SUSPEND_LEVEL_STOP_DRAWING</code>:
-    <ul>
-      <li>on suspend: this level notifies user-space that it should stop accessing the framebuffer and it waits for it to complete.</li>
-      <li>on resume: it notifies user-space that it should resume screen access. Two methods are provided, console switch or a sysfs interface.</li>
-    </ul>
-  </li>
-  <li><code>EARLY_SUSPEND_LEVEL_DISABLE_FB</code>: Turn off the framebuffer
-    <ul>
-      <li>on suspend: turn off the framebuffer</li>
-      <li>on resume: turn the framebuffer back on. </li>
-    </ul>
-  </li>
-  <li><code>EARLY_SUSPEND_LEVEL_STOP_INPUT</code>:
-    <ul>
-      <li>on suspend: turn off input devices that are not capable of wakeup or where wakeup is disabled. </li>
-      <li>on resume: turn the same devices back on.</li>
-    </ul>
-  </li>
-</ol>
diff --git a/pdk/docs/guide/release_checklist.jd b/pdk/docs/guide/release_checklist.jd
deleted file mode 100755
index 37fb53d..0000000
--- a/pdk/docs/guide/release_checklist.jd
+++ /dev/null
@@ -1,119 +0,0 @@
-page.title=Release Checklist
-pdk.version=1.0
-doc.type=guide
-@jd:body
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>In this document</h2>
-    <a name="toc"/>
-    <ul>
-      <li><a href="#prodCertificates">Production Certificates</a></li>
-      <li><a href="#roSecure">ro.secure Property</a></li>
-      <li><a href="#systemImage">System Image and dex files</a></li>
-      <li><a href="#zygote">Zygote</a></li>
-      <li><a href="#memory">Memory</a></li>
-      <li><a href="#resourceLeaks">Resource Links</a></li>
-    </ul>
-  </div>
-</div>
-<p>This page lists some key points you should verify before releasing your Android device. This document assumes that you have made only minor changes, if any, to the basic software platform.</p>
-<h3><a name="prodCertificates" id="prodCertificates"></a>Production Certificates</h3>
-<p>The Android build system generates a system image with <code>.apks</code> signed by its test keys. This is insecure because the keys are made public in Android source code.  You should resign all <code>.apks</code>, especially the framework itself, with your own private keys.</p>
-<h3><a name="roSecure" id="roSecure"></a>ro.secure Property</h3>
-<p>Configure production builds with <code>ro.secure</code> set to <code>1</code>.  Without securing the device in this manner, someone could access a locked device. </p>
-<h3><a name="systemImage" id="systemImage"></a>System Image and dex files</h3>
-<p>Development builds place basic <code>.apks</code> in <code>/system/app</code>, which means that at first boot, the system must run <code>dexopt</code> on each <code>.apks</code> and generate the corresponding <code>.odex</code> files in <code>/data/dalvik-cache</code>.  To avoid long bootups and to save the user's space, create a production image in which the build system does the <code>dexopt</code> at build time and places <code>.odex</code> files next to their corresponding <code>.apks</code> and strips the original <code>.dex</code> from them.</p>
-<h3><a name="zygote" id="systemImage2"></a>Zygote</h3>
-<p>Tune the zygote process if you add your own classes or resources to the core framework libraries and you use those classes and resources in multiple applications. It can be challenging to determine what should and what should not get preloaded, and it's best to choose conservatively. A good candidate for preload might be framework code you add for use when a UI is displayed.</p>
-<p>The zygote process is important for reducing the amount of memory consumed across the entire system. The base Android system is already reasonably configured, and you only need to consider this if you have made significant changes.</p>
-<h3><a name="memory" id="systemImage3"></a>Memory</h3>
-<p>Memory is a key factor for determining optimal performance. A good basic metric to consider is the size and number of processes after first boot. The example below illustrates:</p>
-<ul><li>the contents of <code>/proc/meminfo</code>, which shows the basic memory of the device</li>
-<li>typical output of <code>procrank</code> after first boot on Android 1.5.</li>
-</ul>
-<pre>
-# cat /proc/meminfo
-MemTotal:          98592 kB
-MemFree:            1564 kB
-Buffers:            5688 kB
-Cached:            24468 kB
-SwapCached:            0 kB
-Active:            39768 kB
-Inactive:          43372 kB
-
-# procrank
-  PID      Vss      Rss      Pss      Uss  cmdline
-   71   33704K   24488K   12033K   10364K  system_server
-<strong>  118   28708K   20516K    8085K    6588K  android.process.acore
-  167   19352K   19352K    7184K    5880K  com.google.process.gapps
-  112   17816K   17816K    6222K    5280K  com.android.phone
-  198   16416K   16416K    5002K    3828K  com.google.android.apps.maps:FriendService
-  174   16060K   16060K    4635K    3776K  android.process.media
-  228   16308K   16308K    4288K    3244K  com.android.calendar
-</strong>   48   16212K   16212K    3396K    1788K  zygote
-<strong>  212   14964K   14964K    3146K    2004K  android.process.im
-  147   14116K   14116K    2907K    1964K  com.android.mms
-  286   13856K   13856K    2506K    1552K  com.google.android.gm
-  141   13516K   13516K    2425K    1524K  com.tmobile.myfaves
-  261   13664K   13664K    2295K    1400K  com.android.alarmclock
-  273   12976K   12976K    2069K    1168K  com.android.music
-  246   12488K   12488K    1845K    1072K  com.google.android.partnersetup
-  219   12360K   12360K    1808K    1008K  com.android.voicedialer
-</strong>   49    1464K    1464K    1021K     996K  /system/bin/mediaserver
-   47     624K     624K     394K     380K  /system/bin/rild
-  301     536K     536K     384K     336K  procrank
-   53     432K     432K     252K     244K  /system/bin/akmd
-  300     316K     316K     187K     140K  /system/bin/sh
-    1     180K     180K     162K     160K  /init
-   54     148K     148K     148K     148K  /sbin/adbd
-   45     244K     244K     110K     104K  /system/bin/vold
-   50     252K     252K      97K      88K  /system/bin/dbus-daemon
-   44     156K     156K      82K      80K  /system/bin/servicemanager
-   51     180K     180K      76K      72K  /system/bin/installd
-   46     144K     144K      63K      60K  /system/bin/debuggerd
-</pre>
-<p>This example is for a device with nearly 100MB available to the kernel. There are 14 application processes, highlighted in bold, able to run with 24MB of RAM remaining in cache. </p>
-<p>The per-process overhead of a Java process is 1-1.8MB (the <code>Uss</code> and <code>Pss</code> sections of the smallest process). This is an important number to track because it has a large impact on the number of concurrent processes that can run, and thus on the overall behavior of the system.  You should consider the numbers here as a low bar for what a running Android device should look like.</p>
-<p>These numbers may vary depending on your device and are intended to provide ballpark figures. </p>
-<h3><a name="resourceLeaks" id="systemImage4"></a>Resource Leaks</h3>
-<p>Android is designed to run for months without rebooting, and you should check for resource leaks that might damage or harm system performance over that amount of time.</p>
-<p>The two main kinds of leaks you might encounter are memory and file descriptors. </p>
-<p><strong>Memory Leaks</strong></p>
-<p>Focus particular attention on persistent processes like: </p>
-  <ul>
-  <li><code>system_server</code>: holds all of the core system services such as the window manager and activity manager</li>
-  <li><code>android.process.acore</code>: holds the core UI such as home, contacts, and the LatinIME</li>
-  <li><code>com.android.phone</code>: holds the user space telephone code and UI.&nbsp;</li></ul>
-<p>Also pay attention to the lower-level system processes, such as the mediaserver, rild, and the kernel as well as any custom drivers or other modifications you may have made.</p>
-<p>Leaks in these processes are especially serious because these processes can't be restarted without rebooting the phone. In most other processes, leaks are less problematic because the system will naturally kill and restart such processes during normal interaction with the phone, incidentally cleaning out potential leaks.</p>
-<p>The basic approach to looking for leaks is running the device with regular use of all features for a long period of time. You can also use a device in accelerated use, such as under the monkey command, for a shorter period of time.&nbsp; After use, look at the current state of the system to see if there is any unexpected growth in the use of any resource in these processes.</p>
-<p>For memory, the <code>procrank</code> command provides an initial verification. If a process hasn't grown excessively since first boot, it should be fine.&nbsp; Some growth is to be expected due to memory fragmentation.&nbsp; Here is the typical output of <code>procrank</code> after running for a while: </p>
-<pre>
-# procrank
-  PID      Vss      Rss      Pss      Uss  cmdline
-   83   44768K   27360K   18071K   16608K  system_server
- 5780   32672K   24480K   14822K   13224K  android.process.acore
-  128   25936K   17744K    8420K    7208K  com.android.phone
- 5787   17004K   17004K    7731K    6284K  com.google.process.gapps
-  205   21356K   13164K    4438K    3376K  com.android.inputmethod.latin
-10094   22184K   13992K    4051K    2676K  com.android.settings
-10285   13156K   13156K    3714K    2408K  android.process.media
-10224   13140K   13140K    3332K    1852K  com.google.android.gm
-10310   12444K   12444K    3017K    1516K  com.tmobile.myfaves
-   54    9152K    9152K    1811K     880K  zygote
-   55    1568K    1568K    1268K    1228K  /system/bin/mediaserver
-   53     636K     636K     435K     420K  /system/bin/rild
-10329     492K     492K     338K     288K  procrank
-   60     352K     352K     226K     220K  /system/bin/akmd
-10328     320K     320K     188K     140K  /system/bin/sh
-   61     200K     200K     188K     188K  /sbin/adbd
-    1     196K     196K     177K     176K  /init
-   51     268K     268K     132K     124K  /system/bin/vold
-   56     216K     216K     105K     100K  /system/bin/dbus-daemon
-   50     164K     164K      83K      80K  /system/bin/servicemanager
-   57     204K     204K      78K      72K  /system/bin/installd
-   59     164K     164K      76K      72K  /system/bin/keystore
-   52     152K     152K      64K      60K  /system/bin/debuggerd
-</pre>
-<p><strong>Descriptor Files</strong></p>
-<p>For file descriptors, look at the currently opened file descriptors with <code>adb shell ls -l /proc/&lt;pid&gt;/fd</code>.  Your shell must be running as root to execute this&#151;use <code>adb root</code> to restart your system as root.  Comparing before and after output will reveal leaks that happened during the test time.</p>
diff --git a/pdk/docs/guide/release_keys.jd b/pdk/docs/guide/release_keys.jd
deleted file mode 100755
index 7e83834..0000000
--- a/pdk/docs/guide/release_keys.jd
+++ /dev/null
@@ -1,82 +0,0 @@
-page.title=Creating Release Keys and Signing Builds
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<div id="qv-wrapper">
-  <div id ="qv"> 
-<h2>In this document</h2>
-<a name="toc"/>
-    <ul>
-      <li><a href="#intro">Introduction</a></li>
-      <li><a href="#generatingKeys">Generating keys</a></li>
-      <li><a href="#signing">Signing a build for release</a></li>
-    </ul>
-  </div>
-</div>
-<a name="intro"></a>
-<h3>Introduction</h3>
-<p>Android requires that each application be signed with the developer's digital keys to enforce signature permissions and application request to use shared user ID or target process.  For more information on the general Android security principles and signing requirements, see the Android Security and Permissions section in the Android Developer Guide).  The core Android platform uses four keys to maintain security of core platform components:</p>
-<ul>
-  <li><strong>platform</strong>: a key for packages that are part of the core platform.</li>
-  <li><strong>shared</strong>: a key for things that are shared in the <code>home/contacts</code> process.</li>
-  <li><strong>media</strong>: a key for packages that are part of the <code>media/download</code> system.</li>
-  <li><strong>releasekey</strong>: the default key to sign with if not otherwise specified</li>
-</ul>
-<p>These keys are used to sign applications separately for release images and are not used by the Android build system.  The build system signs packages with the testkeys provided in <code>build/target/product/security/</code>.  Because the testkeys are part of the standard Android open source distribution, they should never be used for production devices.  Instead, device manufacturers should generate their own private keys for shipping release builds.</p>
-<a name="generatingKeys"></a>
-<h3>Generating keys</h3>
-<p>A device manufacturer's keys for each product should be stored under  <code>vendor/&lt;vendor_name&gt;/security/&lt;product_name&gt;</code>, where <code>&lt;vendor_name&gt;</code> and <code>&lt;product_name&gt;</code> represent the manufacturer and product names.  To simplify key creation, copy the script below to this directory in a file called <code>mkkey.sh</code>.  To customize your keys, change the line that starts with AUTH to reflect the correct information for your company:</p>
-<pre>
-#!/bin/sh
-AUTH='/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
-if [ "$1" == "" ]; then
-        echo "Create a test certificate key."
-        echo "Usage: $0 NAME"
-        echo "Will generate NAME.pk8 and NAME.x509.pem"
-        echo "  $AUTH"
-        exit
-fi
-
-openssl genrsa -3 -out $1.pem 2048
-
-openssl req -new -x509 -key $1.pem -out $1.x509.pem -days 10000 \
-    -subj "$AUTH"
-
-echo "Please enter the password for this key:"
-openssl pkcs8 -in $1.pem -topk8 -outform DER -out $1.pk8 -passout stdin
-</pre>
-<p><code>mkkey.sh</code>  is a helper script to generate the platform's keys.  NOTE: the password you type will be visible in your terminal window.  Note the passwords you use as you will need them to sign release builds.</p>
-<p>To generate the required 4 platform keys, run <code>mkkey.sh</code> four times specifying the key name and password for each:</p>
-<pre>
-sh mkkey.sh platform # enter password
-sh mkkey.sh media # enter password
-sh mkkey.sh shared # enter password
-sh mkkey.sh release # enter password
-</pre>
-<p>You should now have new keys for your product.</p>
-<a name="signing"></a>
-<h3>Signing a build for release</h3>
-<p>Signing a build for a release is a two-step process.  </p>
-<ol>
-  <li>Sign all the individual parts of the build.</li>
-  <li>Put the parts back together into  image files.</li>
-</ol>
-<h4>Signing applications</h4>
-<p>Use <code>build/tools/releasetools/sign_target_files_apks</code> to sign a <code>target_files</code> package. The <code>target_files</code> package isn't built by default, you need to make sure to specify the "dist" target when you call make.  For example:</p>
-<pre>
-make -j4 PRODUCT-&lt;product_name&gt;-user dist
-</pre>
-<p>The command above creates a a file under <code>out/dist </code>called <code>&lt;product_name&gt;-target_files.zip</code>.  This is the file you need to pass to the <code>sign_target_files_apks</code> script.</p>
-<p>You would typically run the script like this:</p>
-<pre>
-./build/tools/releasetools/sign_target_files_apks -d vendor/&lt;vendor_name&gt;/security/&lt;product_name&gt; &lt;product_name&gt;-target_files.zip signed-target-files.zip
-</pre>
-<p>If you have prebuilt and pre-signed apk's in your build that you don't want re-signed, you must explicitly ignore them by adding <code>-e Foo.apk=</code> to the command line for each apk you wish to ignore.</p>
-<p><code>sign_target_files_apks</code> also has many other options that could be useful for signing release builds.  Run it with <code>-h</code> as the only option to see the full help.</p>
-<h4>Creating image files</h4>
-<p>Once you have <code>signed-target-files.zip</code>, create the images so you can put it onto a device with the command below:</p>
-<pre>
-build/tools/releasetools/img_from_target_files signed-target-files.zip signed-img.zip
-</pre>
-<p><code>signed-img.zip</code> contains all the <code>.img</code> files.  You can use <code>fastboot update signed-img.zip</code> to use fastboot to get them on the device.</p>
diff --git a/pdk/docs/guide/sensors.jd b/pdk/docs/guide/sensors.jd
deleted file mode 100755
index 61ca2d9..0000000
--- a/pdk/docs/guide/sensors.jd
+++ /dev/null
@@ -1,67 +0,0 @@
-page.title=Sensors
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidSensorsInterface">Interface</a></li>
-</ul>
-</div>
-</div>
-
-<p>Android defines a user space C abstraction interface for sensor hardware. The interface header is defined in 
-<code>hardware/libhardware/include/hardware/sensors.h</code>.
-In order to integrate sensors with Android you need to build a shared library that implements this interface. 
-
-The types of sensors currently supported by Android include:
-<ul>
-<li>Accelerometer</li>
-<li>Magnetic Field</li>
-<li>Orientation</li>
-<li>Gyroscope</li>
-<li>Light</li>
-<li>Pressure</li>
-<li>Temperature</li>
-<li>Proximity</li>
-</ul>
-</p> 
- 
-<a name="androidSensorBuildingDriver"></a><h3>Building a Sensor Library</h3>
-<p> To implement a Sensors driver, create a shared library that implements the interface defined in <code>sensors.h</code>. You must name your shared library 
-<code>libsensors.so</code> so that it will get loaded from <code>/system/lib</code> at runtime. 
-</p>
-
-<p> The following stub file, <code>Android.mk</code>, ensures that <code>libsensors</code> compiles and links to the appropriate libraries:</p>
-
-<pre>
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := sensors
-
-LOCAL_PRELINK_MODULE := false
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw
-
-LOCAL_SHARED_LIBRARIES := liblog
-# include any shared library dependencies
-
-LOCAL_SRC_FILES := sensors.c
-
-include $(BUILD_SHARED_LIBRARY)
-</pre>
- 
-<a name="androidSensorsInterface"></a><h3>Interface</h3> 
- 
- 
-<p><span class="lh3"><a name="androidDoxygenNote"></a></span> 
- 
-<p class="note"><strong>Note</strong>: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, <a href="sensors.html">click here</a>.</p> 
- 
- 
-<iframe onLoad="resizeDoxFrameHeight();" src="sensors_8h.html" scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" 
-frameborder="0" style="width:100%;"></iframe> 
diff --git a/pdk/docs/guide/source_setup_guide.jd b/pdk/docs/guide/source_setup_guide.jd
deleted file mode 100755
index 83c4a01..0000000
--- a/pdk/docs/guide/source_setup_guide.jd
+++ /dev/null
@@ -1,118 +0,0 @@
-page.title=Host System Setup
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<a name="toc"/>
-<div style="padding:10px">
-<a href="#androidSourceSetupIntro">Introduction</a><br/>
-<a href="#androidSourceSetupBuildSystemSetupPackages">Installing Packages</a><br/><div style="padding-left:40px">
-
-<a href="#androidSourceSetupBuildSystemSetupRequiredPackages">Required Packages</a><br/>
-<a href="#androidSourceSetupUbuntu606Intro">Ubuntu 6.06 (Dapper)</a><br/>
-<a href="#androidSourceSetupUbuntu710Intro">Ubuntu 7.10</a><br/>
-<a href="#androidSourceSetupUbuntu804Intro">Ubuntu 8.04</a><br/></div>
-<a href="#androidSourceSetupBuildSystemSetupJavaIntro">Installing Java</a><br/></div>
-
-<a name="androidSourceSetupIntro"></a><h2>Introduction</h2>
-
-<p>This section provides instructions on how to configure your host system to build Android for mobile devices. While Android is designed as host-environment agnostic, it has been tested and is known to work on the following Linux operating system; Ubuntu 6.06 (Dapper), 7.10 (Gutsy), and 8.04. Cygwin is not recommended. </p>
-
-
-<a name="androidSourceSetupBuildSystemSetupPackages"></a><h2>Installing Packages</h2>
-
-
-
-<a name="androidSourceSetupBuildSystemSetupRequiredPackages"></a><h3>Required Packages</h3>
-
-<p>Android requires the following system packages:</p>
-<p><ul>
-<li>flex: This lexical analyzer generator is used to read a given input file for a description of a scanner to generate.</li>
-<li>bison: This is a general-purpose parser generator.</li>
-<li>gperf: This is a perfect hash function generator.</li>
-<li>libesd0-dev: This enlightened sound daemon (dev files) is used to mix digitized audio streams for playback by a single device.</li>
-<li>libwxgtk2.6-dev: This package provides GUI components and other facilities for many different platforms.</li>
-<li>build-essential: This package contains a list of packages considered fundamental to building Debian packages.</li>
-</ul></p>
-
-
-<a name="androidSourceSetupUbuntu606Intro"></a><h3>Ubuntu 6.06 (Dapper)</h3>
-
-<p>On a clean Dapper system, type the following:</p>
-<pre class="prettyprint">
-% sudo apt-get install flex bison gperf libesd0-dev libwxgtk2.6-dev zlib1g-dev 
-   build-essential
-</pre>
-<p>This snippet includes an artificial line break to maintain a print-friendly document.</p>
-
-
-<a name="androidSourceSetupUbuntu710Intro"></a><h3>Ubuntu 7.10</h3>
-
-<ol><li>The libwxgtk2.6-dev package will only work if the following code is included in your  /etc/apt/source file.
-<p><pre class="prettyprint">
-## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
-## team, and may not be under a free license. Please satisfy yourself as to
-## your rights to use the software. Also, please note that software in
-## universe WILL NOT receive any review or updates from the Ubuntu security
-## team.
-# Line commented out by installer because it failed to verify:
-deb http://us.archive.ubuntu.com/ubuntu/ gutsy universe
-# Line commented out by installer because it failed to verify:
-deb-src http://us.archive.ubuntu.com/ubuntu/ gutsy universe
-# Line commented out by installer because it failed to verify:
-deb http://us.archive.ubuntu.com/ubuntu/ gutsy-updates universe
-# Line commented out by installer because it failed to verify:
-deb-src http://us.archive.ubuntu.com/ubuntu/ gutsy-updates universe
-</pre></p></li>
-<li>Install required packages with the following command:
-<p><pre class="prettyprint">
-% sudo apt-get install flex bison gperf libesd0-dev libwxgtk2.6-dev zlib1g-dev
-   build-essential
-</pre></p>
-This snippet includes an artificial line break to maintain a print-friendly document.
-</li>
-<li>
-<p>Install the X11 development environment with the following commands:</p>
-<p><pre class="prettyprint">
-% sudo apt-get install x-dev
-% sudo apt-get install libx11-dev
-% sudo apt-get install libncurses5-dev
-</pre></p>
-</li>
-</ol>
-
-
-<a name="androidSourceSetupUbuntu804Intro"></a><h3>Ubuntu 8.04</h3>
-
-<p>On a clean system, type the following:</p>
-<pre class="prettify">
-% sudo apt-get install flex bison gperf libesd0-dev libwxgtk2.6-dev
-zlib1g-dev build-essential
-% sudo apt-get install x-dev
-% sudo apt-get install libx11-dev
-% sudo apt-get install libncurses5-dev
-% sudo apt-get install sun-java5-jdk
-</pre>
-
-
-<a name="androidSourceSetupBuildSystemSetupJavaIntro"></a><h2>Installing Java</h2>
-
-<p>Android source code includes a hard dependency on the Java Developer Kit (JDK) 5.0 Update 12 or greater. The specific file name of the Update 12 package is <code>jdk-1_5_0_12-linux-i586.bin</code>. To download this version of the Java JDK:</p>
-<p><ol>
-<li>Navigate to: <a href="http://java.sun.com/products/archive/">http://java.sun.com/products/archive/</a>.</li>
-<li>Select '5.0 Update 12' from the 'Java 2 Platform Standard Edition (J2SE)' -> 'JDK/JRE - 5.0' field and click 'Go.'</li>
-<li>Click 'Download JDK.'</li>
-<li>In the 'Linux Platform' section, click 'Linux self-extracting file' associated with the jdk-1_5_0_12-linux-i586.bin package.</li>
-<li>Follow the installation instructions.</li>
-</ol>
-</p>
-
-<p>Once you have cleanly installed the JDK, modify your PATH environment variable to include <code>&lt;jdk-install-dir&gt;/jdk1.5.0_12/bin</code> at its beginning so that Dapper will use the correct installation. </p>
-<p><b>Ubuntu 7.10</b></p>
-<p>An alternative method to quickly install Java is to enable multiverse repo in <code>/etc/apt/sources.list</code> and then execute:</p>
-<pre class="prettyprint">
-% sudo apt-get install sun-java5-jdk
-</pre>
-
-
-
diff --git a/pdk/docs/guide/stk.jd b/pdk/docs/guide/stk.jd
deleted file mode 100755
index 4f68c48..0000000
--- a/pdk/docs/guide/stk.jd
+++ /dev/null
@@ -1,508 +0,0 @@
-page.title=Sim Toolkit Application (STK)
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidSTKRILRilUp">Communication from the RIL up</a></li>
-<li><a href="#androidSTKRILApplciationDown">Communication from the application down</a></li>
-<li><a href="#androidSTKTelephony">Telephony</a></li>
-<li><a href="#androidSTKFeatureList">Feature List</a></li>
-</ul>
-</div>
-</div>
-
-
-<p>This document offers a high-level overview of the SIM Toolkit Application for Android 1.0 and is primarily of interest for implementors of the Radio Interface Layer (RIL). The STK is  R96 compatible (3GPP TS 11.14 v5.9.0) and complies partially with R99 (3GPP TS 101.267 v8.17.0). See the <a href="#androidSTKFeatureList">STK Feature List</a> for the complete feature list. </p>.
-<p>The Android STK implementation includes three layers:</p> 
-<ul> 
-  <li> STK RIL: Low-level layer provided by the vendor plus <code>libril</code>.</li> 
-  <li>STK Telephony: Protocol translation layer that converts raw messages provided by the STK RIL to application level messages.</li> 
-  <li>STK Application: Provides the user interface interactions needed by the STK.</li> 
-</ul> 
-<p align="left"><br /> 
-    <img src="images/stk.gif" alt="STK schema" width="566" height="516" /><br /> 
-</p> 
-<p> The Sim Toolkit communication flow is bi-directional and commands can originate from the <code>STK RIL</code> packaged in <code>RIL_UNSOL_STK_PROACTIVE_COMMAND</code>, <code>RIL_UNSOL_STK_EVENT_NOTIFY</code>, <code>RIL_UNSOL_REFRESH</code> and <code>RIL_UNSOL_STK_SESSION_END</code> messages.</p> 
-<p align="left">Commands originating from the STK App or STK Telephony layers are packaged in <code>RIL_REQUEST_STK_SEND_TERMINAL_REPSONSE</code>, <code>RIL_REQUEST_SEND_ENVELOPE_COMMAND</code> or <code>RIL_REQUEST_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM</code>.</p> 
-<p align="left">For commands sent or recieved by the STK RIL, it's not necessary to remove unused sub-commands because the upper layers will gracefully ignore unused information contained in the message. The content of each message is encoded in the BER-TLV format except for two:</p> 
-<ul> 
-  <li><code>RIL_UNSOL_STK_SESSION_END</code>: has no data </li> 
-  <li><code>RIL_REQUEST_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM</code>: has a single byte of data that indicates accept/reject.</li> 
-</ul> 
-<p>See the <a href="http://pdk-docs.prom.corp.google.com/docs/telephony.html">Android Platform Development Kit</a> for details.</p> 
- 
- 
-<a name="androidSTKRILRilUp"></a><h4>Communication from the RIL up</h4> 
- 
-<p>Communication to the upper layers is done using the <code>RIL_UNSOL_xxx</code> family of commands defined in <code>/hardware/ril/include/ril.h</code>. The payload for each command is encoded using BER-TLV. As stated above, it is not necessary to remove extraneous fields. This allows the SIM to pass a complete command to the upper layers and simplifies STK RIL code. Below is the mapping from RIL_UNSOL_xxx commands to the SIM commands.</p> 
- 
- 
-<a name="androidSTKRILRilUpUnsol"></a><h4>RIL_UNSOL_STK_PROACTIVE_COMMAND</h4> 
- 
-<p> The Sim Toolkit communication flow is bi-directional and commands can originate from the <code>STK RIL</code> packaged in <code>RIL_UNSOL_STK_PROACTIVE_COMMAND</code>, <code>RIL_UNSOL_STK_EVENT_NOTIFY</code>, <code>RIL_UNSOL_REFRESH</code> and <code>RIL_UNSOL_STK_SESSION_END</code> messages.</p> 
- 
- 
-<a name="androidSTKRILRilUpDisplay"></a><h5>DISPLAY TEXT (6.4.1)</h5> 
- 
-<p>This command is handled by <code>StkDialogActivity</code>. If the immediate response flag is set, the terminal response is sent with an "OK" <code>(0x00)</code> result code when the message is first received. Otherwise the terminal response is sent when the dialog is dismissed either from user action or it times out.</p> 
-<p>The user sees a dialog box with a message and / or icon, an OK button, and a Cancel button.</p> 
-<p>Terminal responses include:</p> 
-<ul> 
-  <li> "OK" (0x00)</li> 
-  <li> "Session terminated by user" (0x10)</li> 
-  <li> "Backward move by user" (0x11)</li> 
-  <li> "No response from user" (0x12)</li> 
-</ul> 
- 
-<img src="images/stk_display_text.gif" border="1"> 
- 
- 
-<a name="androidSTKRILRilUpGetInKey"></a><h5>GET IN KEY (6.4.2)</h5> 
- 
-<P>This command is processed by <code>StkInputActivity</code>. It displays a dialog box with a prompt and or an icon and yes and no buttons.</p> 
-<p>Terminal responses include:</p> 
-<p> 
-<ul> 
-  <li> “OK” (0x00) with “Yes” or “No” as the response text</li> 
-  <li> “Session terminated by user” (0x10) << Currently not supported</li> 
-  <li> “Backward move by user” (0x11)</li> 
-  <li> “No response from user” (0x12)</li> 
-</ul> 
-</p> 
- 
- 
-<a name="androidSTKRILRilUpGetInput"></a><h5>GET INPUT (6.4.3)</h5> 
- 
-<p>This command is handled by <code>StkInputActivity</code>. 
-<p>The user sees a dialog box with a prompt and / or an icon, a text box with optional default text, and an OK button. 'digits only,' 'min,' 'max,' and 'hidden' modes are all supported.
-<p>Terminal responses include:</p> 
-	<ul> 
-	  <li>OK” (0x00) if the input criteria is met	</li> 
-      <li>“Session terminated by user” (0x10) << Currently not supported	</li> 
-      <li>“Backward move by user” (0x11)        </li> 
-      <li>“No response from user” (0x12) </li> 
-</ul> 
- 
- 
-<a name="androidSTKRILRilUpPlayTone"></a><h5>PLAY TONE (6.4.5)</h5> 
- 
-<p>This command is processed by <code>ToneDialog</code>.</p> 
-<p>The user sees a dialog box with a prompt for the duration of the tone or until the user presses the back key.</p> 
-<p>Terminal responses include:</p> 
-	<ul> 
-	  <li>"OK" (0x00) if the tone is played to completion	</li> 
-      <li>“Session terminated by user” (0x10)  if back button is pressed </li> 
-</ul> 
- 
- 
-<a name="androidSTKRILRilUpSetMenu"></a><h5>SET UP MENU (6.4.8)</h5> 
- 
-<p>This command is processed by <code>StkAppService</code>. It installs the STK ICON on the home page and prepares the Main menu for use when the ICON is selected. Typically this is the first RIL unsolicited command and should not be sent until after the <code>RIL_RadioFunctions.getVersion</code> routine is called.</p> 
-<p>Terminal reponses:</p> 
-<ul> 
-  <li>“OK” (0x00) </li> 
-</ul> 
-<p>At a later time, the STK ICON will be selected and <code>StkMenuActivity</code> will launch and display the Main menu to the user. If an item is selected, it will be returned to the RIL in <code>RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND</code> with the item id. If no item is selected, the <code>StkMenuActivity</code> will receive a timeout message and return to the Main menu and no message will be sent to the RIL.</p> 
-<p>Depending upon what item is selected, the SIM may perform another action, such as sending another set of menu items via a SELECT ITEM command or performing an action like send an SMS or text display. </p> 
- 
- 
-<a name="androidSTKRILRilUpSelectItem"></a><h5>SELECT ITEM (6.4.9)</h5> 
- 
-<p>This command is processed by <code>StkMenuActivity</code>. Instead of displaying the Main menu, the list of menu items provided in this command are displayed.</p> 
-<p>Terminal responses:
-<ul> 
-  <li> “OK” (0x00)    </li> 
-</ul> 
-<p>The command then proceeds as in the SETUP MENU. </p> 
- 
- 
-<a name="androidSTKRILRilUpSetIdle"></a><h5>SET UP IDLE MODE TEXT (6.4.22)</h5> 
- 
-<p><code>StkAppService</code> displays the message and or icon as an Android notification.</p> 
-<p>Terminal responses include:</p> 
-	<ul> 
-	  <li>OK” (0x00)</li> 
-</ul> 
- 
- 
-<a name="androidSTKRILRilUpLaunchBrowser"></a><h5>LAUNCH BROWSER (6.4.26)</h5> 
- 
-<p>This command is initially handled by <code>StkDialogActivity</code> and presents the user with a confirmation dialog, a URL, and OK, and cancel buttons. If the user presses OK, the browser is launched using the URL.</p> 
-<p>Terminal responses include:</p> 
-	<ul> 
-	  <li>“OK” (0x00) the browser has been launched	    </li> 
-      <li>“Session terminated by user” (0x10) </li> 
-      <li>“Backward move by user” (0x11)</li> 
-      <li>“No response from user” (0x12)</li> 
-</ul> 
- 
- 
-<a name="androidSTKRILRilUpEvent"></a><h4>RIL_UNSOL_STK_EVENT_NOTIFY</h4> 
- 
-<p align="left">The commands in this section are proactive in nature. They are handled by the STK RIL and the upper layers and delivered using <code>RIL_UNSOL_STK_EVENT_NOTIFY</code> message. This distinction is an implementation detail of Android and is not defined in the 3GPP sepcifications.</p> 
-<p align="left">The upper layers handle the UI and the STK RIL handles all other aspects of each command, which means that the STK RIL sends the terminal response (it is never sent by the STK App). Each command must be a properlery-formed proactive command. It is not necessary to remove unused fields. The behavior of any other command <em>within this context </em>sent by <code>RIL_UNSOL_STK_EVENT_NOTIFY</code> is undefined. See Event Notify Command Details. </p> 
-<ul> 
-  <li>SEND SMS (6.4.10) – no response</li> 
-  <li>SEND SS (6.4.11) – no response</li> 
-  <li>SEND USSD (6.4.12) – no response</li> 
-  <li>SET UP CALL (6.4.13) – responds with <code>RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM</code></li> 
-  <li>SEND DTMF (6.4.24) – no response</li> 
-</ul> 
- 
-<img src="images/stk_send_SMS.gif"> 
- 
- 
-<a name="androidSTKRILRilUpUnsolSim"></a><h4>RIL_UNSOL_SIM_REFRESH</h4> 
- 
-<p> Used to send the <code>REFRESH</code> command. No response.</p> 
- 
- 
-<a name="androidSTKRILRilUpRefresh"></a><h4>REFRESH (6.4.7)</h4> 
- 
-<p><code>RIL_UNSOL_STK_SESSION_END</code></p> 
-<p>Sent by the SIM to signal the end of a session. No content and no response.</p> 
-<P><img src="images/stk_refresh_init.gif"></p>
-<p><img src="images/stk_refresh_update.gif"> </p>
-<p><img src="images/stk_refresh_reset.gif"> </p>
- 
- 
- 
-<a name="androidSTKRILRilUpRilUnsol"></a><h4>RIL_UNSOL_STK_SESSION_END</h4> 
- 
-<p>Sent by SIM to signal end of session. No content and no response.</p> 
- 
- 
-<a name="androidSTKRILApplciationDown"></a><h4>Communication from the application down</h4> 
- 
-<p>Communication from the upper layers to the RIL uses the commands below (defined in <code>ril.h</code>):</p> 
- 
- 
-<a name="androidSTKRILApplciationDownTerminal"></a><h4>RIL_REQUEST_STK_SEND_TERMINAL_REPSONSE</h4> 
- 
-<p> Used to send a terminal response for commands sent via <code>RIL_UNSOL_STK_PROACTIVE_COMMAND</code>. </P> 
-<P>Contents include TERMINAL RESPONSE (6.8).</p> 
- 
- 
-<a name="androidSTKRILApplciationDownEnvelope"></a><h4>RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND</h4> 
- 
-<p>Used to send information from to SIM encoded as BER-TLV tags (see R96  section 13). Two tags are supported:</p> 
-<ul> 
-  <li> BER_MENU_SELECTION_TAG (0xd3); Contents: MENU SELECTION (8)</li> 
-  <li>BER_EVENT_DOWNLOAD_TAG (0xd6); Contents: EVENT DOWNLOAD Language selection (11.8)</li> 
-</ul> 
-<P>Content for these tags include:
-<ul> 
-  <li>MENU SELECTION (8)</li> 
-  <li>EVENT DOWNLOAD Language selection (11.8)</li> 
-</ul> 
- 
- 
- 
-<a name="androidSTKRILApplciationDownFromSim"></a><h4>RIL_REQUEST_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM</h4> 
- 
-<p>Returns a single-byte parameter:</p> 
-<ul> 
-  <li>1: accepted</li> 
-  <li>0: not accepted</li> 
-</ul> 
-<p> This should cause the terminal response to be sent to the SIM.</p> 
- 
- 
-<a name="androidSTKTelephony"></a><h3>Telephony</h3> 
- 
-<p>STK Telephony is a protocol translation layer used to convert messages from BERL-TLV format to Application messages and back. </p> 
-<p>On the STK RIL side, STK Telphony receives raw buffer messages from RIL I/F and decodes them into a command parameters container before passing them on to the application. On the Application side, this layer receives application responses for commands and encodes them into raw buffer messages, which then get sent over the RIL I/F back to the SIM card.</p> 
- 
- 
-<a name="androidSTKFeatureList"></a><h3>Feature List</h3> 
- 
-<table border="1" cellspacing="2" cellpadding="2"> 
-  <tr> 
-    <td><p align="center"><strong>Feature</strong></p></td> 
-    <td><p align="center"><strong>Support</strong></p></td> 
-    <td><p align="center"><strong>Implemented by</strong></p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>PROFILE   DOWNLOAD - before radio turn-on</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>SET UP   MENU</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom" u1:str="SELECT ITEM "><p>SELECT   ITEM&nbsp;</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>GET INPUT</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>GET INKEY</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>DISPLAY   TEXT</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom" u1:str="SET UP IDLE MODE TEXT   "><p>SET UP   IDLE MODE TEXT&nbsp;&nbsp;&nbsp;</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom" u1:str="SEND SHORT MESSAGE "><p>SEND   SHORT MESSAGE&nbsp;</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband – ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom" u1:str="SEND SS "><p>SEND   SS&nbsp;</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband – ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>SEND USSD</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband – ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>SEND DTMF</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband – ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>LAUNCH   BROWSER</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>SET UP   CALL</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband – ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>PLAY TONE</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>POLL   INTERVAL</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>POLLING   OFF</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom" u1:str="TIMER MANAGEMENT "><p>TIMER   MANAGEMENT&nbsp;</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>MORE TIME</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>PROVIDE   LOCAL INFORMATION (MCC, MNC, LAC, Cell ID &amp; IMEI)</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>PROVIDE   LOCAL INFORMATION (NMR)</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>PROVIDE   LOCAL INFORMATION (Timing Advance)</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>PROVIDE   LOCAL INFORMATION(battery state)</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>PROVIDE   LOCAL INFORMATION (IMEISV)</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>PROVIDE   LOCAL INFORMATION (NMR(UTRAN))</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>PROVIDE   LOCAL INFORMATION (Search Mode change)</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>REFRESH</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">ME</p></td> 
-  </tr> 
-  
-  <tr> 
-    <td nowrap="nowrap" valign="bottom" u1:str="SET UP EVENT LIST "><p>SET UP   EVENT LIST&nbsp;</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband – ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Event: MT   call</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Event:   Call connected (all modes)</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Event:   Call disconnected (all modes)</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Event:   Idle screen available</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Event:   Browser termination</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom" u1:str="Event: Location status "><p>Event:   Location status&nbsp;</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Event:   Data available</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Event:   Channel status</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Event:   Access Technology changed</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Event:   Local Connection</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Event:   Network Search Mode Change</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>GET   READER STATUS</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>POWER ON   CARD</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>POWER OFF   CARD</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>PERFORM   CARD ADPU</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>RUN AT   COMMAND</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>OPEN   CHANNEL</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom" u1:str="CLOSE CHANNEL "><p>CLOSE   CHANNEL&nbsp;</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>RECEIVE   DATA</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>SEND DATA</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>GET   CHANNEL STATUS</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>CALL   CONTROL BY SIM</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>SMS-PP   data download</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>SMS-CB   data download</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom" u1:str="BIP over GPRS "><p>BIP over   GPRS&nbsp;</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>BIP over   USB</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom" u1:str="Text Attributes  "><p>Text   Attributes&nbsp;&nbsp;</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Color   icons</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">ME</p></td> 
-  </tr> 
-</table> 
diff --git a/pdk/docs/guide/system_requirements.jd b/pdk/docs/guide/system_requirements.jd
deleted file mode 100755
index 0077447..0000000
--- a/pdk/docs/guide/system_requirements.jd
+++ /dev/null
@@ -1,60 +0,0 @@
-page.title=Device Requirements
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<p>While Android is designed to support a wide variety of hardware platforms and configurations, this section provides recommended minimum device requirements.</p>
-<table border=1 cellpadding=2 cellspacing=0>
-    <tbody><tr>
-      <th scope="col">Feature</th>
-        <th scope="col">Minimum Requirement</th>
-        <th scope="col">Notes</th>
-    </tr>
-	<tr>
-	  <td>Chipset</td>
-	  <td>ARM-based</td>
-	  <td>For the first release, Android is primarily targeted towards mobile handsets and portions of the platform, such as Dalvik VM graphics processing, currently assume an ARM architecture.</td>
-	</tr>
-	<tr>
-	  <td>Memory</td>
-	  <td>128 MB RAM; 256 MB Flash External</td>
-	  <td>Android can boot and run in configurations with less memory, but it isn't recommended.</td>
-	  </tr>
-	<tr>
-	  <td>Storage</td>
-	  <td>Mini or Micro SD </td>
-	  <td>Not necessary for basic bring up, but recommended.</td>
-	  </tr>
-	<tr>
-	  <td>Primary Display </td>
-	  <td>HVGA required</td>
-	  <td>The current Android interface targets a touch-based HVGA resolution display with a touch-interface no smaller than 2.8 inches in size. However, smaller displays will suffice for initial porting.</td>
-	  </tr>
-	<tr>
-	  <td>Navigation Keys </td>
-	  <td>5-way navigation with 5 application keys, power, camera and volume controls</td>
-	  <td>&nbsp;</td>
-	  </tr>
-	<tr>
-	  <td>Camera</td>
-	  <td>2MP CMOS</td>
-	  <td>Not required for basic bring up. </td>
-	  </tr>
-	<tr>
-	  <td>USB</td>
-	  <td>Standard mini-B USB interface</td>
-	  <td>Android uses the USB interface for flashing the device system images and debugging a running device.</td>
-	  </tr>
-	<tr>
-	  <td>Bluetooth</td>
-	  <td>1.2 or 2.0 </td>
-	  <td>Not required for initial bring up.</td>
-	  </tr>
-</tbody>
-</table>
-<p>If available, your Android device can also benefit from the following optional device characteristics:</p>
-<ul>
-  <li>QWERTY keyboard</li>
-  <li>WiFi</li>
-  <li>GPS</li>
-</ul>
diff --git a/pdk/docs/guide/tcpdump.jd b/pdk/docs/guide/tcpdump.jd
deleted file mode 100755
index 01f77bb..0000000
--- a/pdk/docs/guide/tcpdump.jd
+++ /dev/null
@@ -1,90 +0,0 @@
-page.title=Debugging with tcpdump and other tools
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-
-<a name="toc"/>
-<div style="padding:10px">
-  <a href="#installing">Installing tcpdump</a><BR>
-  <a href="#running">Running tcpdump</a><br/>
-  <a href="#other">Other network debugging commands</a><br/>
-</div>
-
-<a name="installing"></a>
-<h3>Installing tcpdump</h3>
-<h4>Pushing the binary to an existing device</h4>
-<p>Download tcpdump from <a href="http://www.tcpdump.org/">http://www.tcpdump.org/</a>, then execute:</p>
-<pre>
-adb root
-adb remount
-adb push /wherever/you/put/tcpdump /system/xbin/tcpdump
-adb shell chmod 6755 /data/local/tmp/tcpdump
-</pre>
-<h4>Including tcpdump in the build image</h4>
-<p>If you are running your own build, execute:</p>
-<pre>
-mmm external/tcpdump  # install the binary in out/.../system/xbin
-make snod             # build a new system.img that includes it
-</pre>
-<p>Flash the device as usual, for example, <code>fastboot flashball</code>.</p>
-<p>If you want to build tcpdump by default, add <code>CUSTOM_TARGETS += tcpdump</code> to your <code>buildspec.mk</code>.</p>
-<h3><a name="running"></a>Running tcpdump</h3>
-<p>You need to have root access on your device. </p>
-<h4>Batch mode capture</h4>
-<p>The typical procedure is to capture packets to a file and then examine the file on the desktop, as illustrated below:</p>
-<pre>
-adb shell tcpdump -i any -p -s 0 -w /sdcard/capture.pcap
-# "-i any": listen on any network interface
-# "-p": disable promiscuous mode (doesn't work anyway)
-# "-s 0": capture the entire packet
-# "-w": write packets to a file (rather than printing to stdout)
-
-   ... do whatever you want to capture, then ^C to stop it ...
-
-adb pull /sdcard/capture.pcap .
-sudo apt-get install wireshark  # or ethereal, if you're still on dapper
-wireshark capture.pcap          # or ethereal
-
-   ... look at your packets and be wise ...
-</pre>
-<p>You can run <code>tcpdump</code> in the background from an interactive shell or from Terminal. By default, <code>tcpdump</code> captures all traffic without filtering. If you prefer, add an expression like port 80 to the <code>tcpdump</code> command line.</p>
-<h4>Real time packet monitoring</h4>
-<p>Execute the following if you would like to watch packets go by rather than capturing them to a file (<code>-n</code> skips DNS lookups. <code>-s 0</code> captures the entire packet rather than just the header):</p>
-<pre>
-adb shell tcpdump -n -s 0
-</pre>
-<p>Typical <code>tcpdump</code> options apply. For example, if you want to see HTTP traffic:</p>
-<pre>
-adb shell tcpdump -X -n -s 0 port 80
-</pre>
-<p>You can also monitor packets with <code>wireshark</code> or <code>ethereal</code>, as shown below:</p>
-<pre>
-# In one shell, start tcpdump.
-adb shell "tcpdump -n -s 0 -w - | nc -l -p 11233"
-
-# In a separate shell, forward data and run ethereal.
-adb forward tcp:11233 tcp:11233 && nc 127.0.0.1 11233 | ethereal -k -S -i -
-</pre>
-<p>Note that you can't restart capture via <code>ethereal</code>. If anything goes wrong, you will need to rerun both commands.</p>
-<p>For more immediate output, add <code>-l</code> to the <code>tcpdump</code> command line, but this can cause <code>adb</code> to choke (it helps to use a nonzero argument for <code>-s</code> to limit the amount of data captured per packet; <code>-s 100</code> is sufficient if you just want to see headers).</p>
-<h4>Disabling encryption</h4>
-<p>If your service runs over <code>https</code>, <code>tcpdump</code> is of limited use. In this case, you can rewrite some service URLs to use <code>http</code>, for example:</p>
-<pre>
-vendor/google/tools/override-gservices url:calendar_sync_https_proxy \
-  https://www.google.com/calendar rewrite http://android.clients.google.com/proxy/calendar
-</pre>
-<h3><a name="other"></a>Other network debugging commands</h3>
-<h4>On the device:</h4>
-<ul>
-  <li><code>ifconfig interface</code>: note that unlike Linux, you need to give <code>ifconfig</code> an argument</li>
-  <li><code>netcfg</code>: lists interfaces and IP addresses</li>
-  <li><code>iftop</code>: like top for network</li>
-  <li><code>route</code>: examine the routing table</li>
-  <li><code>netstat</code>: see active network connections</li>
-  <li><code>nc</code>: <code>netcat</code> connection utility</li>
-</ul>
-<h4>On the desktop:</h4>
-<ul>
-  <li> <code>curl</code>: fetch URLs directly to emulate device requests</li>
-</ul>
diff --git a/pdk/docs/guide/telephony.jd b/pdk/docs/guide/telephony.jd
deleted file mode 100755
index 2004e63..0000000
--- a/pdk/docs/guide/telephony.jd
+++ /dev/null
@@ -1,230 +0,0 @@
-page.title=Radio Layer Interface
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidTelephonyRILInitialization">RIL Initialization</a></li>
-<li><a href="#androidTelephonyRILIntro">RIL Interaction</a></li>
-<li><a href="#androidTelephonyRILImplementing">Implementing the RIL</a></li>
-<li><a href="#androidTelephonyRILFunctions">RIL Functions</a></li>
-</ul>
-</div>
-</div>
-
-<p>Android's Radio Interface Layer (RIL) provides an abstraction layer between Android telephony services (<a href="http://code.google.com/android/reference/android/telephony/package-descr.html">android.telephony</a>) and radio hardware. The RIL is radio agnostic, and includes support for Global System for Mobile communication (GSM)-based radios.&nbsp;</P>
-
-
-<p>The diagram below illustrates the RIL in the context of Android's Telephony system architecture.</p>
-<p><img src="images/telephony.gif"></p>
-
-Solid elements represent Android blocks and dashed elements represent partner-specific blocks.
-
-<p>The RIL consists of two primary components:</p>
-<p><ul>
-<li><b>RIL Daemon</b>: The RIL daemon initializes the Vendor RIL, processes all communication from Android telephony services, and dispatches calls to the Vendor RIL as solicited commands.</li>
-<li><b>Vendor RIL</b>: The radio-specific Vendor RIL of <code>ril.h</code> that processes all communication with radio hardware and dispatches calls to the RIL Daemon (<code>rild</code>) through unsolicited commands.</li>
-</ul>
-</p>
-
-
-<a name="androidTelephonyRILInitialization"></a><h3>RIL Initialization</h3>
-
-<p>Android initializes the telephony stack and the Vendor RIL at startup as described in the sequence below:</p>
-<p><ol>
-<li>RIL daemon reads <code>rild.lib</code> path and <code>rild.libargs</code> system properties to determine the Vendor RIL library to use and any initialization arguments to provide to the Vendor RIL</li>
-<li>RIL daemon loads the Vendor RIL library and calls <code>RIL_Init</code> to initialize the RIL and obtain a reference to RIL functions</li>
-<li>RIL daemon calls <code>RIL_register</code> on the Android telephony stack, providing a reference to the Vendor RIL functions</li></ol>
-</p>
-<p>See the RIL Daemon source code at <code>//device/commands/rild/rild.c</code> for details.</p>
-<p><b>System Properties</b></p>
-<p>The following RIL-related system properties are set by the RIL library:</p>
-<p><ul>
-<li><code>ro.ril.ecclist</code>: list of valid Emergency Call Codes, for example, 911. Values are read from <code>EF_ECC</code> on the SIM and possibly supplmented by tables based on operator, network, or manufacturing code.</li></ul></p>
-
-<p>The following RIL_related system properties are available to the RIL library:</p>
-<p><ul>
-<li><code>ro.ril.hsxpa</code>: inidcates <code>hsxpa</code> support of target network.</li>
-<li><code>ro.ril.gprsclass</code>: inidcates GPRS class of target network.</li>
-<li><code>ro.ril.enable.3g.prefix=1</code>: adds the 3G prefix to the operator name.</li>
-</ul></p>
-
-<a name="androidTelephonyRILIntro"></a><h3>RIL Interaction</h3>
-
-<p>There are two forms of communication that the RIL handles:</p>
-<ul>
-  <li>Solicited commands: Solicited commands originated by RIL lib, such as <code>DIAL</code> and <code>HANGUP</code>.</li>
-  <li>Unsolicited responses: Unsolicited responses that originate from the baseband, such as <code>CALL_STATE_CHANGED</code> and <code>NEW_SMS</code>.</li>
-</ul>
-
-
-<a name="androidTelephonyRILSolicited"></a><h4>Solicited</h4>
-
-<p>The following snippet illustrates the interface for solicited commands:</p>
-<pre class="prettify">
-void OnRequest (int request_id, void *data, size_t datalen, RIL_Token t);&#13;
-void OnRequestComplete (RIL_Token t, RIL_Error e, void *response, size_t responselen);&#13;
-</pre>
-<p>There are over sixty solicited commands grouped by the following families:</p>
-<p>
-<ul>
-  <li>SIM PIN, IO, and IMSI/IMEI (11)</li>
-  <li>Call status and handling (dial, answer, mute&hellip;) (16)</li>
-  <li>Network status query (4)</li>
-  <li>Network setting (barring, forwarding, selection&hellip;) (12)</li>
-  <li>SMS (3)</li>
-  <li>PDP connection (4)</li>
-  <li>Power and reset (2)</li>
-  <li>Supplementary Services (5)</li>
-  <li>Vendor defined and support (4)<br/>
-                    </li>
-</ul>
-</p>
-<p>The following diagram illustrates a solicited call in Android.</p>
-<p><img src="images/telephony_solicted_example.gif"></p>
-
-
-<a name="androidTelephonyRILUnsolicited"></a><h4>Unsolicited</h4>
-
-<p>The following snippet illustrates the interface for unsolicited commands:</p>
-<pre class="prettify">
-void OnUnsolicitedResponse (int unsolResponse, void *data, size_t datalen);
-</pre>
-<p>There are over ten unsolicited commands grouped by the following families:</p>
-<p>
-<ul>
-<li>Network status changed (4)</li>
-<li>New SMS notify (3)</li>
-<li>New USSD notify (2)</li>
-<li>Signal strength or time changed (2)</li>
-</ul>
-</p>
-<p>The following diagram illustrates an unsolicited call in Android.</p>
-<p><img src="images/telephony_unsolicted_example.gif"></p>
-
-
-<a name="androidTelephonyRILImplementing"></a><h3>Implementing the RIL</h3>
-
-<p>To implement a radio-specific RIL, create a shared library that implements a set of functions required by Android to process radio requests. The required functions are defined in the RIL header (<code>/include/telephony/ril.h</code>).</p>
-<p>The Android radio interface is radio-agnostic and the Vendor RIL can use any protocol to communicate with the radio.&nbsp;Android provides a reference Vendor RIL, using the Hayes AT command set, that you can use as a quick start for telephony testing and a guide for commercial vendor RILs. The source code for the reference RIL is found at <code>/commands/reference-ril/</code>.</p>
-<p>Compile your Vendor RIL as a shared library using the convention <code>libril-&lt;companyname&gt;-&lt;RIL version&gt;.so</code>, for example, libril-acme-124.so, where:</p>
-<p><ul>
-<li><b>libril</b>: all vendor RIL implementations start with 'libril'</li>
-<li><b>&lt;companyname&gt;</b>: a company-specific abbreviation</li>
-<li><b>&lt;RIL version&gt;</b>: RIL version number</li>
-<li><b>so</b>: file extension</li>
-</ul>
-</p>
-
-
-<a name="androidTelephonyRILInit"></a><h4>RIL_Init</h4>
-
-<p>Your Vendor RIL must define a RIL_Init function that provides a handle to the functions which will process all radio requests.  RIL_Init will be called by the Android RIL Daemon at boot time to initialize the RIL.</p>
-
-<pre class="prettify">
-RIL_RadioFunctions *RIL_Init (RIL_Env* env, int argc, char **argv);
-</pre>
-
-<p>RIL_Init should return a RIL_RadioFunctions structure containing the handles to the radio functions:</p>
-<pre class="prettify">
-type structure {
-	int RIL_version;
-	RIL_RequestFunc onRequest;
-	RIL_RadioStateRequest onStateRequest;      
-	RIL_Supports supports;
-	RIL_Cancel onCancel;
-	RIL_GetVersion getVersion;
-} 
-RIL_RadioFunctions;
-</pre>
-
-
-<a name="androidTelephonyRILFunctions"></a><h3>RIL Functions</h3>
-
-<p><code>ril.h</code> defines RIL states and variables, such as <code>RIL_UNSOL_STK_CALL_SETUP</code>, <code>RIL_SIM_READY</code>, <code>RIL_SIM_NOT_READY</code>, as well as the functions described in the tables below. Skim the header file (<code>/device/include/telephony/ril.h</code>) for details.</p>
-
-
-<a name="androidRilFunctionsSolicited"></a><h4>RIL Solicited Command Requests</h4>
-
-<p>The vendor RIL must provide the functions described in the table below to handle solicited commands. The RIL solicited command request types are defined in <code>ril.h</code> with the <code>RIL_REQUEST_</code> prefix. Check the header file for details.</p>
-<p><table>
-  <tr><th scope="col">Name</th><th scope="col">Description</th></tr>
-  <tr>
-    <td valign="top"><code> void (*RIL_RequestFunc) (int request, void *data, size_t datalen, RIL_Token t);</code></td>
-    <td valign="top">
-	<p>This is the RIL entry point for solicited commands and must be able to handle the various RIL solicited request types defined in <code>ril.h</code> with the <code>RIL_REQUEST_</code> prefix.</p>
-	<ul>
-        <li><code>request</code> is one of <code>RIL_REQUEST_*</code></li>
-        <li><code>data</code> is pointer to data defined for that <code>RIL_REQUEST_*</code></l>
-        <li><code>t</code> should be used in subsequent call to <code>RIL_onResponse</code></li>
-        <li><code>datalen</code> is owned by caller, and should not be modified or freed by callee</li>
-      </ul>
-	<p>Must be completed with a call to <code>RIL_onRequestComplete()</code>. &nbsp;<code>RIL_onRequestComplete()</code> may be called from any thread before or after this function returns. This will &nbsp;always be called from the same thread, so returning here implies that the radio is ready to process another command (whether or not the previous command has completed).</p></td>
-  </tr>
-  <tr>
-    <td valign="top"><code> RIL_RadioState (*RIL_RadioStateRequest)();</code></td>
-    <td valign="top">This function should return the current radio state synchronously.</td>
-  </tr>
-  <tr>
-    <td valign="top"><code> int (*RIL_Supports)(int requestCode);</code></td>
-    <td valign="top">This function returns "1" if the specified <code>RIL_REQUEST</code> code is supported and 0 if it is not.</td>
-  </tr>
-  <tr>
-    <td valign="top"><code> void (*RIL_Cancel)(RIL_Token t);</code></td>
-    <td valign="top"><p>This function is used to indicate that a pending request should be canceled. This function is called from a separate thread--not the thread that calls <code>RIL_RequestFunc</code>.</p>
-      <p>On cancel, the callee should do its best to abandon the request and call <code>RIL_onRequestComplete</code> with <code>RIL_Errno CANCELLED</code> at some later point.</p>
-      <p>Subsequent calls to <code>RIL_onRequestComplete</code> for this request with other results will be tolerated but ignored (that is, it is valid to ignore the cancellation request).</p>
-    <p><code>RIL_Cancel</code> calls should return immediately and not wait for cancellation.</p></td>
-  </tr>
-  <tr>
-    <td valign="top"><code> const char * (*RIL_GetVersion) (void);</code></td>
-    <td valign="top">Return a version string for your Vendor RIL</td>
-  </tr>
-</table>
-
-
-<p>The vendor RIL uses the following callback methods to communicate back to the Android RIL daemon.</p>
-<p>
-<table>
-  <tr>
-    <th scope="col">Name</th>
-    <th scope="col">Description</th>
-  </tr>
-  <tr>
-    <td><code>void RIL_onRequestComplete(RIL_Token t, RIL_Errno e, void *response, size_t responselen);</code></td>
-    <td><ul>
-      <li><code>t</code> is parameter passed in on previous call to <code>RIL_Notification</code> routine.</li>
-      <li>If <code>e</code> != SUCCESS, then response can be null and is ignored</li>
-      <li><code>response</code> is owned by caller, and should not be modified or freed by callee</li>
-      <li><code>RIL_onRequestComplete</code> will return as soon as possible</li>
-    </ul></td>
-  </tr>
-  <tr>
-    <td><code>void RIL_requestTimedCallback (RIL_TimedCallback callback, void *param, const struct timeval *relativeTime);</code></td>
-    <td>Call user-specified callback function on the same thread that <code>RIL_RequestFunc</code> is called. If <code>relativeTime</code> is specified, then it specifies a relative time value at which the callback is invoked. If <code>relativeTime</code> is NULL or points to a 0-filled structure, the callback will be invoked as soon as possible.</td>
-  </tr>
-</table></p>
-
-
-<a name="androidRilFunctionsUnsolicited"></a><h4>RIL Unsolicited Commands</h4>
-
-<p>The functions listed in the table below are call-back functions used by the Vendor RIL to invoke unsolicited commands on the Android platform. See <code>ril.h</code> for details. </p>
-<p>
-<table>
-  <tr>
-    <th scope="col">Name</th>
-    <th scope="col">Description</th>
-  </tr>
-  <tr>
-    <td><code>void RIL_onUnsolicitedResponse(int unsolResponse, const void *data, size_t datalen);</code></td>
-    <td><ul>
-      <li><code>unsolResponse</code> is one of <code>RIL_UNSOL_RESPONSE_*</code></li>
-      <li><code>data</code> is pointer to data defined for that <code>RIL_UNSOL_RESPONSE_*</code></li>
-      <li><code>data</code> is owned by caller, and should not be modified or freed by callee</li>
-    </ul></td>
-  </tr>
-</table></p>
diff --git a/pdk/docs/guide/wifi.jd b/pdk/docs/guide/wifi.jd
deleted file mode 100755
index 1e9f527..0000000
--- a/pdk/docs/guide/wifi.jd
+++ /dev/null
@@ -1,51 +0,0 @@
-page.title=Wi-Fi
-pdk.version=1.0
-doc.type=guide
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidWifiBuildingDriver">Building a Wi-Fi Library</a></li>
-<li><a href="#androidWifiInterface">Interface</a></li>
-</ul>
-</div>
-</div>
-
-<p>Android uses wpa_supplicant as the platform interface to the Wi-Fi device. Your Wi-Fi driver must be compatible with the standard wpa_supplicant in addition to extensions added to the supplicant (specifically, the "DRIVER" commands described in <code>wifi.h/wifi_command()</code>).</p>
-
-
-<a name="androidWifiBuildingDriver"></a><h3>Building a Wi-Fi Library</h3>
-
-<p>To create a Wi-Fi driver for Android:</p>
-<p><ul>
-<li>create a shared library that implements the interface defined in <code>include/hardware/wifi.h</code>, which also defines the Wi-Fi supplicant.</li>
-<li>Follow the instructions posted at <a href="http://hostap.epitest.fi/wpa_supplicant/">http://hostap.epitest.fi/wpa_supplicant/</a>.</li>
-<li>Place your driver in <code>libs/hardware/wifi/</code></li>
-<li>Test your driver using the command line <code>wpa_cli</code> utilities.</li>
-</ul>
-
-<p>You can find the default implementation in <code>libs/hardware/wifi/wifi.c</code>. If you need to make changes, create a new source file similar to <code>wifi.c</code>, for example, <code>wifi_mywifi.c</code>. </p>
-
-<p>Update the default <code>Android.mk</code> file (<code>libs/hardware/wifi/Android.mk</code>) as shown below.</p>
-<pre class="prettify">
-LOCAL_SHARED_LIBRARIES += libnetutils
-
-ifeq ($(TARGET_PRODUCT),acme)
-LOCAL_SRC_FILES += wifi/wifi_mywifi.c
-else
-LOCAL_SRC_FILES += wifi/wifi.c
-endif
-</pre>
-
-
-<a name="androidWifiInterface"></a><h3>Interface</h3>
-
-
-
-<p class="note"><strong>Note</strong>: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, <a href="wifi.html">click here</a>.</p>
-
-
-<iframe onLoad="resizeDoxFrameHeight();" src="wifi_8h.html" scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" frameborder="0" style="width:100%;"></iframe>
diff --git a/pdk/docs/licenses/index.jd b/pdk/docs/licenses/index.jd
deleted file mode 100644
index a4f51dc..0000000
--- a/pdk/docs/licenses/index.jd
+++ /dev/null
@@ -1,47 +0,0 @@
-home=true
-doc.type=licenses
-@jd:body
-
-<div id="mainBodyFixed">
-
-<p>
-   The Android Open Source Project uses a few open source initiative approved open source licenses to enable availability
-   of source code and to accept contributions from individuals and corporations.
-</p>
-
-<p>
-   <b>Android Open Source Project license</b>
-</p>
-
-<p>
-   The preferred license for the Android Open Source Project is Apache 2.0. Apache 2.0 is a commercial and open source
-   friendly open source license. The majority of the Android platform is licensed under the Apache 2.0 license. While
-   the project will strive to adhere to the preferred license, there may be exceptions which will be handled on a case-by-case
-   basis. For example, the Linux kernel patches are under the GPLv2 license with system exceptions, which can be found on kernel.org
-</p>
-
-<p>
-   <b>Contributor License Grants</b>
-</p>
-
-<p>
-   All individual contributors of ideas, code, or documentation to the Android Open Source Project will be required to
-   complete, sign, and submit an Individual Contributor License Grant. The grant can be executed online through the code
-   review tool. The agreement clearly defines the terms under which intellectual property has been contributed to the
-   Android Open Source Project.  This license is for your protection as a contributor as well as the protection of the
-   project; it does not change your rights to use your own contributions for any other purpose.
-</p>
-
-<p>
-   For a corporation that has assigned employees to work on the Android Open Source Project, a Corporate Contributor License
-   Grant is available. This version of the Grant allows a corporation to authorize contributions submitted by its designated
-   employees and to grant copyright and patent licenses. Note that a Corporate Contributor License Grant does not remove the
-   need for any developer to sign their own Individual Contributor License Grant as an individual, to cover any of their
-   contributions which are not owned by the corporation signing the Corporate Contributor License Grant.
-</p>
-
-<p>
-   Please note that we based our grants on the ones that the Apache Software Foundation uses, which can be found on its site.
-</p>
-
-</div>
diff --git a/pdk/docs/licenses/licenses_toc.cs b/pdk/docs/licenses/licenses_toc.cs
deleted file mode 100644
index b2fa107..0000000
--- a/pdk/docs/licenses/licenses_toc.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-<script type="text/javascript" language="JavaScript">
-<!--
-function nothing() {}
--->
-</script>
-
-<ul>
-  <li> <h2> Referenced Licenses </h2>
-  <ul>
-    <li><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0 license</a></li>
-    <li><a href="http://www.kernel.org/pub/linux/kernel/COPYING">GPL v2 license</a></li>
-  </ul>
-  </li>
-
-</ul>
-
-<script type="text/javascript">
-<!--
-    buildToggleLists();
-//-->
-</script>
diff --git a/pdk/docs/releases/index.jd b/pdk/docs/releases/index.jd
deleted file mode 100644
index b3b7154..0000000
--- a/pdk/docs/releases/index.jd
+++ /dev/null
@@ -1,7 +0,0 @@
-home=true
-doc.type=releases
-@jd:body
-
-<p>
-  Some release information here
-</p>
diff --git a/pdk/docs/releases/releases_toc.cs b/pdk/docs/releases/releases_toc.cs
deleted file mode 100644
index a1842b5..0000000
--- a/pdk/docs/releases/releases_toc.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-<script type="text/javascript" language="JavaScript">
-<!--
-function nothing() {}
--->
-</script>
-
-<ul>
-  <li> <h2> Android Releases </h2>
-  <ul>
-    <li><a href="xxx">Android 1.0</a></li>
-    <li><a href="xxx">Android 1.1</a></li>
-    <li><a href="xxx">Android 1.5</a></li>
-  </ul>
-  </li>
-
-</ul>
-
-<script type="text/javascript">
-<!--
-    buildToggleLists();
-//-->
-</script>
