page.title=Installing the SDK
sdk.preview=0

@jd:body


<script type="text/javascript">
function toggleDiv(link) {
  var toggleable = $(link).parent();
  if (toggleable.hasClass("closed")) {
    //$(".toggleme", toggleable).slideDown("fast");
    toggleable.removeClass("closed");
    toggleable.addClass("open");
    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot +
"assets/images/triangle-opened.png"));
  } else {
    //$(".toggleme", toggleable).slideUp("fast");
    toggleable.removeClass("open");
    toggleable.addClass("closed");
    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot +
"assets/images/triangle-closed.png"));
  }
  return false;
}
</script>
<style>
.toggleable {
  padding: .25em 1em 0em 1em;
  margin-bottom: 0;
}
.toggleme {
  padding: 1em 1em 0 2em;
  line-height:1em;
}
.toggleable a {
  text-decoration:none;
}
.toggleme a {
  text-decoration:underline;
}
.toggleable.closed .toggleme {
  display:none;
}
#jd-content .toggle-img {
  margin:0;
}
</style>

<div id="qv-wrapper">
<div id="qv">

  <h2>In this document</h2>
  <ol>
    <li><a href="#Preparing">1. Preparing Your Development Computer</a></li>
    <li><a href="#Installing">2. Downloading the SDK Starter Package</a></li>
    <li><a href="#InstallingADT">3. Installing the ADT Plugin for Eclipse</a></li>
    <li><a href="#AddingComponents">4. Adding Platforms and Other Components</a>
      <ol>
        <li><a href="#components">Available Components</a></li>
        <li><a href="#which">Recommended Components</a></li>
      </ol></li>
    <li><a href="#sdkContents">5. Exploring the SDK (Optional)</a></li>
    <li><a href="#NextSteps">Next Steps</a></li>
    <li><a href="#troubleshooting">Troubleshooting</a></li>
  </ol>

<h2>See also</h2>
  <ol>
    <li><a href="{@docRoot}sdk/eclipse-adt.html">ADT Plugin for Eclipse</a></li>
    <li><a href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a></li>
  </ol>

</div>
</div>

<p>This page describes how to install the Android SDK
and set up your development environment for the first time.</p>

<p>If you encounter any problems during installation, see the
<a href="#troubleshooting">Troubleshooting</a> section at the bottom of
this page.</p>

<h4>Updating?</h4>

<p>If you already have an Android SDK, use the <em>Android SDK and AVD Manager</em> tool to install
updated tools and new Android platforms into your existing environment. For information about how to
do that, see <a href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a></p>


<h2 id="Preparing">Step 1. Preparing Your Development Computer</h2>

<p>Before getting started with the Android SDK, take a moment to confirm that
your development computer meets the <a href="requirements.html">System
Requirements</a>. In particular, you might need to install the <a
href="http://java.sun.com/javase/downloads/index.jsp">JDK</a>, if you don't have it already. </p>

<p>If you will be developing in Eclipse with the Android Development
Tools (ADT) Plugin&mdash;the recommended path if you are new to
Android&mdash;make sure that you have a suitable version of Eclipse
installed on your computer (3.4 or newer is recommended). If you need
to install Eclipse, you can download it from this location: </p>

<p style="margin-left:2em;"><a href=
"http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a></p>

<p>For Eclipse 3.5 or newer, the "Eclipse Classic" version is recommended. Otherwise, a Java or
RCP version of Eclipse is recommended.</p>


<h2 id="Installing">Step 2. Downloading the SDK Starter Package</h2>

<p>The SDK starter package is not a full
development environment&mdash;it includes only the core SDK Tools, which you can
use to download the rest of the SDK components (such as the latest Android platform).</p>

<p>If you haven't already, get the latest version of the SDK starter package from the <a
href="{@docRoot}sdk/index.html">SDK download page</a>.</p>

<p>If you downloaded a {@code .zip} or {@code .tgz} package (instead of the SDK installer), unpack
it to a safe location on your machine. By default, the SDK files are unpacked
into a directory named <code>android-sdk-&lt;machine-platform&gt;</code>.</p>

