The Nightmare of Android App Publishing

I've done a lot of mobile development. From the small platforms, such as WebOS (great platform, terrible performance) and the Blackberry Playbook (I. Hate. Flash.), to Apple's iOS. One realm I'd never set foot in before today is the world of Android.

In the past, I've had prejudice against Google's OS based on demos and brief spurts of usage on friends' devices. It was always laggy-- something I hated. I was always jealous of iOS when I used to have a WebOS phone. But then I switched to Windows Phone 7, and impressively, the UI was fast and great (I have an iPhone now).

A couple of months ago, I got my hands on a Galaxy Tab 2 10.1 tablet. Honestly, I was confused for the first few minutes of using the tablet. Maybe it was Samsung's Touchwiz UI, but for the life of me, I couldn't figure out where the app drawer/launcher was.

Obviously, there's the home screen with a few shortcuts, and I knew if I press and held my finger on the screen, I could add widgets. But little did I know, from the same screen you add widgets from is the app launcher-- it's just hidden in another tab. I never realized this was actually a launcher, since it was in the same location that you edit your home screen widgets. I assumed it was for dragging icons to the home screen as well. Personally, I think it is completely out of place.

Anyways, after I figured it out, I began to explore the new OS. I always loved widgets. I always wanted widgets. My first WebOS app, Weatherman, essentially created a way to have a weather widget on the WebOS home screen and lock screen. But after adding a few, things began to slow down and become choppier, so I deleted the widgets. So much for that.

I heard about this app called Chameleon by Teknision. The Kickstarter pitch looked good, and I preordered the app so I could use the beta. Sure enough, the software looked amazing, but it didn't function very well (the context switching never worked for me). This was understandable, considering the beta status. One thing I never was able to reproduce from their demo videos was the fluidity of the UI. Everything always was choppy and lagged, but I assumed this was because I was on Android 4.0 versus 4.1, which had Google's "Project Butter." The Galaxy Tab 2 10.1 was relatively new and Android 4.1 had been out for a while, so I searched around for when the tablet would get the OS upgrade. Of course, no one knows and there are no guarantees.

I eventually got tired of Android's choppiness, and I stopped using the Galaxy Tab. Back to my Playbook (yikes), I guess.

Fast forward to today. I've been working with Seattle Children's Hospital on an iPad and iPhone app. It was published recently on the App Store and everything went smoothly (mostly). The most difficult part was simply getting my permissions raised to be able to have access to managing certificates and whatnot.

There's also an Android port that's coming, and after getting the Google Developer account setup, I proceeded to submit the app. It took a good couple of hours to get Titanium Appcelerator to work with the Android emulator and get the screen resolution right for screenshots on the Play store, but I finally got the APK built. Of course, I didn't know my app had to be signed with a certificate that expired in 25 years-- I thought I was being generous setting it to 10 and was confused when the APK upload was rejected for expiring too soon. (On a side note, it'd be great if Google listed the actual resolution in the AVD manager. I really hate spending time looking up what WVGDAQGW800 or whatever actually is. It's a waste of time.)

After uploading the APK, to my delight, there was a button to manage supported devices, which is great in the event I find the app doesn't work with a specific device for whatever reason. I like having control over the experience. But upon clicking the button, I immediately did a double take: "2050 supported devices." 2050. And to top it off, the majority of the devices were listed under code names and abbreviations and model numbers. "V871." "ILT-MX100." "D000-000011-N." Just great.

While the app should theoretically work across all of the phones and tablets out there, along with every (major) screen resolution, I can't ever be sure. I'm definitely not going to buy every one of those 2000 devices just to test it out.

Now I remember why I never developed for Android. What are the chances that something won't work right on one of the 2050 Android devices? Probably higher than more than I have time for.