Note: These are the release notes for the "early-look" SDK versions, released before the full Android 1.0 release in September 2008. Release notes for the Android 1.0 and later SDK versions are provided in the main Release Notes document.
Android 0.9 SDK Beta (r1)
This beta SDK release contains a large number of bug fixes and improvements from the early-look SDKs. The sections below describe the highlights of the release.
New Features and Notable Changes
Behavior and System Changes
- New Home screen and many user interface updates
- Minor changes to Activity lifecycle and task management
- New window option to request OpenGL acceleration for certain kinds of View structures
Significant API Changes
- onFreeze(Bundle) renamed to onSaveInstanceState(Bundle), to better reflect the fact that it does not represent an actual change in application lifecycle
- IntentReceivers are now known as BroadcastReceivers (but still operate on Intents.)
- Various parts of the API cleaned up to use Intents instead of Bundles; Intent itself improved to reduce the need for separate payload Bundles.
- ContentProvider Cursors have had significant changes to make them easier to create and remove certain data consistency bugs.
- Changes to menus to make them more flexible; also added context menus (similar to "right mouse button" menus)
- Changes to the Sensor API to make reading sensors more convenient and reduce the need to poll
- Improvements to the Camera API
- Significant changes to the Location API to make it easier to use and better self-documenting
- API cleanup on MapViews
- Performance-related changes to the MediaPlayer, as well as support for new types of ringtones
- Apache HTTPClient installation upgraded to 4.x of that API; 3.x version is removed
- HTTPClient 4.x removes multipart methods, include HttpMime which is an extension of Mime4j (http://james.apache.org/mime4j/index.html) in your project instead
- Improvements to WiFi and related networking
- New Preferences API to easily store small amounts of data
- Improvements to the Telephony API, including ability to obtain source number of incoming phone calls
- Variety of improvements to the View API
- Variety of improvements to component management, such as the ability to keep components private, better control over when processes are started, and ability to "alias" an Activity to more than one entry in AndroidManifest.xml
- Improvements to how the Browser and WebView, such as better control over content downloads
- A number of enhancements to XML layouts, such as the new <merge> tag
- Numerous improvements to the standard widgets
- Network access now requires that applications obtain a permission in their AndroidManifest.xml files.
Maps & Location
- The MapView will require an API key on final Android 1.0 devices. This key can be obtained at no cost from Google, and will allow access to the full MapView API. In this release, the API key must be provided but can be any dummy value. In the final 1.0-compatible SDKs, this will need to be a real key.
- The KML-based mock location provider supported in previous releases is no longer supported. In the current SDK, you can use the emulator console to send GPS fix updates to the emulator and applications running on it. Also, the DDMS tool provides an UI that you can use to easily upload GPX and KML files. DDMS handles playback of the KML or GPX tracks automatically.
ADT Plugin for Eclipse
The ADT Plugin that accompanies this SDK includes a preview of the Graphical Layout Editor. Files located in <project>/res/layout[-qualifiers]/ will be opened with the new layout editor. This is very much a work in progress, and provided here for preview purpose. The editor feature is subject to change.
- Dual page editor with a WYSIWYG page (the graphical editor) and an XML page with content assist.
- The interactivity in the editor itself is limited to selection at the moment. Actions on the layout elements can be done from the following standard Eclipse views: Outline (add/remove/up/down), and Properties (editing of all the element properties with a tooltip in the status bar).
- Top part of the editor allows you to display the layout in different configurations (language, orientation, size, etc...), and different themes.
- All referenced resources (strings, bitmaps, etc...) are resolved based on the selected configuration/theme.
- A green check mark next to a resource qualifier indicates that the opened file matches the value of the qualifier. A warning sign indicates that the opened file does not specifies any value for this qualifier.
- If a different version of the opened layout matches the new configuration selection (in a different res/layout-qualifier folder) then the editor automatically switches to that new file.
- Custom Views are supported, however if they do too much in their constructor/onDraw method, it may not work (the layout library used by the editor only includes a sub-part of the Android framework). Check the android console for errors/exceptions.
Known issues/limitations for Graphical Layout Editor include:
- Font display is very close but not equals to on-device rendering since the font engine in Java slightly differs from the font engine in Android. This should not have any impact on your layouts.
- Creating new views in a relative layout automatically puts each new elements below each other using the layout_below attribute. However, until the layout file is saved, they will appear stacked on top of each other.
- Some XML based drawables don't draw. Fading in the scroll/list view appears as a white rectangle. Generally do not expect every single fancy drawing feature of the android framework to be supported in the layout editor (but we're working on it).
- Themes defined in the project are not added to the theme drop-down.
- No animation support!
- No support for WebView, MapView and SurfaceView.
- No UI support for <merge>, <include>, <ViewStub> elements. You can add these elements to your manifest using the xml editor only.
- If a layout fails to render in a way that prevents the whole editor from opening, you can:
- open that particular file in a different editor: right click the file in the package explorer and choose Open With... > XML editor
- completely disable the layout editor, by setting a system wide environment variable called ANDROID_DISABLE_LAYOUT to any value.
- If a layout fails to render, check the android console (in the standard Eclipse Console view). Errors/Exceptions will be displayed in there.
Other ADT features/notes include:
- There is a new launch option for activity. You can choose to launch the default activity (finds an activity configured to show up in the home screen), or a specific activity, or none.
- Normal Java resources (non Java files placed in package folders) are now properly packaged in the final package, and can be accessed through normal java API such as ClassLoader.getResourceAsStream()
- Launch configuration now has an option to wipe emulator data on launch. This always asks for confirmation.
- Launch configuration now has an option to disable the boot animation. This will let the emulator start faster on older computers.
- Installation of application is now more robust and will notify of installation failure. Also installation is blocking, removing issues where ADT tried to launch the activity before the app was installed.
Ant Build Tools
- External jar libraries are now directly supported by build.xml, just drop them in the libs directory.
- The console port number of a given emulator instance is now displayed in its window's title bar.
- You can define the console port number used by a given emulator instance. To do so, start the instance with the '-port <port>' option and specify which port the emulator should bind to for the console. <port> must be an *even* integer between 5554 and 5584 inclusive. The corresponding ADB port will be <port>+1.
-adb-portcommand is deprecated. Please do not use it, as it will be removed soon and you cannot use both -port and -adb-port at the same time.
- Voice/sms are automatically forwarded to other emulator instances running on the same machine, as long as you use their console port number as the destination phone number. For example, if you have two emulators running, the first one will typically use console port 5554, and the second one will use port 5556, dialing 5556 on the first emulator will generate an incoming call on the second emulator. You can also hold/unhold calls. This also works when sending SMS messages from one emulator to the other.
- A new
-scale <fraction>option allows you to scale the emulator window.
- A new
-no-boot-animoption tells the emulator to disable the boot animation. On slower systems, this can significantly reduce the time to boot the system in the emulator.
Other Development Tools
The SDK includes several new development tools, such as
- HierarchyViewer is a visual tool for inspecting and debugging your user interfaces and layout.
- Draw 9-patch allows you to easily create a NinePatch graphic using a WYSIWYG editor.
- The UI/Application Exerciser Monkey generates pseudo-random system and user events, for testing your application.
- Starting with this release, Android .apk files must be cryptographically signed, or the system will reject them upon installation. The purpose of this requirement is to securely and uniquely identify developers, so that the system can -- for example -- safely let multiple .apk files signed by the same developer share resources.
- There are no requirements on the key used to sign .apk files; locally-generated and self-signed keys are allowed. There is no PKI, and developers will not be required to purchase certificates, or similar. For developers who use the Eclipse/ADT plugin, application signing will be largely automatic. Developers who do not use Eclipse/ADT can use the standard Java jarsigner tool to sign .apk files.
- LunarLander has been converted to render into a SurfaceView via a background Thread, for better performance.
- New sample: the source code for the now-obsolete Home screen from M5 is included as an example of how to construct a Home screen replacement.
- Due to significant API changes in the upstream open-source project and due to the timeline of getting certain Bluetooth profile implementations certified, a comprehensive Bluetooth API will not be possible or present in Android 1.0.
- Due to the security risks inherent in accepting arbitrary data from "outside" the device, the data messaging facility of the GTalkService will not be present in Android 1.0. The GTalkService will provide connectivity to Google's servers for Google Talk instant messaging, but the API has been removed from this release while we improve the service. Note that this will be a Google-specific service and is not part of the core of Android.
- We know that these changes will affect many developers who have worked with the prior early looks at the SDK, and we are very sorry for the resulting inconvenience. We look forward to the possibilty of restoring some or all of this functionality in a later version of the Android platform.
- Many internal and non-public APIs have been removed from the documentation. Classes and methods that are not present in the documentation are non-public and should not be used, even though they may appear in tools such as IDEs. A future version of the SDK will ship with an android.jar file that contains only public classes, to help developers avoid accidentally using non-public APIs.
- A few extraneous APIs (such as unnecessary packages under java.awt) have been removed.
- Several additional tools are included, such as a utility for easily drawing 9-patch images.
- The DDMS utility has been refactored into library form. This is not of direct interest to application developers, but may be of interest to vendors interested in integrating the Android SDK into their products. Watch for more information about the ddmlib library soon.
- For performance and maintainability reasons, some APIs were moved into separate modules that must be explicitly included in the application via a directive in AndroidManifest.xml. Notable APIs that fall into this category are the MapView, and the java.awt.* classes, which each now reside in separate modules that must be imported. Developers who overlook this requirement will see ClassNotFoundExceptions that seem spurious.
- Developers who use 'adb push' to install applications must now use 'adb install', since the full package manager is now implemented. 'adb push' will no longer work to install .apk files.
- The emulator supports a variety of new options, and some existing options have been changed. Please consult the updated emulator documentation for details.
The list below is not comprehensive, but instead highlights the most interesting fixes since the last SDK release.
- More of the standard Android user applications are now included, such as the Music and Messaging applications.
- Many bug fixes to the Media Player
- Emulator performance is improved, especially for startup
- More internal APIs are removed from class documentation. (However, this work is not quite yet complete.)
- It's now much easier to add media content to the SD card and have the ContentProvider locate and expose it to other applications.
- The final set of Intent patterns honored by Android 1.0 has not yet been fully documented. Documentation will be provided in future releases.
- We regret to inform developers that Android 1.0 will not support 3.5" floppy disks.
- Unfortunately, the ability to play audio streams from memory (such as via an InputStream or Reader) will not be possible in Android 1.0. As a workaround, we recommend that developers save media content to SD card and use MediaPlayer to play from a file URI, or embed a small HTTP server and play from a URI on localhost (such as http://127.0.0.1:4242/something).
- Android now supports modules or libraries that can be optionally linked into applications; a good example is the MapView, which has been moved into such a library. However, Android 1.0 will not support the ability for third-party developers to create such libraries for sharing with other applications.
- We believe that we have eliminated the problem with very long emulator startups on Windows, but had some trouble reproducing the issue. We are interested in feedback from developers, if this issue persists.
m5-rc15 does not introduce any new features.
- 1012640: Incorrect handling of BMP images.
Unless otherwise noted, Known Issues from m5-rc14 also apply to m5-rc15.
In addition to changes in the Android APIs, m5-rc14 also introduces changes to the Android Developer Tools:
- The Android emulator now support SD card images up to 128 GB in size. The previous limit was 2 GB.
- Support for managing multiple devices has been integrated into DDMS. This should make it easier to debug applications that are run on multiple device scenarios.
- ADT now attempts to connect a debugger to any application that shows up
in the wait-for-debugger state, even if this application was not launched
The connection is actually established only if there exists a project in the Eclipse workspace that contains an
AndroidManifest.xmldeclaring a package matching the name of the process. To force this connection from your code, use
Debug.waitForDebugger(). Activities declaring that they require their own process through the "process" attribute with a value like ":someProcess" will be recognized and a debugger will be connected accordingly. This should make it easier to debug intent receivers, services, providers, and other activities not launched from the standard app launcher.
- ADT has launch modes for device target selection. Automatic mode will: 1) launch an emulator if no device is present, 2) automatically target the device if only one is connected, and 3) prompt the user if 2 or more are connected. Manual mode will always prompt the user.
- ADT also contains the same support for multiple devices that has been introduced into DDMS.
- AIDL files that import and reuse types is now supported by activityCreator.py and ADT.
- The traceview tool is now included in the SDK.
The following Known Issues from m3-rc20 have been resolved:
- 917572: The activityCreator created incorrect IntelliJ scripts
- 917465: Unanswered incoming calls placed from the emulator console will result in an unfinished call UI if you press the call back button
- 917247: dmtracedump and traceview tools are not available in the SDK
- 912168: Extremely rapid or prolonged scrolling in the Maps application or MapsView will result in application errors
- 905852: adb emits warnings about deprecated API use on Mac OS X 10.5
- 905242: The Run dialog sometimes failed to show the Android Launcher
- 901122: The focus ring in the browser is sometimes incorrect
- 896274: On Windows, the emulator sometimes starts off-screen
- 778432: Icons for newly installed applications do not display
The following are known issues in m5-rc14:
- 1017312: The emulator window size has been reduced slightly, to allow it to be fully visible on smaller screens. This causes a slight clipping of the HVGA emulator skin but does not affect its function.
- 1021777: Setting a power requirement in a
Criteriaobject passed to
will result in a value not being returned.
- 1025850: Emulator failing to launch from the Eclipse plugin due to wrong custom command line parameters do not report the error anywhere and silently fails.
Unless otherwise noted, Known Issues from m3-rc20a also apply to m5-rc14.
Version m3-rc37a and ADT 0.3.3 were released on December 14, 2007.
Android Debug Bridge (ADB)
- Now supports multiple emulators on one host computer. Please note that you need to use the
-dataoption when starting secondary emulators, to allow those instances to save their data across sessions. Also, DDMS does not yet support debugging on multiple emulators yet.
ADT Plugin for Eclipse
- Adds editor capabilities for working with Android manifest files, such as syntax highlighting and autocompletion. The editor capabilities require the Web Tools WST plugin for Eclipse, which is included in most Eclipse packages. Not having WST does not prevent the ADT plugin from working. If necessary, you can download and install WST from the Web Tools Project downloads page. To update directly from an Eclipse installation, you can add a remote update site with this URL: http://download.eclipse.org/webtools/updates . Note that installing WST on Eclipse 3.4 will require installing other packages, as detailed on the WTP downloads page.
- Now retries to launch the app on the emulator if it fails due to timing issues when the emulator is booting.
- Adds support for loading custom skins from the <SDK>/lib/images/skins/ directory. The Skin dropdown in the Emulator tab is now built from the content of the skins/ directory in order to support developer-made skins.
- Adds an Emulator control panel. This is a UI on top of the emulator console that allows you to change the state of the network and gsm connection, and to initiate incoming voice call. (This is also present in standalone DDMS.)
- Adds support for referenced projects. Android projects will add to the apk package any code from referenced projects.
- Eclipse console now warns if an .apk that is pushed to the device declares the same package as another already installed package.
- Java classes generated by the Eclipse plugin are now marked as derived automatically, so that Team plugins do not consider them as regular source.
- Now provides support for emulating inbound SMS messages. The ADT plugin and DDMS provide integrated access to this capability. For more information about how to emulate inbound SMS from the console, see SMS Emulation.
- The default emulator skin has been changed to HVGA-P from QVGA-L. For information about emulator skins and how to load a specific skin when starting the emulator, see Using Emulator Skins.
adb -version now returns a version number.
Audio on Windows is fixed and is no longer 'choppy'.
Removed Manifest File Locking on Mac OS X
ADT plugin now uses a custom java editor for R.java/Manifest.java, to make those files non-editable. This is to replace the current locking mechanism which causes issues on Mac OS (preventing projects from being deleted). Note that your project must recompile at least once for the lock to be removed from the files.
The following known issues noted in m3-rc20 are now fixed:
- 890937: Emulator does not support non-qwerty keyboards.
adb shellmay fail to connect when used the first time.
- 896274: On Windows, the emulator window may start off-screen.
- 899949: The emulator may fail to start with
-useaudioon some environments.
- 912619: Emulator console listens on non-local ports 5554-5584.
- 917399: On Windows, running multiple emulator consoles can result in unexpected behavior when simulating incoming telephone calls.
Unless otherwise noted, Known Issues from m3-rc22a also apply to m3-rc37a.
Version m3-rc22a and ADT 0.3.1 were released on November 16, 2007.
The New Android Project wizard provided by ADT 0.3.1 now properly displays error messages when used with Eclipse 3.2 on Windows.
AndroidManifest.xml files generated by ADT 0.3.1 now include the XML element required for displaying the associated app in the "Applications" menu. If you have applications created with ADT 0.3.0, simply ensure that your
AndroidManifest.xml file contains the following highlighted line:
... <intent-filter> <action android:value="android.intent.action.MAIN" /> <category android:value="android.intent.category.LAUNCHER" /> </intent-filter> ...
ADT 0.3.1 is now compatible with Eclipse 3.4.
Fixes a NullPointerException that is thrown in certain situations with the DDMS perspective in Eclipse.
Address a keyboard lock-up issue when using
adb on Mac OS X 10.4 and 10.5.
Unless otherwise noted, known issues from m3-rc20a also apply to m3-rc22a.
The following are known issues in m3-rc20a:
778432 - Resolved in m5
In certain circumstances, icons for newly installed applications do not display as expected.
890937 - Resolved in m3-rc37a
The emulator currently does not support non-QWERTY keyboards.
894618 - Resolved in m3-rc37a
The adb shell command may fail to connect when used for the first time.
896274 - Resolved in m5
On Windows, the emulator screen will sometimes show up off-screen when it is started. The workaround for this is to right-click on the emulator taskbar entry, select Move, and move the window using keyboard arrow keys
899949 - Resolved in m3-rc37a
The emulator may fail to start when using the
-useaudio in some environments
901122 - Resolved in m5
The focus ring shown in the browser may sometimes not properly wrap links.
905242 - Resolved in m5
On Mac OS X 10.5, the Eclipse plugin's Run Dialog may sometimes fail to show the option to select the Android Launcher.
905852 - Resolved in m5
On Mac OS X 10.5, adb will emit warnings about deprecated API use when first used.
912168 - Resolved in m5
extremely rapid or prolonged scrolling in the Maps application or in a MapView will result in application errors.
912619 - Resolved in m3-rc37a
The emulator console listens for connections on ports 5554-5587. Future versions will only accept connections from localhost. It is recommend that you use a firewall to block external connections to those ports on your development machine.
On Mac OS X 10.4, the emulator may hang if started in the background (i.e.
On Mac OS X 10.5, the emulator will emit warnings about deprecated API use when started from the command line.
917247 - Resolved in m5
The dmtracedump and traceview tools are not available in the SDK.
917399 - Resolved in m3-rc37a
On Windows, running multiple emulator consoles can result in unexpected behavior when simulating incoming telephone calls.
917465 - Resolved in m5
Unanswered incoming calls placed from the emulator console, will result in an unfinished call UI if you press the call back button.
917572 - Resolved in m5
Using activityCreator with the
--ide intellij option creates IntelliJ scripts with incorrect documentation location specified. To correct, change value for the
<JAVADOC> element in the generated .ipr file from
On Ubuntu 7.10 (Gusty), the Eclipse package installed by the
apt-get install eclipse command uses java-gcj by default. This configuration is not compatible with the Android Eclipse plugin (ADT) and will result in "Class not found" errors whenever you access an ADT feature.
The resolution for this issue is to install a Sun JDK
sudo update-java-alternatives --jre java-1.5.0-sun
and then configure Eclipse to use it by exporting the following environment variable:
or by adding following to your