page.title=SDK Release Notes
excludeFromSuggestions=true
@jd:body

<p>This document provides version-specific information about Android SDK
releases. <!--For the latest known issues, please ensure that you're viewing this
page at <a
href="http://developer.android.com/sdk/RELEASENOTES.html">http://developer.
android.com/sdk/RELEASENOTES.html</a>.--></p>

<h2 id="multiversion_r1">Android SDK</h2>

<p>The Android SDK has changed! If you've worked with the Android SDK before,
you will notice several important differences:</p>

<ul>
<li style="margin-top:.5em">The SDK downloadable package includes <em>only</em>
the latest version of the Android SDK Tools.</li>
<li>Once you've installed the SDK, you now use the Android SDK and AVD Manager
to download all of the SDK components that you need, such as Android platforms,
SDK add-ons, tools, and documentation. </li>
<li>The new approach is modular &mdash; you can install only the components you
need and update any or all components without affecting your development
environment.</li>
<li>In short, once you've installed the new SDK, you will not need to download
an SDK package again. Instead, you will use the Android SDK and AVD Manager to
keep your development environment up-to-date. </li>
</ul>

<p>Note that if you are currently using the Android 1.6 SDK, you do not
necessarily need to install the new SDK, since your existing SDK already
includes the Android SDK and AVD Manager tool. To develop against Android 2.0.1,
for example, you could just download the Android 2.0.1 platform into your existing
SDK. </p>

<p>Release notes for Android platforms and other SDK components are
now available from the "SDK" tab, under "Downloadable SDK Components."</p>

<ul>
<li>Notes for the Android 2.0.1 platform are in the <a
href="{@docRoot}about/versions/android-2.0.1.html">Android 2.0.1, Release 1</a> document. </li>
<li>You can find information about tools changes in the <a
href="{@docRoot}tools/sdk/tools-notes.html#notes">SDK Tools</a> and <a
href="{@docRoot}tools/sdk/eclipse-adt.html#notes">ADT Plugin for Eclipse</a>.</li>
</ul>

<p>To get started with the SDK, review the Quick Start summary on the <a
href="{@docRoot}studio/index.html">Android SDK download page</a> or read <a
href="{@docRoot}studio/install.html">Installing the SDK</a> for detailed
installation instructions. </p>


<h2 id="1.6_r1">Android 1.6 SDK, Release 1</h2>

<p>This SDK provides updates to the development tools and Android system that
you use to create applications for compliant Android-powered devices. </p>

<h3>Release Overview</h3>

<p>This SDK release includes several new features for developers. Highlights of the
changes include: </p>

  <ul>
    <li>Emulator support for multiple screen sizes/densities, including new
skins. </li>
    <li>Android SDK and AVD Manager, a graphical UI to let you manage your
SDK and AVD environments more easily. The tool lets you create and manage
your <a href="{@docRoot}tools/devices/managing-avds.html">Android Virtual
Devices</a> and download new SDK packages (such as platform versions and
add-ons) into your environment.</li>
    <li>Improved support for test packages in New Project Wizard</li>
    <li>The reference documentation now offers a "Filter by API Level"
capability that lets you display only the parts of the API that are actually
available to your application, based on the <code>android:minSdkVersion</code>
value the application declares in its manifest. For more information, see
<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Android API Levels</a></li>
  </ul>

<p>For details about the Android platforms included in the SDK &mdash; including
bug fixes, features, and API changes &mdash; please read the <a
href="android-1.6.html">Android 1.6 version notes</a>.</p>

<h3>Installation and Upgrade Notes</h3>

<p>If you've been developing an application using an Android 1.1 SDK, you need
to make a few changes to your development environment to migrate to the new SDK.
Tools and documentation are provided to assist you. No changes to the source
code of an existing application should be needed, provided that your application
is not using Android internal structures or APIs.</p>

<p>To ensure that your existing application will work properly on a device
running the latest version of the Android platform, you are strongly encouraged
to migrate the application to the new SDK, compile it using the platform
matching the application's original API Level, and run it against the most
current platform. </p>

<h3>ADT Plugin for Eclipse</h3>

<p>An updated version of the ADT Plugin for Eclipse is available with the
Android 1.6 SDK. The new version, ADT 0.9.3, provides several new
features, including integrated support for the Android SDK and AVD Manager
and zipalign tool. In addition, the New Project Wizard now
lets you create a test package containing tests for your application. These
features are described in the sections below. </p>

