It's been years since I did any mobile development -- and much of what I’ve done has been with mobile app dev platforms like Appcelerator.
The last time I did anything substantial was some hacking on the Android client for Open Remote back in 2008. At the time, the APIs weren’t bad and the overall development experience wasn’t too tough. My main issues related to inexperience coding mobile (for example, how do I pass data between activities?).
I assumed that Android APIs would have improved by now. Good gosh was I wrong.
The documentation for Android has exploded into a mess. Also, a bunch of it is essentially out of date both on the Google site and on various community sites. It's like going to a dilapidated town where the gas station advertises a gallon of fuel for 88 cents and you realize the place has been shut down for about 18 years.
Yet people are writing millions of Android apps. How come no one seems to be doing the work of keeping the documentation up to snuff?
OMG, so many files
It used to be there was an API way and an XML way to do almost everything in Android. Maybe it's still like that, but it isn’t obvious.
Today, to do nearly anything you have to edit at least two files and probably three. With the new security model you not only have to specify what permission you want in the XML manifest but also in your Java code. By the way, none of the tutorials (c'mon, I only wanted contact data to display!) actually tell you this.
Did you really copy Sun?
The APIs themselves seem like they were designed by the Java Community Process. When this all started, part of how Google got itself in trouble was by taking the best of Java and making an API that tasted a bit more like Ruby than like Java.
In the modern Android I taste that factory-to-create-a-locator-to-create-a-factory-to-generate-a-locator-to-find-a-singleton pattern that the Java Community Process and Java EE was so fond of creating. Combine that with the ton of XML and it gives me gas.
Speaking of that security model, what was the point of making me write it twice? In fact, half the API changes I’ve noticed don’t seem to have any great purpose. Holy crap, it's J2EE!
Whine: I don’t want to write Java anymore
I guess part of my issue is that I don’t really want to write classic Java anymore -- so much typing, so little reason for the typing.
I still love my Android phone. My girlfriend, on the other hand, swears by her iPhone and uses stuff like Find My Friends, which creeps me out. I mean, Tim Cook blocked me on Twitter for retweeting an article about Apple’s labor policies in China. Maybe I’m paranoid, but I don’t want Apple to know where I am at all times.
I’d rather tell Google where I am at all times (like it wouldn’t be able to extrapolate that anyhow). I can’t wait to grab one of the new Motorola Force Zs and buy one of those battery modules, the boombox, and projector. (Someone asked why I’d need the projector and I said, “To project things!”)
Apple’s move to create a new language looks a bit less cracked to me now. Writing Android stuff feels like writing J2EE in 2002. I have XML buttache.