I have a wonderful little Sony Ericsson Xperia X10 Mini Pro, which I won at last year’s Over The Air conference for my #blue / plaxo mashup. It’s currently running Android 2.1 (Eclair), updated from Android 1.6.
Integration with Google’s services such as contacts, email, and calendar, along with the ability to download applications from the Android Market, are pretty central to the overall usability and usefulness of this phone.
Unfortunately, it turns out that if you interrupt the setup of Google accounts (like, say, by realising you need to top up your phone before having data services), you basically break the ability to set up Google accounts for all future use. It’s very easy to encounter out of the box, within the first few minutes of playing with the device. A typical symptom is trying to go into Android Marketplace, entering your account details, and then getting the following error:
Can’t establish a reliable data connection to the server.
This could be a temporary problem or your phone may not be provisioned for data services. If it continues, call Customer Care.
A google search suggests this is a very well-documented bug, with two years’ worth of reports on issue 3477, a year and a half of reports on issue 6274, and over a year of reports on issue 8636. There’s lots of similar complaints in the Android Market help forum. From all those reports, it’s clear that the problem affects multiple different phones – as you’d expect from a platform bug.
Android 2.0 was released in October 2009 and 2.1 in January 2010, and yet the 2.1 update to the Experia, made available in October 2010, still has this bug. It looks like it has not been fixed in the 2.1 codeline, and presumably never will be.
There appears to be two basic workarounds: either sign in via the youtube app or perform a hard reset of the phone – neither of which offer a great user experience. Why would you write apps for a platform when there’s a good chance users might not be able to sign in to the app store without going through a full device reset first?
Why am I trying to get my Android device working? To test some apps I’ve been developing.
The experience of getting up and running as an Android developer is best described as ‘tedious’. It takes quite a few downloads and configuration steps to get a working Android environment, including downloading a third-party IDE, the developer tools, then installing stuff in the IDE, then creating some configurations in the IDE. If you’re doing this on multiple computers, you soon find yourself longing for an integrated installer.
Other Android platform partners are making things easier – for example Motorola’s excellent (and award-winning) Motodev Studio for Android. I’m sure Google wants to leave space for partners to differentiate, but there’s no excuse for the basic experience to be so fundamentally horrible – especially when you compare with what all the other platforms are doing. For example, Apple’s iOS / XCode integrated download and installer sets the benchmark for a simple install and then being ready to go (even if the download is a bit large); HP’s WebOS installer is almost as elegant; heck, even Samsung’s bada has an integrated Eclipse-based SDK.
Once you get your Android developer environment up and running, it turns out there are still more pitfalls to avoid. For example, this error, that you receive when trying to run your app in the emulator:
emulator: ERROR: the user data image is used by another emulator. aborting
Perhaps the worst and most frustrating issue facing Android developers is the speed of the emulator, which is best described as “unusably slow”. It’s a well-documented complaint, for example slow android emulator on stack overflow as well as emulator is very very very slow on Android Developers. At the Motorola Developer Days, one of the first things the Motorola folks said was “we know the emulator is slow – slow, slow slow. Slow.” It’s a complaint dating back to 2008, and it’s even worse with the latest Honeycomb emulator, and developers are getting seriously frustrated. It doesn’t seem to matter what type of hardware you’re running on – it’s consistently slow no matter what your host computer’s spec.
One of the first things you notice when you switch from Android development to iOS or WebOS is the ‘crazy speed’ that the emulators run at on those platforms, i.e. a speed close to normal or usable.
What’s most egregious about all these problems is that they are ‘meta’ problems: issues with using the platform itself, rather than problems encountered as a result of writing code for the platform. They are problems that will most likely impact a large proportion of developers and quite a few users. They are problems that could and should have been fixed, but have been left to languish for several years.
I know all platforms have problems. Please don’t think I’m picking on Android because of my $dayjob (this is nothing to do with that). I plan to give several other platforms equal treatment – I know few things are perfect in this world, least of all the efforts of mobile software providers. But when you are trying to build developer mindshare and take a slice of the market, you need consistent unremitting attention to detail coupled with relentless focus on fixing the small, broken things.
Because ultimately the small broken things can very easily add up into one big horror story.