<p>If you are developing in Eclipse with ADT and want to get started with the
Android 1.6 SDK, you should download and install a compatible version of the ADT
Plugin (0.9.3 or higher). </p>

<p>The new version of ADT is downloadable from the usual remote update site or
is separately downloadable as a .zip archive. For instructions on how to
download the plugin, please see <a
href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin for Eclipse</a>. </p>

<h3>Android SDK and AVD Manager</h3>

<p>The SDK offers a new tool called Android SDK and AVD Manager that lets you
manage your SDK and AVD environments more efficiently. </p>

<p>Using the tool, you can quickly check what Android platforms, add-ons,
extras, and documentation packages are available in your SDK environment, what
their versions are, and whether updated versions are available. You can then
download one or more items from remote repositories and install them directly in
your SDK environment. For example, the tool lets you obtain updates to SDK tools
incrementally, as they are made available, without having to wait for the next
SDK release. You can also download Android platform versions into your
environment that were not included in the SDK package.</p>

<p>The tool also lets you quickly create new AVDs, manage
their properties, and run a target AVD from a single window. </p>

<p>If you are developing in Eclipse with ADT, you can access the Android SDK
and AVD Manager from the <strong>Window</strong> menu. </p>

<p>If you are developing in another IDE, you can access the Android SDK and
AVD Manager through the <code>android</code> command-line tool, located in the
&lt;sdk&gt;/tools directory. You can launch the tool with a graphical UI by
using the <code>android</code> command without specifying any options. You can
also simply double-click the android.bat (Windows) or android (OS X/Linux) file.
You can still use <code>android</code> commands to create and manage AVDs,
including AVDs with custom hardware configurations.</p>

<h3>Integration with zipalign</h3>

<p>The Android system offers a performance optimization for installed
application packages whose contained uncompressed files are all aligned on
4-byte boundaries. For these .apks, the system can read the files by mmap'ing
the zip file, rather than by copying all the data out of them. This reduces
the amount of memory used by the application at run time. The SDK includes
a tool called <code>zipalign</code> that you can run against your .apks, to
align them properly and enable them to benefit from this optimization.</p>

<p>The ADT Plugin and the Ant build tools both provide integrated support for
aligning your application packages. After you build an .apk, the SDK tools can
sign and then run <code>zipalign</code> against it. The SDK includes the
standalone version of the <code>zipalign</code> tool, so you can run also run it
manually from the command line if you choose. </p>

<ul>
  <li>If you are developing in Eclipse with ADT, support for
<code>zipalign</code> is integrated into the Export Wizard. When you use the
Wizard to export a signed application package, ADT signs and then automatically
runs <code>zipalign</code> against the exported package. If you use the Wizard
to export an unsigned application package, then it will not zipalign the
package because zipalign must be performed only after the APK has been signed.
You must manually sign and zipalign the package after export. </li>
  <li>If you are developing using Ant and are compiling in release mode, the
build tools will automatically sign and then <code>zipalign</code> the
application package, provided that you have specified the location of a valid
keystore in the build properties file. If you are compiling in debug mode, the
build tools will sign the package with the debug key and then <code>zipalign</code>
it.</li>
  <li>To use <code>zipalign</code> manually, change to the SDK tools directory
and use the command syntax <code>$ zipalign 4 &lt;infile&gt;
&lt;outfile&gt;</code></li>
</ul>

<p>In general, note that you must <code>zipalign</code> an application only
<em>after</em> it has been signed, as signing will disrupt the package
alignment.</p>

<h3>Support for Test Packages in New Project Wizard</h3>

<p>The New Project Wizard available in the ADT 0.9.3 now lets you add a test
package containing Instrumentation or other classes of tests while you are
creating or importing a new Android application project. </p>

<h3>New USB Driver for Windows</h3>

<p>If you are using Windows and want to develop or test your application on an
Android-powered device (such as the T-Mobile G1), you need an appropriate USB
driver.

<p>The Windows version of the Android 1.6 SDK includes a new, WinUSB-based
driver that you can install. The driver is compatible with both 32- and 64-bit
versions of Windows XP and Vista. The driver represents an upgrade from the USB
driver included in previous Android SDKs, although installing the new driver is
not required. </p>

