When I first heard about android I was excited but also a little confused. It seemed like a recipe for a “mobile windows” – the argument that most Mac folk use to explain why we don’t like windows is that it is itself not a bad thing, but that its need to support hardware that isn’t defined by the people writing the OS is what causes it problems. I remain confused about this in Android, but thats another post. I downloaded 1.0 or something like “Android SDK Labs Google Invite Only Invites to Send did we mention Labs?” version of the SDK about two years ago and got started. Two days later I deleted it and said I’d come back once it seemed to make sense. Once 2.0 came out I decided to give it another shot.

This time I actually like it way more, eclipse has only killed my kernel twice, and I’m getting a fair amount of app development in. There’s just one problem – I’ve got a professional background in Java and in Objective-C. I’ve done programmatic layouts and also Interface Builder (which makes more sense to me) layouts. Android’s copious use of xml definition files for layouts (yes yes, i know one can design them in code) is really complicated to understand at first.

If you want to get started quickly in Android your choices are sort of boring. A “Hello Android” tutorial which just puts some text on the screen of the emulator (which for some reason takes about 2 min to launch for the first time on my MBP) and thats pretty much it. There are also view tutorials. These are where you get into the cool stuff like tabbed interfaces and maps. Maps seemed like a natural for me (hey, ever heard of RouteShout?) so I jumped right in. My decision to go from “Boring Text on Screen” to “Tabs with Maps and Data” in one step is where I learned some interesting things about android as a platform.

  • get a maps API key in a way that is new to you
  • Change your Build Target
  • Edit the Application Definition File
  • Change your default Activity (or in my case, make a new one, and then deal with the new one in the default one)
  • Follow an odd circular explanation of how this all works
  • Add a layout file for the map
  • Change your layout file for your tab interface
  • Add a string in the strings file
  • Find some 404s in the Docs
  • Yell at eclipse for a while for marking your XML files as all “warning”

Eventually I ended up with something like a map under a tab…and I got that feeling that everyone gets the first time they complied and ran an iPhone app in the emulator.

I know, I know I’m being pretty hard on Android here for comedic effect. I’m not nearly experienced enough on this platform to have more than this basic “Awww man, it wasn’t super simple for me to do something totally awesome? WTF?” attitude mainly because it hurt my pride a little bit to be so lost for a change.

I’m looking forward to finishing this app I’m working on and getting it out there for people to try on devices. I have sort of a sick anticipation to see how it works on different hardware – a feature unavailable on the iPhone for obvious reasons. Thats really what draws me to Android – the chaos of writing an application and waiting to see what its like once someone uses it. The environment is controlled to a point, but it gets really exciting when that control is lost.

I do plan on talking more about Android as I use it more. I think there’s a lot to learn about the API, but more importantly, how it reacts to different users and different hardware. Who knows what someone’s phone looks like to them – that’s where app development gets interesting for me.

Oh also, if you’d like a step-by-step on how to do this, I will happily post one here. I’m just not sure its particularly interesting to anyone who isn’t a totally raw newbie.