page.title=Installing the Eclipse Plugin
adt.zip.version=21.0.0
adt.zip.download=ADT-21.0.0.zip
adt.zip.bytes=13556487
adt.zip.checksum=7db4eaae5df6a34fd853317a2bd8250b

@jd:body



<p>Android offers a custom plugin for the Eclipse IDE, called Android
Development Tools (ADT). This plugin provides a powerful, integrated
environment in which to develop Android apps. It extends the capabilities
of Eclipse to let you quickly set up new Android projects, build an app
UI, debug your app, and export signed (or unsigned) app packages (APKs) for distribution.
</p>

<p>If you need to install Eclipse, you can download it from <a href=
"http://eclipse.org/mobile/">eclipse.org/mobile</a>.</p>


<p class="note"><strong>Note:</strong> 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.</p>



<h2 id="Download">Download the ADT Plugin</h2>


<ol>
    <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Install New
Software</strong>.</li>
    <li>Click <strong>Add</strong>, in the top-right corner.</li>
    <li>In the Add Repository dialog that appears, enter "ADT Plugin" for the <em>Name</em> and the
following URL for the <em>Location</em>:
      <pre>https://dl-ssl.google.com/android/eclipse/</pre>
    </li>
    <li>Click <strong>OK</strong>.
      <p>If you have trouble acquiring the plugin, try using "http" in the Location URL,
instead of "https" (https is preferred for security reasons).</p></li>
    <li>In the Available Software dialog, select the checkbox next to Developer Tools and click
<strong>Next</strong>.</li>
    <li>In the next window, you'll see a list of the tools to be downloaded. Click
<strong>Next</strong>. </li>
    <li>Read and accept the license agreements, then click <strong>Finish</strong>.
      <p>If you get a security warning saying that the authenticity or validity of
the software can't be established, click <strong>OK</strong>.</p></li>
    <li>When the installation completes, restart Eclipse. </li>
</ol>




<h2 id="Configure">Configure the ADT Plugin</h2>

<p>Once Eclipse restarts, you
  must specify the location of your Android SDK directory:</p>

<ol>
    <li>In the "Welcome to Android Development" window that appears, select <strong>Use
existing SDKs</strong>.</li>
    <li>Browse and select the location of the Android SDK directory you recently
downloaded and unpacked.</li>
    <li>Click <strong>Next</strong>.</li>
</ol>

<p>Your Eclipse IDE is now set up to develop Android apps, but you need to add
the latest SDK platform tools and an Android platform to your environment.
To get these packages for your SDK, continue to
<a href="{@docRoot}sdk/installing/adding-packages.html">Adding Platforms and Packages</a>.</p>






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

<p> If you are having trouble downloading the ADT plugin after following the
steps above, here are some suggestions: </p>

<ul>
  <li>If Eclipse can not find the remote update site containing the ADT plugin,
try changing the remote site URL to use http, rather than https. That is, set
the Location for the remote site to:
<pre>http://dl-ssl.google.com/android/eclipse/</pre></li>
<li>If you are behind a firewall (such as a corporate firewall), make sure that
you have properly configured your proxy settings in Eclipse. In Eclipse,
you can configure proxy information from the main Eclipse menu in
<strong>Window</strong> (on Mac OS X, <strong>Eclipse</strong>) &gt;
<strong>Preferences</strong> &gt; <strong>General</strong> &gt; <strong>Network
Connections</strong>.</li>
</ul>

<p> If you are still unable to use Eclipse to download the ADT plugin as a
remote update site, you can download the ADT zip file to your local machine and
manually install it:</p>

<ol>
  <li>Download the ADT Plugin zip file (do not unpack it):

  <table class="download">
    <tr>
      <th>Package</th>
      <th>Size</th>
      <th>MD5 Checksum</th>
  </tr>
  <tr>
    <td>
      <a href="http://dl.google.com/android/{@adtZipDownload}">{@adtZipDownload}</a>
    </td>
    <td>{@adtZipBytes} bytes</td>
    <td>{@adtZipChecksum}</td>
  </tr>
</table>
</li>

</li>
  <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Install New
Software</strong>.</li>
  <li>Click <strong>Add</strong>, in the top-right corner.</li>
  <li>In the Add Repository dialog, click <strong>Archive</strong>.</li>
  <li>Select the downloaded {@adtZipDownload} file and click <strong>OK</strong>.</li>
  <li>Enter "ADT Plugin" for the name and click <strong>OK</strong>.
  <li>In the Available Software dialog, select the checkbox next to Developer Tools and click
<strong>Next</strong>.</li>
  <li>In the next window, you'll see a list of the tools to be downloaded. Click
<strong>Next</strong>. </li>
  <li>Read and accept the license agreements, then click <strong>Finish</strong>.
    <p>If you get a security warning saying that the authenticity or validity of
the software can't be established, click <strong>OK</strong>.</p></li>
  <li>When the installation completes, restart Eclipse. </li>
</ol>

<p>To update your plugin once you've installed using the zip file, you will have
to follow these steps again instead of the default update instructions.</p>

<h4>Other install errors</h4>

<p>Note that there are features of ADT that require some optional
Eclipse packages (for example, WST). If you encounter an error when
installing ADT, your Eclipse installion might not include these packages.
For information about how to quickly add the necessary packages to your
Eclipse installation, see the troubleshooting topic
<a href="{@docRoot}resources/faq/troubleshooting.html#installeclipsecomponents">ADT
Installation Error: "requires plug-in org.eclipse.wst.sse.ui"</a>.</p>

<h4>For Linux users</h4>
<p>If you encounter this error when installing the ADT Plugin for Eclipse:
<pre>
An error occurred during provisioning.
Cannot connect to keystore.
JKS</pre>
<p>
...then your development machine lacks a suitable Java VM. Installing Sun
Java 6 will resolve this issue and you can then reinstall the ADT
Plugin.</p>

