Google is making incremental improvements to the Android platform to ease the burden of fragmentation on developers and original equipment manufacturers. While still allowing manufacturers to create custom skins, Google is doing its best to standardize the rest of the of the Android development environment with version 4.0 Ice Cream Sandwich.
Themes are a big part of standardizing the Android experience. Android has instituted a requirement in ICS that that the "Holo" family of themes be implemented into devices unmodified. This will mean that widgets, apps buttons and menu screens will be much easier for developers to integrate.
In a blog post on Android's developer site, framework engineer Adam Powell writes: "For developers new system themes mean more design targets for their apps. Using system themes means developers can take advantage of a user's existing expectations and it can save a lot of production time, but only if an app designer can reliably predict the results. Before Android 4.0 the variance in system themes from device to device could make it difficult to design an app with a single predictable look and feel."
What the Android engineers are trying to do is make a common set of code that will be the basis for design and theme elements in Android. If a device has Android Market capabilities, it will have Holo themes as "originally designed." That could complicate matters for companies like Amazon that does not inherently allow Market access and thus will have trouble implementing ICS updates to the new software or hardware updates to the Kindle Fire.
Google is tightening control on the ecosystem by making these Holo themes a compatibility requirement for Android 4.0 and future updates. This is not necessarily a bad thing. The source code remains open, there are just a few more design-based guidelines to adhere to. This is what many in the Android ecosystem have been waiting for, Google to take a little bit more control of the platform to streamline the experience and give developers better guidelines for creating apps for the platform.
"We have no desire to restrict manufacturers from building their own themed experience across their devices. In fact we've gone further to make this even easier. In Android 4.0's API (level 14) we've added a new public theme family to complement the Holo family introduced in Android 3.0: DeviceDefault. DeviceDefault themes are aliases for the device's native look and feel. The DeviceDefault theme family and widget style family offer ways for developers to target the device's native theme with all customizations intact," Powell wrote. "Formally separating these theme families will also make future merges easier for manufacturers updating to a new platform version, helping more devices update more quickly. Google's Nexus devices alias DeviceDefault to the unmodified Holo themes."
Apps designed to run on older versions of Android will not necessarily have this Holo requirement. Android 4.0 will pick out a theme based on the SDK level to "maintain the app's original expectations." That will work for any apps designed for Android 3.0.x Honeycomb (or, any API level above 10, with ICS the top at the point at level 14). To support themes on apps running Android 2.x devices, Powell suggests using the platform's resource system to automatically detect themes for the appropriate API level.
Holo themes are just one aspect of Ice Cream Sandwich intended to make it easier for developers to navigate the tricky waters associated with coding for Android. We noted in September the early efforts that Google was making with Ice Cream Sandwich to easily support a variety of screen sizes by creating several stopgaps that developers can use to make sure their apps work on a variety of screen sizes.
The nature of Android will never allow it to fully escape the fragmentation of the platform. The goal though is to make the baseline code as easy to institute as possible with certain requirements that will give the platform a streamlined approach while also allowed OEMs, carriers and developers the ability to build on top of it. Holo themes are a good step in this direction.