03
Jan
android-under-construction1

We are going to need some restraint and careful explanation for this one.

Google is making life a little easier for developers. Today a post on the official Android Developers Blog announced a new rule for OEMs that insist on skinning Ice Cream Sandwich: You must also include the unmodified ICS "Holo" Theme files. Regular users still have to deal with a skinned OS, but developers can opt out of the skinned parts for their app. Observe:

screen_20120103_2011 Screenshot_2012-01-03-23-15-53

This is what developers currently have to deal with. Apps will look wildly different depending on what skin your phone has. On the left is Motoblur, on the right is stock ICS.  It's the same APK, but everything looks different because apps take many parts of their UI from the OS. OEMs mess with these files, and the result is a consistency nightmare for developers.

This will fix all that. Google is requiring all ICS devices to have a set of stock UI parts that developers can access for their apps. The result is a nice, consistent look for apps across all devices. Developers will have one less headache to deal with.

Now I know what you're thinking. And you can just drop it right now. Google went out of their way to pour cold water on the idea of a full-on skin lockout:

We have no desire to restrict manufacturers from building their own themed experience across their devices.

Darn. Manufacturer skins will still be around, but developers can opt to not let them touch their apps. On the plus side though, updates for OEMs should be a little easier (and hopefully, faster):

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.

Translation: "Since there are now two sets of UI pieces on every skinned phone, skins and the stock UI are now separate. That should make updates a little easier on OEMs, because new Google files will no longer overwrite their skin files." I know its really easy to read this and think "Rom developers could easily activate a stock UI!", but the thing is, we don't know how much of the stock UI is covered in this new requirement. We'll have to see a completed, skinned ICS rom to find out. Cross your fingers.

Developers should hit up the source link for full instructions on how to opt out of UI skins in their apps. Consistency rules!

Source: The Official Android Developers Blog

