This week, I took up porting our Snøg Avalanche Buddy to iPhone. To do so, I had to learn quite some things. This post will touch all the troubles I have encountered and I try to compare it to developing an app in Android.
The first hurdle to take is getting your development machine. Android can be developed in virtually all host hardware. Eclipse is the main IDE used to create Android apps and it is available on Linux, Windows and OSX. Developing for iOS is not so easy. You will need a Mac running at least OSX 10.7 to get to use the latest version of Xcode. Turns out, it is not so easy to get a (second hand) Mac. Luckily I could borrow on old one from somebody. Good thing is that Xcode is free.
Because I come from a Linux (Ubuntu) background, I also have quite some trouble getting used to the OSX user interface. It is not so easy as everybody makes you believe it is. One of the main reasons I switched to Linux in the beginning of the millennium is multiple desktops and I still cannot get my head around the fact that the two other major OS’s still haven’t embraced it. My head just gets completely messed up with so many windows on one screen. But maybe it is just me. Also the shortcuts are different, but that’s just something to get used to, so I won’t bash Apple over that.
Mostly because of historical reasons, the iOS / OSX ecosystem is built around Objective-C. When you come from a C/C++/C#/Java background (like me), you are in for quite a ride. The syntax is based on the early-80s language Smalltalk and is completely different from what I am used to. I won’t go into details, there are many tutorials out there to teach you the language. All I can say is that it all feels very messy and inconsistent to me. I have to admit of course, that I just started out with it, and have over 15 years experience in C and its descendants.
The IDE (Xcode)
Three words: What The Fuck!
This IDE seems to be designed by people that care about looks instead of clarity. There is a lot of clicking and completely incomprehensible windows, icons, etc. I have to connect a button touch event to an event handler by dragging a line? Seriously? There is a separate “Interface Builder” that doesn’t seem to have any connection with Xcode whatsoever?
It could be the tutorial I was following, but it otherwise also doesn’t seem loigcal whatsoever. It could also be that I have to use Xcode 3 instead of 4, because of the Mac I am using, but still. Compared to this thing, Borland Builder is heaven.
First remind that I am completely new to both Macs and Objective-C, and have quite some experience in Java and Linux when I started Android development. But, I remember the first “Hello World” app in Android to take me less than 25 minutes, from downloading and installing the IDE to having it on an actual, real device. Xcode took quite some time downloading and installing (10 GB for an IDE and SDK? Second WTF), not to mention getting some app to run. In the emulator. Even though the iOS version on my iPad is newer, Xcode wouldn’t accept it as a development device. Android has no problems at all like this.
The Winner: Android Development
I am going to give this round to Android. Developing for it really is a breeze. The IDE installs and runs on all modern OS’s, is clear and concise and easily supports all devices. Getting to use Java is very nice as it is (in my opinion) the cleanest OOP language out there.
Let’s see what the other rounds may give.