<p>If you downloaded the Windows installer ({@code .exe} file), run it now and it will check
whether the proper Java SE Development Kit (JDK) is installed (installing it, if necessary), then
install the SDK Tools into a default location (which you can modify).</p>

<p>Make a note of the name and location of the SDK directory on your system&mdash;you will need to
refer to the SDK directory later, when setting up the ADT plugin and when using
the SDK tools from command line.</p>


<h2 id="InstallingADT">Step 3. Installing the ADT Plugin for Eclipse</h2>

<p>Android offers a custom plugin for the Eclipse IDE, called Android
Development Tools (ADT), that is designed to give you a powerful, integrated
environment in which to build Android applications. It extends the capabilites
of Eclipse to let you quickly set up new Android projects, create an application
UI, debug your applications
using the Android SDK tools, and even export signed (or unsigned) APKs in order
to distribute your application. In general, developing in Eclipse with ADT is a
highly recommended approach and is the fastest way to get started with Android.
</p>

<p>If you'd like to use ADT for developing Android applications, install it now.
Read <a href="{@docRoot}sdk/eclipse-adt.html#installing">Installing the ADT Plugin</a> for
step-by-step installation instructions, then return here to continue the
last step in setting up your Android SDK.</p>

<p>If you prefer to work in a different IDE, you do not need to
install Eclipse or ADT, instead, you can directly use the SDK tools to build and
debug your application. The developer guide has more information about <a
href="{@docRoot}guide/developing/other-ide.html">Developing in Other IDEs</a>.</p>



<h2 id="AddingComponents">Step 4. Adding Platforms and Other Components</h2>

<p>The last step in setting up your SDK is using the <em>Android SDK and AVD Manager</em> (a
tool included in the SDK starter package) to download
essential SDK components into your development environment.</p>

<p>The SDK uses a modular structure that separates the major parts of the SDK&mdash;Android platform
versions, add-ons, tools, samples, and documentation&mdash;into a set of separately installable
components. The SDK starter package, which you've already downloaded, includes only a single
component: the latest version of the SDK Tools. To develop an Android
application, you also need to download at least one Android platform and the SDK Platform-tools
(tools that the latest platform depend upon). However, downloading
additional components is highly recommended.</p>

<p>If you used the Windows installer, when you complete the installation wizard, it will launch the
Android SDK and AVD Manager with a default set of platforms and other components selected
for you to install. Simply click <strong>Install</strong> to accept the recommended set of
components and install them. You can then skip to <a href="#sdkContents">Step 5</a>, but we
recommend you first read the section about the <a href="#components">Available Components</a> to
better understand the components available from the Android SDK and AVD Manager.</p>

<p>You can launch the Android SDK and AVD Manager in one of the following ways:</p>
<ul>
  <li>From within Eclipse, select <strong>Window &gt; Android SDK and AVD Manager</strong>.</li>
  <li>On Windows, double-click the <code>SDK Manager.ext</code> file at the root of the Android
SDK directory.</li>
  <li>On Mac or Linux, open a terminal and navigate to the <code>tools/</code> directory in the
Android SDK, then execute: <pre>android</pre> </li>
</ul>

<p>To download components, use the graphical UI of the Android SDK and AVD
Manager, shown in Figure 1, to browse the SDK repository and select new or updated
components. The Android SDK and AVD Manager will install the selected components in
your SDK environment. For information about which components you should download, see the following
section about <a href="#which">Recommended Components</a>.</p>

<img src="/images/sdk_manager_packages.png" />
<p class="img-caption"><strong>Figure 1.</strong> The Android SDK and AVD Manager's
<strong>Available Packages</strong> panel, which shows the SDK components that are
available for you to download into your environment.</p>


<h3 id="components">Available Components</h3>

<p>By default, there are two repositories of components for your SDK: <em>Android
Repository</em> and <em>Third party Add-ons</em>.</p>

<p>The <em>Android Repository</em> offers these types of components:</p>

<ul>
<li><strong>SDK Tools</strong> (pre-installed in the Android SDK starter
package) &mdash; Contains tools for debugging
and testing your application and other utility tools. You can access these
in the <code>&lt;sdk&gt;/tools/</code> directory of your SDK and read more about them in the <a
href="{@docRoot}guide/developing/tools/index.html">Tools</a> section of the developer guide. </li>