Ron Amadeo
Ron loves everything related to technology, design, and Google. He always wants to talk about "the big picture" and what's next for Android, and he's not afraid to get knee-deep in an APK for some details. Expect a good eye for detail, lots of research, and some lamenting about how something isn't designed well enough.
  • Mgamerz

    Wouldnt say it makes it faster to push updates. Just makes them have more time to 'enhance your user experience'

    • Ron Amadeo

      Oh just watch, OEMs can now completely ignore any improvements that are made to the stock UI.

      Before they were kind of forced to revisit everything, now they can just slap their old garbage next to stock.

  • Ian Stephenson

    Best move ever, Android gets even better.

  • http://droidsamurai.blogspot.com PixelSlave

    As far as I can tell, if no app developers adopt this new API, no skinned phone will ever see the light of the Holo theme. And, judging by how many app supports the Data Backup API, I won’t set my hope too high. On top of that, even if app developers adopt the Holo theme through the API, you will still see the customize UI once you leave those apps — you will see the OEM UI in your contact, your phone app, your call log, your messages, your launcher, your notification, even your settings app (because the OEM probably won’t use the Holo theme for these core apps.)

    In other words, this move is not meant to make it easier for the end user to enjoy the default ICS UI. It's meant to end compatibility problems for the app developers.

    • http://www.AndroidPolice.com Artem Russakovskii

      That's right, but as a developer who hasn't tested on Blur until after my app got released, I found that Blur fucked up the UI of one of the modal elements in a really bad way only after I got my hands on a Droid 3.

      Fuck everything about that - there was no reason it should have happened, and this change here is going to solve exactly this problem. I welcome it with open arms.

      • SirWally

        Hear, hear. I think OEMs should be allowed to create skinned abominations if they choose to (Android is open, after all) but developers should not have to worry about this -- the app should work and they shouldn't need to buy devices from every OEM just to make sure they app isn't adversely affected by the skin.

        Anyway, I think the ICS Holo theme is really nice -- I am a minimalist, so it suits me just fine.

    • Zomby

      Considering this "new API" consists of a single line of text in the application manifest, I don't think it'll be too hard to implement.

      However you're right about the fact that outside of the specific apps that request the holo theme, the UI of the device itself will be whatever the manufacturer set it to be. At least, the phone UI *should* be tested thoroughly by the manufacturer so that part would render correctly.

  • http://codytoombs.wordpress.com Cody

    Developers can choose to do this with a simple additional line in the Manifest.

    The Good:
    * Super easy for developers
    * Makes sure that for the graphically inclined developer, they can plan on truly consistent themes.

    The Bad:
    * It has to be done manually to each app, so it's only useful if the developer decides to turn it on...at least for now that's true.
    * It's FAR LESS consistent for the user. Users are now going to become the battleground of the style war. I may not like the theme that the OEM places on the phone (nor am I a huge fan of Google's honestly), but I sure don't want to see one app using one theme and another bouncing in a different theme. The developers are not going to universally jump on this option (I seriously doubt I will).

    The possibly awesome:
    * Since it's a setting in the Manifest file, it seems like something that would be extremely easy to modify. Either a small application that tweaks the app or possibly a mod a user can apply may allow for setting this option globally. Either way, it's all bad until there's a way to force all of your applications to choose one or the other.

    • https://plus.google.com/u/0/116930094233210246792/posts Chris Bailey

      you are absolutely right. there are actually tons of stuff I'm noticing developers don't do (I'm still learning myself) and we'd all have better experiences if google's advice was followed. But the idea is to be kind to developers not really the user. The point is the bad apps would be weeded out....eventually.

  • Tim

    I can't see why this is so difficult for OEMs to leave Android as it is and incorporate their customizations as alternate launchers/themes/apps.

    • edd

      Agreed - I can see why legally, creatively, marketing-wise they would never do this, but honestly I would love to see Sense/TouchWiz act more as launchers rather than complete customisations. When I see how swiftly launchers like ADW/LauncherPro/Go can be improved, and pushed out to dozens of different ROMs/screens, it makes OEM launchers look like dinosaurs. Make them standalone and - if possible - lock them to your own devices (e.g. only run Sense on an HTC), and leave Android alone to do it's own thing in the background.

    • https://plus.google.com/u/0/116930094233210246792/posts Chris Bailey

      I've been saying this from the get go. Go products are an excellent example of how you can change everything with JUST replacement apps. If you use the entire suite it'll replace everything from the launcher to the dialer. I don't see why OEM's can't do that.

  • Roger

    I'm going to bypass all this OEM nonsense from here on out by only buying Goggle/Motorola Android devices. OEMs have done the damage and pissed me off too many times already

    • usnmustanger

      But...if you buy a Motorola device, how is that "bypass[ing] all this OEM nonsense"? Motorola is responsible for that "OEM nonsense" known as Motoblur (or just Blur?). You contradict yourself. Or am I misunderstanding?

      • Tim

        There are many who seem to think that Google is going to kill Motoblur (which they aren't) but as it is Motoblur us becoming less and less obtrusive with each passing version to the point that the newest version is little more than an almost stock launcher (they did change it a little bit) and a collection of widgets (which can be removed from the home screen if you dont like them and replaced with your own). It's not like Sense and ToichWiz with half of the stock apps replaced.

        I personally think that the next version will continue this trend. The only thing I ask is that Google release an apk or apks to the market of all of the stock ICS widgets so people who dont have them pre-installed can install them themselves (plus update then without having to do a whole new OS point release).

  • Letroy

    OEM's should only use the official API for their customizations. They could still offer custom launchers, dialers, messaging apps without constantly messing with Android's core...

  • http://www.pretentiousname.com Leo Davidson

    Having one app look consistent on all phones does nothing for the users of each individual phone.

    It's more important for all the apps on any given phone to look consistent with each other than it is for a particular app to look consistent across all phones.

    Users should also be free to choose different themes, IMO.

    Developers should be able to install and use any theme they want in order to test their apps across a variety of themes.

    If the problem is that developers cannot easily install and test with different themes then that's the problem that should be solved, IMO.

    Allowing apps to ignore the phone's theme seems like a kludge to me. It's a good option to have around just in case, but making your app look different to the rest of the phone's UI should be a quick, temporary fix for when a problem is discovered, not promoted as the long-term solution.

    The real solution is surely to make it easy for apps to use the phone's theme and to allow users to choose what that theme is instead of having the theme forced on them by the OEM or Google themselves.

    Also, if the official theme is going to change with each major version of Android then apps which cannot cope well with alternative themes are going to have problems in the future, either way.

    Better to encourage, and make it easier for, developers to write code which works with any theme from the start instead of create an ecosystem where the apps need to be updated every time the OS changes. Lots of those apps will be abandoned, or updated very rarely, by then.

    (Perhaps some of the problems are also due to OEMs making themes that have missing or misbehaving elements. Requiring themes to be tested and certified would be a better solution to that problem than encouraging apps to opt-out of the phone's theme and make the user experience inconsistent on any given phone.)

    • https://plus.google.com/u/0/116930094233210246792/posts Chris Bailey

      While this is true from a user stand point we're really talking about how this effects the developer. There is something else that you didn't consider. This move could force OEMs to model their skins to resemble Holo closer than they have in the past. this would allow the user not to really noticed. Frankly if an app doesn't work at all with a certain skin that's going to be worse than the app looking different. I don't know if you've noticed but apps are no longer consistent ANYWAY. Apps on android are more like webpages. They fit the designers look and feel and actually the same could be said for most every other mobile app platform (besides WM7)

  • Rob

    I don't know why you hate Manufacturer skins so much, sometimes they make the phone look alot better!

    • usnmustanger

      I guess we're in the minority, but I agree, at least from an aesthetic standpoint. For example, IMHO, the screenshot above on the left (Motoblur), looks 100x better than the stock ICS one on the right. Slick, refined, elegant...the ICS popup looks like something that I coded in COBOL or BASIC. Ugh...

      • Tim

        AMEN, and if they did a similar one of Sense it would look even better.

  • http://nope RazZziel

    I really fail to see the consistency nightmare, theming it's been working on the desktop for years, and actually it's pretty annoying running applications that don't follow your desktop theme. It happens on Windows a lot, very little on Linux.

    • http://blog.ravrahn.net Ravrahn

      That's because Windows' theme support is so basic - Aero, Basic, or Windows 2000 - without hacking, whereas Linux is generally highly theme-able. There are some apps that don't fit on Linux, for example Nixnote

  • STiK

    So much for so called "Openness" :(