Get Your Apps Ready for Android Ice Cream Sandwich
The mobile development media is all abuzz with news and speculation about Android's highly anticipated next major release, code-named Ice Cream Sandwich. We've been bombarded with rumors for months, and we've seen a few unconfirmed leaks of devices running ICS. The whole Android development community is holding a collective breath and wondering: Will Android Ice Cream Sandwich live up to the hype?
Specifically, will it successfully combine the smartphone-centric features that made the Android platform so popular in the first place with the slick new features of Honeycomb that supported exciting new device form factors like tablets and televisions?
If you want our opinion (and we assume you must be a little interested if you're reading this), here it is. Ice Cream Sandwich is likely to be a pretty major release, but nothing ever really lives up to the hype these days. We expect a first stab at a platform version that fully supports all conceivable Android devices equally for the foreseeable future. We are anticipating a platform version that will allow smartphones and other devices that have been hanging back on Froyo and Gingerbread a fairly straightforward opportunity to leapfrog Honeycomb and enjoy a stable and upgraded platform that is still backwards compatible. That's just our take (and hope) on how this update will go.
Figure 1. Android Ice Cream Sandwich
The next big question is when Ice Cream Sandwich will be available. Back at Google IO in May, we heard "Q4, 2011." A recent statement by Google's Eric Schmidt refined this to the October/November timeframe. Some recent leaks imply we may see ICS sooner rather than later, but we're betting that we will see the release by Christmas. We make this statement not due to lack of faith in the Android team, but because releases are sometimes held up at the last minute due to unforeseen circumstances.
That said, we are likely to see and hear more about what ICS will offer during the next few weeks. For example, some CTIA rumblings seemed promising, such as the recently postponed joint event that Google and Samsung announced, given the rumor that Samsung will be delivering the rumored Nexus Prime--the ICS launch device. Will it be a phone? A tablet? A suite of compatible devices in various form factors? Who knows! Many are hoping this event will showcase the Nexus Prime with some demos of ICS.
Developer's Preparation Checklist for Android Ice Cream Sandwich
Regardless of the release date, app developers are getting antsy. They want the new SDK and they want it now. Development teams need time to update their existing applications for the hot, new devices that will inevitably ship soon after ICS is released (or, if past devices are any indication, before the SDK release). Luckily, there are a number of things developers can do now, even without knowing the details of ICS, to help speed this transition.
So let's talk about how you can future-proof your applications so that they are ready for Android Ice Cream Sandwich and beyond. Here are some tips for prepping your existing apps as well as ramping up new projects in anticipation of ICS:
- Start by making sure your application runs as well on Honeycomb as possible. And by this, we mean that it should take advantage of Honeycomb features, not just run "well enough" due to backwards compatibility modes.
- Educate yourself about the newer features in Honeycomb, even though your application may not yet be using them. For example, learn how Action Bars work and how they are replacing the traditional options menu.
- Learn about compatibility modes, such as the feature in Android 3.2 Honeycomb that allows users to scale the display if the developer doesn't set certain flags in the manifest file.
Identify areas of your applications that are most likely to cause problems after a platform upgrade:
- Identify and eliminate any platform-specific hacks in your old code, when possible.
- Seriously consider updating any outdated or deprecated code in your existing apps. For example, you may want to revise usage of the old Contacts content provider and use ContactsContract instead.
- Review all uses of undocumented or unsupported APIs, content providers, and so on, and eliminate them if possible.
Pay close attention to the trending best practices in the Android SDK, as they may have changed since you first wrote your application.
- We've been spotting various changes along these lines, but it's sometimes hard to figure out if the change is just a new way of doing the same thing, or if it's a better way.
Review the major new features that have been incorporated into Gingerbread and Honeycomb, especially those that the Android team has taken steps to back-port as far back as Android 1.6 through the Android Compatibility Package:
- Decouple user interface functionality from your Activity classes. Fragments are the future in terms of flexible user interface screen workflows that suit the full range of devices. This also applies to how dialogs are created (see the DialogFragment class for details).
- Review your Cursor management. Legacy apps may have Activity classes that manage Cursors. Consider switching to using loaders.
- Newer Android devices, in particular Honeycomb tablets, are free of the traditional hardware buttons (Home, Menu, Search, and Back). Instead, they rely upon software buttons (Home, App Switcher, and Back) and the Action Bar (Menu items and the contextual Back/Up button). These navigational changes may affect how your application behaves.
- Revise your Android Manifest files to use all the latest tags appropriately so that your application ends up in the hands of the users you want to reach. In particular, pay attention to the filters used by Android Market.