<li><strong>SDK Platform-tools</strong> &mdash; Contains tools that are required to develop and
debug your application, but which are developed alongside the Android platform in order to support
the latest features. These tools are typically updated only when a new platform becomes
available. You can access these
in the <code>&lt;sdk&gt;/platform-tools/</code> directory. Read more about them in
the <a href="{@docRoot}guide/developing/tools/index.html">Tools</a> section of the developer guide.
</li>

<li><strong>Android platforms</strong> &mdash; An SDK platform is
available for every production Android platform deployable to Android-powered
devices. Each platform component includes a fully compliant Android library and
system image, sample code, emulator skins, and any version specific tools. For
detailed information about each platform, see the overview documents available
under the section "Downloadable SDK Components," at left. </li>

<li><strong>USB Driver for Windows</strong> (Windows only) &mdash; Contains driver files
that you can install on your Windows computer, so that you can run and debug
your applications on an actual device. You <em>do not</em> need the USB driver unless
you plan to debug your application on an actual Android-powered device. If you
develop on Mac OS X or Linux, you do not need a special driver to debug
your application on an Android-powered device. (See <a
href="{@docRoot}guide/developing/device.html">Developing on a Device</a> for more information
about developing on a real device.)</li>

<li><strong>Samples</strong> &mdash; Contains the sample code and apps available
for each Android development platform. If you are just getting started with
Android development, make sure to download the samples to your SDK. <!--The download
includes not only a set of very useful sample apps, but also the source for <a
href="{@docRoot}resources/tutorials/hello-world.html">Hello World</a> and other
tutorials. --></li>

<li><strong>Documentation</strong> &mdash; Contains a local copy of the latest
multiversion documentation for the Android framework API. </li>
</ul>

<p>The <em>Third party Add-ons</em> provide components that allow you to create a development
environment using a specific Android external library (such as the Google Maps library) or a
customized (but fully compliant) Android system image. You can add additional Add-on repositories,
by clicking <strong>Add Add-on Site</strong>.</p>


<h3 id="which">Recommended Components</h3>

<p>The SDK repository contains a range of components that you can download.
Use the table below to determine which components you need, based on whether you
want to set up a basic, recommended, or full development environment:
</p>

<table style="width:95%">

<tr>
<th>Environment</th>
<th>SDK&nbsp;Component</th>
<th>Comments</th>
</tr>

<tr>
<td rowspan="3" style="font-size:.9em;background-color:#FFE;">Basic</td>
<td style="font-size:.9em;background-color:#FFE;">SDK Tools</td>
<td style="font-size:.9em;background-color:#FFE;">If you've just installed
the SDK starter package, then you already have the latest version of this component. The
SDK Tools component is required to develop an Android application. Make sure you keep this up to
date.</td>
</tr>

<tr>
<td style="font-size:.9em;background-color:#FFE;">SDK Platform-tools</td>
<td style="font-size:.9em;background-color:#FFE;">This includes more tools that are required
for application development. These tools are platform-dependent and typically update only when
a new SDK platform is made available, in order to support new features in the platform. These
tools are always backward compatible with older platforms, but you must be sure that you have
the latest version of these tools when you install a new SDK platform.</td>
</tr>

<tr>
<td style="font-size:.9em;background-color:#FFE;">SDK platform</td>
<td style="font-size:.9em;background-color:#FFE;">You need to download <strong
style="color:red">at least one platform</strong> into your environment, so that
you will be able to compile your application and set up an Android Virtual
Device (AVD) to run it on (in the emulator). To start with, just download the
latest version of the platform. Later, if you plan to publish your application,
you will want to download other platforms as well, so that you can test your
application on the full range of Android platform versions that your application supports.</td>
</tr>
<tr>
<td colspan="2"
style="border:none;text-align:center;font-size:1.5em;font-weight:bold;">+</td><td
style="border:none"></td>
</tr>
<tr>
<td rowspan="3">Recommended<br/>(plus Basic)</td>
<td>Documentation</td>
<td>The Documentation component is useful because it lets you work offline and
also look up API reference information from inside Eclipse.</td>
</tr>

