If you are a developer, you will want to fire up SDK Manager right now and perform an update. Besides the Honeycomb SDK preview that we'll talk about separately, Google also unleashed the next version of Android Development Tools, or simply ADT, for Eclipse as well as SDK Tools r9. I've been using ADT versions 9.0.0 preview 1, 2, and 3 for a number of weeks now, and I can tell you that 9.0.0 is a huge step up to where a serious set of development tools needs to be.
Numerous improvements to the Visual Layout Editor, "go to declaration" hyperlink support for quicker navigation around declarations, near-instant AVD restarts (holy crap!!! See the bolded text below), and a whole wagon of bug fixes are awaiting.
Near-Instant AVD Restarts Hands-On
Considering the Emulator itself is buggy and needs to be restarted a few times a day, I'm highly excited about those near-instant restarts. Thank you, Google - if you can't fix hard-to-track Emulator bugs, at least you've made it restart more painlessly, and for that I thank you.
The way this instant restart business works is not ideal, in my opinion, but is still very useful once you figure out how to use it. The general idea is that you can save a checkpoint when closing the emulator and then use this checkpoint to almost instantly bring it back up, rather than boot the emulator from scratch. This system reminds me of the way you can image VMWare instances and then go back to a point in time.
2 new options show up when starting the AVD now
There are a few problems with this approach:
- Saving and restoring cannot be done on demand, from within the emulator. This means you have to close the emulator when you want to save a checkpoint and re-open it when you want to load it. You are also forced to use the AVD Manager or have multiple shortcuts with different command lines, depending on what you want to do this time. Such need for planning ahead is silly and the workflow should be reworked.
- Saving a snapshot is blocking and freezes the whole emulator for a good 10-15 seconds. Again, not acceptable and confusing at times.
- There is no way to manage the snapshots, unless you use the command line interface of the emulator binary.
The way I've configured my AVDs now for development is:
- boot the AVD with Save to snapshot option enabled
- bring it to a certain good state, for example, logged into your app and all accounts, with an app icon on the home screen
- shut off the AVD, which saves the snapshot
- fire up the AVD again, this time with Save to snapshot option disabled and Launch from snapshot enabled
- this boots the previous checkpoint instantly and when I close it, the current state will be lost and I can instantly go back to that saved good snapshot
Very handy, but definitely needs work.
Here's a relatively full listing of what's new:
- ADT 9.0.0 is designed for use with SDK Tools r9. If you haven't already installed SDK Tools r9 into your SDK, use the Android SDK and AVD Manager to do so.
- General notes:
- "Go To Declaration" hyperlink support: You can jump directly from code references (such as
R.id.main) to the corresponding XML declaration, or from XML attributes (such as
@string) to the corresponding resource definition, or from manifest XML registrations to activities and services.
- Improvements were made to name refactoring.
- AVDs now automatically save their state, so they can restart almost instantly. You can enable this feature when creating an AVD or by editing an AVD with the AVD Manager.
- Improvements to the Visual Layout Editor:
- Support for rendering targets: You can now choose an arbitrary Android platform to render the current page, regardless of the project's minimum platform. This makes it easy to verify the layout and appearance of your activity on different versions of the platform.
- Improved support for empty and nested layouts: Dragging items over nested and invisible layouts automatically enlarges and highlights these layouts, so that they can receive drops.
- XML formatting improvements: The editor generates cleaner XML and you can now enable XML auto-formatting in the Preferences menu.
- Improved Outline labels: The Outline tab now displays additional information about each View. Textual Views display a snippet of the actual text. Views with a source (such as ImageView) displays the resource name. Included Views display the name of the View.
- When you right click a View in the Layout Editor, the context menu now contains Edit ID... and Edit Text... items. The Properties... context menus now list all of the properties and provide a way to edit them (Details).
- The layout editor now properly handles
- "Extract as Include" refactoring: The Layout Editor has a new refactoring that allows you to select one or more views in a layout, and extract it into a separate layout (Details).
- Improved diagnostics for class loading and rendering errors: Class loading and rendering error messages are more useful and provide better information about the root cause of the error.
- Improved error handling to prevent drag and reordering operations from adding children into an
- Outline reordering: Reordering your views in the Outline tab is much easier (Details).
- Fix for keybinding bug where keyboard shortcuts did not work (Issues 13231 and 13134).
- Fix for problems with Custom layout attribute menu (Issue 13134).
- Automatic configuration for various view types: Certain views have properties configured by default. For example, the width of an
EditTextobject is set to
match_parentwhen added to a vertical
LinearLayoutor a default image is added to an
- Previews during dragging: Dragging from the palette or dragging within the layout editor now shows live previews of the dragged item.
- Navigation improvements: In the Layout Editor, double-clicking Views jumps to the corresponding XML element. In the Outline view, double-clicking opens the Properties view.
- The editor has Honeycomb style animation preview support.
- Improved rendering support for various Views (such as TabHosts and SlidingDrawers) in Honeycomb (Issues 3162 and 13092).
- Included layouts can be rendered and edited in the context of the layouts that include them. From a layout using an
<include>tag, double-clicking on the
<include>element edits the referenced layout in the context of the current layout. Additionally, when editing a layout that is included by other layouts, you can quickly change between context layouts, by right clicking in the editor and choosing Show included in.... This feature is only available in Honeycomb.
- This release fixes many other bugs, but the most important ones are listed below:
- Fixed issue that prevented launching debug builds on productions devices when
debuggable=truewas not set in the Android manifest.
- The LogCat view in DDMS properly handles UTF-8 characters.
- The SDK Manager is more reliable on Windows (Details).
- A JUnit initialization bug that prevented you from working with JUnit tests was fixed (Issue 12411).
If you are an Android developer, you pretty much owe it to yourself to upgrade as soon as possible.