<p>If you installed the USB driver from a previous SDK release and it is working
properly, you do not need to upgrade to the new driver. However, we recommend
upgrading if you have had any problems with the older driver or simply want
to upgrade to the latest version.</p>

<p>For driver installation or
upgrade instructions, see  <a
href="{@docRoot}studio/run/win-usb.html">USB Driver for Windows</a>.</p>
</p>

<h3>Emulator Skins, Android 1.6 Platform</h3>

<p>The Android 1.6 platform included in the SDK provides a new set of emulator
skins, including: </p>

<ul>
  <li>QVGA &mdash; 240 x 320, low density (120 dpi)</li>
  <li>HVGA &mdash; 320 x 480, medium density (160 dpi)</li>
  <li>WVGA800  &mdash; 480 x 800, high density (240 dpi)</li>
  <li>WVGA854  &mdash; 480 x 854, high density (240 dpi)</li>
</ul>

<p>Besides these defaults, You can also create an AVD that overrides the default
density for each skin, to create any combination of resolution/density (WVGA
with medium density, for instance).  To do so, use the <code>android</code> tool
command line to create a new AVD that uses a custom hardware configuration. See
<a href="{@docRoot}tools/devices/managing-avds.html#createavd">Creating an
AVD</a> for more information.</p>

<h3>Other Notes and Resolved Issues</h3>

<ul>
  <li>This SDK release adds support for Eclipse 3.5 (Galileo) and deprecates
support for Eclipse 3.3 (Europa). </li>
  <li>We regret to inform developers that Android 1.6 will not include support
for <a href="http://www.ietf.org/rfc/rfc2549">RFC 2549</a></li>
  <li>The issue preventing adb from recognizing Samsung Galaxy devices (linux SDK
only) has been fixed.</li>
</ul>


<h2 id="1.5_r3">Android 1.5 SDK, Release 3</h2>

<p>Provides an updated Android 1.5 system image that includes permissions
fixes, as described below, and a new application &mdash; an IME for Japanese
text input. Also provides the same set of developer tools included in the
previous SDK, but with bug fixes and several new features.</p>

<h3>Permissions Fixes</h3>

<p>The latest version of the Android platform, deployable to
Android-powered devices, includes fixes to the permissions-checking
in certain areas of the framework. Specifically, the Android system
now properly checks and enforces several existing permissions where it
did not do so in the previous release. Because of these changes in
enforcement, you are strongly encouraged to test your application
against the new Android 1.5 system image included in this SDK, to ensure
that it functions normally. </p>

<p>In particular, if your application uses any of the system areas listed below,
you should add the required permissions to the application's manifest and then
test the areas of your code that depend on the permission-protected services.
Even if you believe your application does not use the permissions-protected
services, you should compile and test your application under the latest platform
version to ensure that users will not encounter problems when using your
application. </p>

<p>The changes to permissions are as follows:</p>

<ul>
<li>When an application requests access to device camera (through
android.hardware.camera), the <code>CAMERA</code> permission check is now
properly enforced. </li>
<li>When an application requests access to device audio capture (through
android.media.MediaRecorder), the <code>RECORD_AUDIO</code> permission check is
now properly enforced.</li>
</ul>

<p>For more information, see the issue described in the oCert advisory
below:</p>

<p style="margin-left: 2em;"><a href="http://www.ocert.org/advisories/ocert-2009-011.html">http://www.ocert.org/advisories/ocert-2009-011.html</a> </p>

<h3>Resolved Issues, Changes</h3>

<ul>
<li>The SDK includes a new version of the Google APIs add-on. The add-on
provides an updated com.google.android.maps external library that fixes compile
errors related to certain classes such as GeoPoint. For information about the
Google APIs add-on and the library it provides, see:

<p style="margin-left:2em;"><a
href="http://code.google.com/android/add-ons/google-apis">http://code.google.com/android/add-ons/google-apis</a> </p></li>

<li>The SDK add-on architecture now lets device manufacturers specify a USB
Vendor ID in their add-ons.
<li>The <code>android</code> tool provides a new command that scans SDK add-ons
for their USB Vendor IDs and makes them available to adb (OS X and Linux
versions of the SDK only). The command is  <code>android update adb</code>. On
Windows versions of the SDK, a custom USB driver is included that supports the
"Google" and "HTC" Vendor IDs, which allow adb to recognize G1 and HTC
Magic devices. For other devices, contact the device manufacturer
to obtain a USB driver, especially if you have an SDK add-on that defines
a new USB Vendor ID.</li>
<li>The telephony, sensor, and geo fix issues in the emulator are now
fixed.</li>
<li>When you use adb to uninstall an upgraded application, the Android system
now properly restores any permissions that had already been granted to the
previous (downgrade) version of the application</li>
</ul>