<tr>
<td>Samples</td>
<td>The Samples components give you source code that you can use to learn about
Android, load as a project and run, or reuse in your own app. Note that multiple
samples components are available &mdash; one for each Android platform version. When
you are choosing a samples component to download, select the one whose API Level
matches the API Level of the Android platform that you plan to use.</td>
</tr>
<tr>
<td>Usb Driver</td>
<td>The Usb Driver component is needed only if you are developing on Windows and
have an Android-powered device on which you want to install your application for
debugging and testing. For Mac OS X and Linux platforms, no
special driver is needed.</td>
</tr>
<tr>
<td colspan="2"
style="border:none;text-align:center;font-size:1.5em;font-weight:bold;">+</td><td
style="border:none"></td>
</tr>
<tr>
<td rowspan="3">Full<br/>(plus Recommended)</td>
<td>Google APIs</td>
<td>The Google APIs add-on gives your application access to the Maps external
library, which makes it easy to display and manipulate Maps data in your
application. </td>
</tr>
<tr>
<td>Additional SDK Platforms</td>
<td>If you plan to publish your application, you will want to download
additional platforms corresponding to the Android platform versions on which you
want the application to run. The recommended approach is to compile your
application against the lowest version you want to support, but test it against
higher versions that you intend the application to run on. You can test your
applications on different platforms by running in an Android Virtual Device
(AVD) on the Android emulator.</td>
</tr>

</table>

<p>Once you've installed at least the basic configuration of SDK components, you're ready to start
developing Android apps. The next section describes the contents of the Android SDK to familiarize
you with the components you've just installed.</p>

<p>For more information about using the Android SDK and AVD Manager, see the <a
href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a> document. </p>


<h2 id="sdkContents">Step 5. Exploring the SDK (Optional)</h2>

<p>Once you've installed the SDK and downloaded the platforms, documentation,
and add-ons that you need, we suggest that you open the SDK directory and take a look at what's
inside.</p>

<p>The table below describes the full SDK directory contents, with components
installed. </p>

<table>
<tr>
<th colspan="3">Name</th><th>Description</th>
</tr>
<tr>
<td colspan="3"><code>add-ons/</code></td>
<td>Contains add-ons to the Android SDK development
environment, which let you develop against external libraries that are available on some
devices. </td>
</tr>
<tr>
<td colspan="3"><code>docs/</code></td>
<td>A full set of documentation in HTML format, including the Developer's Guide,
API Reference, and other information. To read the documentation, load the
file <code>offline.html</code> in a web browser.</td>
</tr>
<tr>
<td colspan="3"><code>platform-tools/</code></td>
<td>Contains development tools that may be updated with each platform release (from the <em>Android
SDK Platform-tools</em> component). Tools in here include {@code adb}, {@code dexdump}, and others
others that you don't typically use directly. These tools are separate from the generic development
tools in the {@code tools/} directory, because these tools may be updated in order to support new
features in the latest Android platform, whereas the other tools have no dependencies on the
platform version.</td>
</tr>
<tr>
<td colspan="3"><code>platforms/</code></td>
<td>Contains a set of Android platform versions that you can develop
applications against, each in a separate directory.  </td>
</tr>
<tr>
<td style="width:2em;border-bottom-color:white;"></td>
<td colspan="2"><code><em>&lt;platform&gt;</em>/</code></td>
<td>Platform version directory, for example "android-1.6". All platform version
directories contain a similar set of files and subdirectory structure.</td>
</tr>

