page.title=Installing the Eclipse Plugin
adt.zip.version=23.0.6
adt.zip.download=ADT-23.0.6.zip
adt.zip.bytes=103344298
adt.zip.checksum=f64b7e50c84799f41c642218c35f1bbe

@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 class="note"><strong>Note:</strong>
If you have been using Eclipse with ADT, be aware that <a
href="{@docRoot}tools/studio/index.html">Android Studio</a> is now the official IDE
for Android, so you should migrate to Android Studio to receive all the
latest IDE updates. For help moving projects,
see <a href="/sdk/installing/migrate.html">Migrating to Android
Studio</a>.</p>


<p>You should install the ADT plugin
only if you already have an Eclipse installation that you want to continue using.
Your existing Eclipse installation must meet these requirements:</p>
    <ul>
      <li><a href="http://eclipse.org/mobile/">Eclipse</a> 3.7.2 (Indigo) or greater
<p class="note"><strong>Note:</strong> Eclipse 3.6 (Helios) is no longer
supported with the latest version of ADT.</p></li>
      <li>Eclipse <a href="http://www.eclipse.org/jdt">JDT</a> plugin (included
in most Eclipse IDE packages) </li>
      <li><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">JDK 6</a>
        (JRE alone is not sufficient)</li>
      <li><strong>Not</strong> compatible with GNU Compiler for Java (gcj)</li>
    </ul>


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

<p>To add the ADT plugin to Eclipse:</p>
<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>
      <p class="note"><strong>Note:</strong> The Android Developer Tools update site requires
      a secure connection. Make sure the update site URL you enter starts with HTTPS.</p>
    </li>
    <li>Click <strong>OK</strong>.</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 ADT Installation</h2>

<p>If you are having trouble downloading the ADT plugin after following the
steps above and 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>.
</p>

<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="https://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 installation 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>