<h2 id="1.5_r2">Android 1.5 SDK, Release 2</h2>

<p>This SDK release provides the same developer tools as the Android 1.5 SDK,
Release 1, but provides an updated Android 1.5 system image that includes a
security patch for the issue described in the oCert advisory below:</p>

<p style="margin-left:2em;"><a href="http://www.ocert.org/advisories/ocert-2009-006.html">http://www.ocert.org/advisories/ocert-2009-006.html</a></p>

<h2 id="1.5_r1">Android 1.5 SDK, Release 1</h2>

<p>This SDK provides updates to the development tools and Android system that
you use to create applications for compliant Android-powered devices. </p>

<h3>Release Overview</h3>

<p>This SDK release includes many new features for developers. Highlights of the
changes include: </p>

  <ul>
    <li>Multiple versions of the Android platform are included (Android 1.1,
Android 1.5). The tools are updated to let you deploy your application
on any platform in the SDK, which helps you ensure forward-compatibility and,
if applicable, backward-compatibility.</li>
    <li>Introduces <a href="{@docRoot}tools/devices/managing-avds.html">Android
Virtual Devices</a> &mdash; (AVD) configurations of options that you
run in the emulator to better model actual devices. Each AVD gets its
own dedicated storage area, making it much easier to work with multiple emulators
that are running concurrently.</li>
    <li>Support for SDK add-ons, which extend the
Android SDK to give you access to one or more external Android libraries and/or
a customized (but compliant) system image that can run in the emulator. </li>
    <li>The new Eclipse ADT plugin (version 0.9.x) offers new Wizards to let you
create projects targeted for specific Android configurations, generate XML
resources (such as layouts, animations, and menus), generate alternate layouts,
and export and sign your application for publishing.</li>
    <li>Improved JUnit support in ADT</li>
    <li>Easier profiling of performance</li>
    <li>Easier management of localized applications. You can now include or
exclude locale resources when building your APK from a single
Android project.</li>
    <li>A new tool called "android" replaces the activitycreator script.</li>
  </ul>

<p>For details about the Android platforms included in the SDK &mdash; including
bug fixes, features, and API changes &mdash; please read the <a
href="{@docRoot}about/versions/android-1.5.html">Android 1.5 version notes</a>.</p>

<h3>Installation and Upgrade Notes</h3>

<p>If you've been developing an application using an Android 1.1 SDK, you need
to make a few changes to your development environment to migrate to the new SDK.
Tools and documentation are provided to assist you. No changes to the source
code of an existing application should be needed, provided that your application
is not using Android internal structures or APIs.</p>

<p>To ensure that your existing application will work properly on a device
running the latest version of the Android platform, you are strongly encouraged
to migrate the application to the new SDK, compile it using the platform
matching the application's original API Level, and run it against the most
current platform. </p>

<h3>SDK Add-Ons</h3>

<p>This version of the SDK introduces support for SDK add-ons, which extend the
Android SDK to give you access to one or more external Android libraries and/or
a customized (but compliant) system image that can run in the emulator. The
purpose of an SDK add-on is to give you a way to develop applications for a
specific actual device (or family of devices) that extends the APIs available to
Android applications through external libraries or system customizations. </p>

<p>From the perspective of your Android development environment, an SDK add-on
is similar to any of the Android platform targets included in the SDK &mdash; it
includes an external library, a system image, as well as custom emulator skins
and system properties. The add-on differs in that the Android platform it
provides may include customized UI, resources, or behaviors, a different set of
preinstalled applications, or other similar modifications.

<p>The SDK includes a single SDK add-on &mdash; the Google APIs add-on. The
Google APIs add-on gives your application access to the com.google.android.maps
external library that is included on many (if not most) Android-powered devices.
The Google APIs add-on also includes a {@link android.location.Geocoder Geocoder}
backend service implementation. For more information, see the "Maps External
Library" section below. </p>

<h3>Android Virtual Devices (AVDs)</h3>