<tr>
<td style="width:2em;border-bottom-color:white;">&nbsp;</td>
<td style="width:2em;border-bottom-color:white;"></td>
<td><code>data/</code></td>
<td>Storage area for default fonts and resource definitions.</td>
</tr>
<tr>
<td style="width:2em;border-bottom-color:white;"></td>
<td style="width:2em;border-bottom-color:white;"></td>
<td><code>images/</code></td>
<td>Storage area for default disk images, including the Android system image,
the default userdata image, the default ramdisk image, and more. The images
are used in emulator sessions.</td>
</tr>
<tr>
<td style="width:2em;border-bottom-color:white;"></td>
<td style="width:2em;border-bottom-color:white;"></td>
<td><code>skins/</code></td>
<td>A set of emulator skins available for the platform version. Each skin is
designed for a specific screen resolution.</td>
</tr>
<tr>
<td style="width:2em;border-bottom-color:white;"></td>
<td style="width:2em;border-bottom-color:white;"></td>
<td><code>templates/</code></td>
<td>Storage area for file templates used by the SDK development tools.</td>
</tr>
<tr>
<td style="width:2em;border-bottom-color:white;"></td>
<td style="width:2em;border-bottom-color:white;"></td>
<td><code>tools/</code></td>
<td>This directory is used only by SDK Tools r7 and below for development tools that are specific to
this platform version&mdash;it's not used by SDK Tools r8 and above.</td>
</tr>
<tr>
<td style="width:2em;"></td>
<td style="width:2em;"></td>
<td><code>android.jar</code></td>
<td>The Android library used when compiling applications against this platform
version.</td>
</tr>
<tr>
<td colspan="3"><code>samples/</code></td>
<td>Sample code and apps that are specific to platform version.</td>
</tr>
<td colspan="3"><code>tools/</code></td>
<td>Contains the set of development and profiling tools that are platform-independent, such
as the emulator, the AVD and SDK Manager, ddms, hierarchyviewer and more. The tools in
this directory may be updated at any time (from the <em>Android SDK Tools</em> component),
independent of platform releases, whereas the tools in {@code platform-tools/} may be updated based
on the latest platform release.</td>
</tr>
<tr>
<td colspan="3"><code>SDK Readme.txt</code></td>
<td>A file that explains how to perform the initial setup of your SDK,
including how to launch the Android SDK and AVD Manager tool on all
platforms</td>
</tr>
<tr>
<td colspan="3"><code>SDK Manager.exe</code></td>
<td>Windows SDK only. A shortcut that launches the Android SDK and AVD
Manager tool, which you use to add components to your SDK. </td>
</tr>
<!--<tr>
<td colspan="3"><code>documentation.html</code></td>
<td>A file that loads the entry page for the local Android SDK
documentation.</td>
</tr>-->

</table>


<p>Optionally, you might want to add the location of the SDK's <code>tools/</code> and
<code>platform-tools</code> to your <code>PATH</code> environment variable, to provide easy
access to the tools.</p>


<div class="toggleable closed">
  <a href="#" onclick="return toggleDiv(this)">
        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px"
width="9px" />
        How to update your PATH</a>
  <div class="toggleme">

<p>Adding both <code>tools/</code> and <code>platform-tools/</code> to your PATH lets you run
command line <a href="{@docRoot}guide/developing/tools/index.html">tools</a> without needing to
supply the full path to the tool directories. Depending on your operating system, you can
include these directories in your PATH in the following way:</p>

<ul>

  <li>On Windows, right-click on My Computer, and select Properties.
  Under the Advanced tab, hit the Environment Variables button, and in the
  dialog that comes up, double-click on Path (under System Variables). Add the full path to the
  <code>tools/</code> and <code>platform-tools/</code> directories to the path. </li>

  <li>On Linux, edit your <code>~/.bash_profile</code> or <code>~/.bashrc</code> file. Look
  for a line that sets the PATH environment variable and add the
  full path to the <code>tools/</code> and <code>platform-tools</code> directories to it. If you
  don't see a line setting the path, you can add one:
  <pre>export PATH=${PATH}:&lt;sdk&gt;/tools:&lt;sdk&gt;/platform-tools</pre>
  </li>

  <li>On a Mac OS X, look in your home directory for <code>.bash_profile</code> and
  proceed as for Linux. You can create the <code>.bash_profile</code> if
  you don't already have one. </li>
</ul>

</div><!-- end toggleme -->
</div><!-- end toggleable -->


<h2 id="NextSteps">Next Steps</h2>
<p>Once you have completed installation, you are ready to
begin developing applications. Here are a few ways you can get started: </p>

<p><strong>Set up the Hello World application</strong></p>
<ul>
  <li>If you have just installed the SDK for the first time, go to the <a
  href="{@docRoot}resources/tutorials/hello-world.html">Hello
  World tutorial</a>. The tutorial takes you step-by-step through the process
  of setting up your first Android project, including setting up an Android
  Virtual Device (AVD) on which to run the application.
</li>
</ul>