<p>The SDK now gives you the capability to compile an application against any
one of several system targets, then run it in the emulator on top of any
compatible system image. There are two types of targets:</p>
<ul>
<li>Targets that represent core Android platform versions. </li>
<li>Targets that are SDK add-ons, which typically provide application access to
one or more external libraries and/or a customized (but compliant) system image
that can run in the emulator.
</ul>

<p>A new tool called "android" lets you discover what targets and AVDs are
available to use.</p>

<p>For more information about AVDs, see <a
href="{@docRoot}tools/devices/index.html">Creating and Managing Virtual Devices</a>

<h3>Other Notes</h3>

<p><strong>Maps External Library</strong></p>

<p>In previous versions of the SDK, the com.google.android.maps package was
included in the standard Android library and system image. In the Android 1.5
SDK, that is not the case. The Android 1.5 library and system image do not
include the Maps external library (com.google.android.maps). However, the Maps
external library is available as part of the Google APIs add-on for the Android
SDK, downloadable from this location: </p>

<p style="margin-left:2em;"><a
href="http://code.google.com/android/add-ons/google-apis">http://code.google.com
/android/add-ons/google-apis</a> </p>

<p>For your convenience, the Google APIs add-on is included in the SDK. </p>

<p>For information about how to register for a Maps API Key, see
<a href="http://code.google.com/android/add-ons/google-apis/mapkey.html">
Obtaining a Maps API Key</a>.</p>

<p><strong>USB Drivers for Windows</strong></p>

<p>If you are using Windows and want to develop or test your application on an
Android-powered device (such as the T-Mobile G1), you need an appropriate USB
driver. For your convenience, the Windows version of the Android SDK includes
these USB drivers that you can install, to let you develop on the device:</p>

<ul>
<li>USB driver for 32-bit XP and Vista</li>
<li>USB driver for 64-bit Vista only</li>
</ul>

<p>For driver installation or
upgrade instructions, see  <a
href="{@docRoot}studio/run/win-usb.html">USB Driver for Windows</a>.</p>
</p>

<h3>Resolved Issues, Changes</h3>

<p><strong>Media</strong></p>
<ul>
<li>Updated documentation for {@link android.media.SoundPool
android.media.SoundPool}</li>
<li>{@link android.webkit.WebView} objects no longer automatically save
thumbnails. The {@link android.webkit.WebView#capturePicture() capturePicture()}
method will need to be called manually.</li>
</ul>

<h3>Known Issues</h3>

<p><strong>Sensor problems in Emulator</strong></p>

<ul>
<li>If your application uses the Sensor API and you are running it in the
emulator on the Android 1.5 system image, you may experience problems. Your
application may generate ANR messages or crash when using the sensors. The
problem is being investigated.</li>
</ul>

<p><strong>Other</strong></p>

<ul>
<li>We regret to inform developers that Android 1.5 will not include support for
the Zilog Z80 processor architecture.</li>
</ul>


<h2 id="1.1_r1">Android 1.1 SDK, Release 1</h2>

<p>This SDK provides the development tools and Android system image you need to
create applications for Android-powered devices. Applications developed on this
SDK will be compatible with mobile devices running the Android 1.1 platform.
</p>

<p>This release provides an updated system image (Android 1.1), updated
documentation, and the same set of development tools provided in the Android 1.0
r2 SDK. The updated system image includes bug fixes and some smaller features,
as well as a few minor API changes from the 1.0 version. </p>

<p>For details about the Android 1.1 system image included in the SDK &mdash;
including bug fixes, features, and API changes &mdash; please read the <a
href="{@docRoot}about/versions/android-1.1.html">Android 1.1 version notes</a>.</p>

<h3>App Versioning for Android 1.1</h3>

<p>If you are using this SDK to build an application that is compatible
<em>only</em> with Android-powered devices running the Android 1.1 platform,
please note that you <strong>must</strong> set the the
<code>android:minSdkVersion</code> attribute in the application's manifest to
the API Level of Android 1.1 &mdash; "2".</p>

<p>Specifically, you specify the <code>android:minSdkVersion</code> attribute in
a <code>&lt;uses-sdk&gt;</code> element as a child of
<code>&lt;manifest&gt;</code> in the manifest file. When set, the attribute
looks like this: </p>

<pre><code>&lt;manifest&gt;
  ...
  &lt;uses-sdk android:minSdkVersion="2" /&gt;
  ...
&lt;/manifest&gt;</code>
</pre>

<p>By setting <code>android:minSdkVersion</code> in this way, you ensure that
users will only be able to install your application if their devices are running
the Android 1.1 platform. In turn, this ensures that your application will
function properly on their devices, especially if it uses APIs introduced in
Android 1.1. </p>

<p>If your application uses APIs introduced in Android 1.1 but does not declare
<code>&lt;uses-sdk android:minSdkVersion="2" /&gt;</code>, then it will run properly on
Android 1.1 devices but <em>not</em> on Android 1.0 devices. </p>

<p>If your application does not use any new APIs introduced in Android 1.1, you
can indicate Android 1.0 compatibility by removing <code>android:minSdkVersion</code> or
setting the attribute to "1". However, before publishing your application, you
must make sure to compile your application against the Android 1.0 system image
(available in the Android 1.0 SDK), to ensure that it builds and functions
properly for Android 1.0 devices. You should test the application against system
images corresponding to the API Levels that the application is designed to be
compatible with.</p>

<p>If you are sure your application is not using Android 1.1 APIs and has no
need to use them, you might find it easier to keep working in the Android 1.0
SDK, rather than migrating to the Android 1.1 SDK and having to do additional
testing.</p>


<h3>ADT Plugin Compatibility</h3>

<p>For this version of the SDK &mdash; Android 1.1 SDK, Release 1
&mdash; the compatible version of the Android Development Tools (ADT)
Plugin for Eclipse is <strong>0.8.0</strong>. If you are using a
previous version of ADT, you should update to the latest version for use
with this SDK. For information about how to update your ADT plugin, see
<a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin for Eclipse</a>.</p>

<h3>Installation and Upgrade Notes</h3>

<p>If you've been developing an application using an Android 1.0 SDK no
changes to your application are needed. You may want to wipe application
user data (emulator option <code>-wipe-data</code>) when running your
application on the Android 1.1 emulator for the first time.</p>

<h3>Other Notes</h3>

<p><strong>MapView API Key</strong></p>

<p>com.google.android.maps.MapView is a class that lets you
easily integrate Google Maps into your application. Before you can
access the maps data, you will need to register with the Google Maps
service and receive a Maps API Key, which you then add to your MapView
for authentication to the server.</p>

<p>Developers should note that the registration service for MapView is now
active and Google Maps is actively enforcing the Maps API Key requirement.
For information about how to register for a Maps API Key, see
<a href="http://code.google.com/android/add-ons/google-apis/mapkey.html">
Obtaining a Maps API Key</a>.</p>

<p><strong>USB Drivers for Windows</strong></p>

<p>If you using Windows and want to develop or test your application on an
Android-powered device (such as the T-Mobile G1), you need an appropriate USB
driver. For your convenience, the Windows version of the Android SDK includes
these USB drivers that you can install, to let you develop on the device:</p>

<ul>
<li>USB driver for 32-bit XP and Vista</li>
<li>USB driver for 64-bit Vista only</li>
</ul>

<p>The USB driver files are located in the
<code>&lt;SDK&gt;/usb_driver</code> directory. For details and
installation instructions, see <a
href="{@docRoot}tools/device.html#setting-up">Connecting Hardware Devices</a>.</p>
</p>

<h3>Resolved Issues, Changes</h3>

<p><strong>Emulator</strong></p>
<ul>
<li>Emulator now saves the user image in &lt;android&gt;/SDK1.1/</code></li>
</ul>

<h3>Known Issues</h3>

<p><strong>JUnit and Eclipse/ADT</strong></p>
<ul>
<li>If you are developing in Eclipse/ADT and want to add JUnit test
classes, you can do so. However, you need to set up a custom JUnit configuration
before your tests will run properly. For detailed information about how to set
up the JUnit configuration, see the troubleshooting topic <a
href="{@docRoot}resources/faq/troubleshooting.html#addjunit">Running a Junit test class
in Eclipse</a>.</li>
</ul>

<p><strong>Other</strong></p>

<ul>
<li>It is not possible to send MMS messages between emulator instances. </li>
<li>In some cases, you may encounter problems when using the browser on an
emulator started with the command-line option <code>-http-proxy</code>. </li>
<li>On the OSX platform, if you manually remove the ~/.android directory
using <code>rm -rf ~/.android</code>, then try to run
the emulator, it crashes. This happens because the emulator fails to create
a new .android directory before attempting to create the child SDK1.0 directory.
To work around this issue, manually create a new .android directory using
<code>mkdir ~/.android</code>, then run the emulator. The emulator
creates the SDK1.0 directory and starts normally. </li>
<li>We regret to inform developers that Android 1.1 will not include support
for ARCNet network interfaces.</li>
<li>The final set of Intent patterns honored by Android 1.0 has not yet been
fully documented. Documentation will be provided in future releases.</li>
<li>In ADT Editor, you can add at most ten new resource values at a time,
in a given res/values/*.xml, using the form in the Android Resources pane.
If you add more than ten, the Android Resources pane will not display the
attributes fields for the additional resource entries. To work around this
problem, you can close the file in the editor and open it again, or you
can edit the resource entries in the XML text mode. </li>
<li>The emulator's battery-control commands (<code>power &lt;option&gt</code>)
are not working in this release.</li>
</ul>


<h2 id="1.0_r2">Android 1.0 SDK, Release 2</h2>

<p>This SDK release includes the Android 1.0 platform and application API.
Applications developed on this SDK will be compatible with mobile devices
running the Android 1.0 platform.</p>

<p>This release includes mainly bug fixes, although some smaller features were
added.</p>

<h3>ADT Plugin Compatibility</h3>

<p>For this release of the SDK, the compatible version of the Android
Development Tools (ADT) Plugin for Eclipse is <strong>0.8.0</strong>. If you are
using a previous version of ADT, you should update to the latest version for use
with this SDK. For information about how to update your ADT plugin, see <a
href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin for Eclipse</a>.</p>

<h3>Other Notes</h3>

<p><strong>T-Mobile G1 Compatibility</strong></p>

<p>This version of the SDK has been tested for compatibility with the first
Android-powered mobile device, the T-Mobile
G1. </p>

<p><strong>MapView API Key</strong></p>

<p>MapView is a class that lets you easily integrate Google Maps into your
application. Before you can access the maps data, you will need to register with
the Google Maps service and receive a Maps API Key, which you then add to your
MapView for authentication to the server.</p>

<p>Developers should note that the registration service for MapView is now
active and Google Maps is actively enforcing the Maps API Key requirement. For
information about how to register for a Maps API Key, see <a
href="http://code.google.com/android/add-ons/google-apis/mapkey.html">http://code.google.com/android/add-ons/google-apis/mapkey.html</a>.
</p>

<p><strong>USB Driver for Windows</strong></p>
<p>If you using Windows and want to develop or test your application on an
Android-powered device (such as the T-Mobile G1), you need an appropriate USB
driver. For your convenience, the Windows version of the Android SDK includes a
USB driver that you can install, to let you develop on the device. The USB
driver files are located in the <code>&lt;SDK&gt;/usb_driver</code> directory.

</p>

<h3>Resolved Issues, Changes</h3>
<ul>
<li>The android.jar in this SDK release now includes several classes that were
missing from the previous SDK. </li>
<li>The android.R.styleable class and its fields were removed from the public
API, to better ensure forward-compatibility for applications. The constants
declared in android.R.styleable were platform-specific and subject to arbitrary
change across versions, so were not suitable for use by applications. You can
still access the platform's styleable attributes from your resources or code. To
do so, declare a custom resource element using a
<code>&lt;declare-styleable&gt;</code> in your project's res/values/R.attrs
file, then declare the attribute inside. For examples, see
&lt;sdk&gt;/samples/ApiDemos/res/values/attrs.xml. For more information about
custom resources, see <a
href="{@docRoot}guide/topics/resources/available-resources.html#customresources">Custom
Layout Resources</a>. Note that the android.R.styleable documentation is still
provided in the SDK, but only as a reference of the platform's styleable
attributes for the various elements.</li>
<li>The VM now properly ensures that private classes are not
available to applications through reflection. If you were using reflection
to access private classes in a previous release, you will now get a run-time
error. </li>

<li>The Settings and Email applications are now included in the SDK and
available in the emulator.</li>
<li>We regret to inform developers that SDK 1.0_r2 does not support MFM, RLL,
or Winchester hard disk drives.</li>
<li>In the emulator, the control key for enabling/disabling trackball mode
is changed from Control-T to F6. You can also enter trackball mode temporarily
using the Delete key. While the key is pressed, you can send trackball events.</li>
</ul>

<p>Unless otherwise noted, Known Issues from the previous SDK release also apply
to this release.</p>






<h2 id="1.0_r1">Android 1.0 SDK, Release 1</h2>

<p>This SDK release is the first to include the Android 1.0 platform and application API. Applications developed on this SDK will be compatible with mobile devices running the Android 1.0 platform, when such devices are available.</p>

<p>This release includes mainly bug fixes, although some smaller features were added. The Android 1.0 also includes several API changes from the 0.9 version. For those porting from the M5 release, the SDK also includes the legacy changes overview and API Differences Reports. See the current Overview of Changes for more information. </p>

<h3>ADT Plugin Compatibility</h3>

<p>For this version of the SDK &mdash; Android 1.0 SDK, Release 1 &mdash; the compatible version of the Android Development Tools (ADT) Plugin for Eclipse is <strong>0.8.0</strong>. If you are using a previous version of ADT, you should update to the latest version for use with this SDK.</p>

<h3>Installation and Upgrade Notes</h3>

<p>If you've been developing an application using a previous SDK version and you want the application to run on Android-powered mobile devices, you must port the application to the Android 1.0 SDK. Be sure to wipe application user data (emulator option <code>-wipe-data</code>) when running your application on the Android 1.0 SDK emulator.</p>

<h3>Other Notes</h3>

<p><strong>MapView API Key</strong></p>

<p>MapView is a class that lets you easily integrate Google Maps into your application. Before you can access the maps data, you will need to register with the Google Maps service and receive a Maps API Key, which you then add to your MapView for authentication to the server.</p>

<p>Currently, the registration service for MapView is not yet active and Google Maps is not yet enforcing the Maps API Key requirement. However, note that the registration service will be activated soon, so that MapViews in any application deployed to a mobile device will require registration and a valid Maps API Key. </p>

<p>As soon as the registration service becomes available, we will update the page at <a href="http://code.google.com/android/add-ons/google-apis/mapkey.html">http://code.google.com/android/add-ons/google-apis/mapkey.html</a> with details about how and where to register. Please check that page periodically for registration information, if you are using a MapView.</p>


<h3>Resolved Issues, Changes</h3>

<p><strong>Emulator</strong></p>
<ul>
<li>Emulator now saves the user image in &lt;android&gt;/SDK1.0/</code></li>
<li>Fixed EsounD-related freezes on Linux.</li>
<li>Fixed the documentation in -help-audio. '-audio list' doesn't work, one
 needs to call -help-audio-out and -help-audio-in to get the list of valid
 audio backends.</li>
<li>Fixed scrollwheel Dpad emulation in rotated mode. before that, using the
 scroll-wheel would always generated Dpad Up/Down events, even when in
 landscape mode.</li>

<li>Several Obsolete command options were removed.</li>
<li>Setting the network speed through the console or the -netspeed option will
 properly modify the connectivity icon on the device.</li>
<li>Setting the GSM voice registration state to 'roaming' in the console will
 properly modify the voice icon on the device</li>
</ul>

<p><strong>SQLite</strong></p>
<ul>
<li>SQLite is now included in the SDK package on all platforms. </li>
</ul>

<p><strong>Other</strong></p>

<ul>
<li>It is not possible to send MMS messages between emulator instances. </li>
<li>In some cases, you may encounter problems when using the browser on an
emulator started with the command-line option <code>-http-proxy</code>. </li>

<li>We regret to inform developers that Android 1.0 will not include support for
dot-matrix printers.</li>
<li>On the OSX platform, if you manually remove the ~/.android directory
using <code>rm -rf ~/.android</code>, then try to run
the emulator, it crashes. This happens because the emulator fails to create
a new .android directory before attempting to create the child SDK1.0 directory.
To work around this issue, manually create a new .android directory using
<code>mkdir ~/.android</code>, then run the emulator. The emulator
creates the SDK1.0 directory and starts normally. </li>
<li>The final set of Intent patterns honored by Android 1.0 has not yet been
fully documented. Documentation will be provided in future releases.</li>
<li>In ADT Editor, you can add at most ten new resource values at a time,
in a given res/values/*.xml, using the form in the Android Resources pane.
If you add more than ten, the Android Resources pane will not display the
attributes fields for the additional resource entries. To work around this
problem, you can close the file in the editor and open it again, or you
can edit the resource entries in the XML text mode. </li>
<li>The emulator's battery-control commands (<code>power &lt;option&gt</code>)
are not working in this release.</li>

</ul>