<p class="note">Following the Hello World tutorial is an essential
first step in getting started with Android development. </p>

<p><strong>Learn about Android</strong></p>
<ul>
  <li>Take a look at the <a href="{@docRoot}guide/index.html">Dev
  Guide</a> and the types of information it provides</li>
  <li>Read an introduction to Android as a platform in <a
  href="{@docRoot}guide/basics/what-is-android.html">What is
  Android?</a></li>
  <li>Learn about the Android framework and how applications run on it in
  <a href="{@docRoot}guide/topics/fundamentals.html">Application
  Fundamentals</a></li>
  <li>Take a look at the Android framework API specification in the <a
  href="{@docRoot}reference/packages.html">Reference</a> tab</li>
</ul>

<p><strong>Explore the development tools</strong></p>
<ul>
  <li>Get an overview of the <a
  href="{@docRoot}guide/developing/tools/index.html">development
  tools</a> that are available to you</li>
  <li>Read how to develop <a
  href="{@docRoot}guide/developing/eclipse-adt.html">in Eclipse/ADT</a> or
  <a href="{@docRoot}guide/developing/other-ide.html">in other IDEs</a>
  </li>
  <li>Read <a href="{@docRoot}guide/developing/device.html">Developing on a Device</a> to set up an
Android-powered device to run and test your application.</li>
</ul>

<p><strong>Follow the Notepad tutorial</strong></p>

<ul>
  <li>The <a href="{@docRoot}resources/tutorials/notepad/index.html">
  Notepad Tutorial</a> shows you how to build a full Android application
  and provides  helpful commentary on the Android system and API. The
  Notepad tutorial helps you bring together the important design
  and architectural concepts in a moderately complex application.
  </li>
</ul>
<p class="note">Following the Notepad tutorial is an excellent
second step in getting started with Android development. </p>

<p><strong>Explore some code</strong></p>

<ul>
  <li>The Android SDK includes sample code and applications for each platform
version. You can browse the samples in the <a
href="{@docRoot}resources/index.html">Resources</a> tab or download them
into your SDK using the Android SDK and AVD Manager. Once you've downloaded the
samples, you'll find them in
<code><em>&lt;sdk&gt;</em>/samples/<em>&lt;platform&gt;/</em></code>. </li>
</ul>

<p><strong>Visit the Android developer groups</strong></p>
<ul>
  <li>Take a look at the <a
  href="{@docRoot}resources/community-groups.html">Community</a> pages to see a list of
  Android developers groups. In particular, you might want to look at the
  <a href="http://groups.google.com/group/android-developers">Android
  Developers</a> group to get a sense for what the Android developer
  community is like.</li>
</ul>

<h2 id="troubleshooting">Troubleshooting</h2>

<h3>Ubuntu Linux Notes</h3>

<ul>
  <li>If you need help installing and configuring Java on your
    development machine, you might find these resources helpful:
    <ul>
      <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/Java </a></li>
      <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/JavaInstallation</a></li>
    </ul>
  </li>
  <li>Here are the steps to install Java and Eclipse, prior to installing
  the Android SDK and ADT Plugin.
    <ol>
      <li>If you are running a 64-bit distribution on your development
      machine, you need to install the <code>ia32-libs</code> package using
      <code>apt-get:</code>:
      <pre>apt-get install ia32-libs</pre>
      </li>
      <li>Next, install Java: <pre>apt-get install sun-java6-jdk</pre></li>
      <li>The Ubuntu package manager does not currently offer an Eclipse 3.3
      version for download, so we recommend that you download Eclipse from
      eclipse.org (<a
      href="http://www.eclipse.org/downloads/">http://www.eclipse.org/
      downloads/</a>). A Java or RCP version of Eclipse is recommended.</li>
      <li>Follow the steps given in previous sections to install the SDK
      and the ADT plugin. </li>
    </ol>
  </li>
</ul>

<h3>Other Linux Notes</h3>

<ul>
  <li>If JDK is already installed on your development computer, please
  take a moment to make sure that it meets the version requirements listed
  in the <a href="requirements.html">System Requirements</a>.
  In particular, note that some Linux distributions may include JDK 1.4 or Gnu
  Compiler for Java, both of which are not supported for Android development.</li>
</ul>
