Android vs iOS development

January 1, 2014

preface

This post was in my draft for a long time, it is not finished and will be not updated. However, it can be useful as it and still reflect what I think today.

Versions were:

  • iOS 6 / XCode 4.3
  • Android 4.2 / Eclipse 4.3

Hi you crazy developer,

I'm going to talk about my personal experience in mobile development. I'm not going to talk extensively about my background, but I must introduce myself; My name is Jerome, and I'm a 27-year-old developer, I started programming at 12 (as everyone isn't it?) My predicted language so far, and you can blame me for that, is PHP. I'm a backend developer for websites, but I'm getting on a new track, native mobile apps. That what I'm going to talk about.

As you may now -because you're on that website- I already did some mobile development. I did Citroon for Android and also made a game called My laboratory on iOS and Android. These apps come with amazing design and illustration brought to you by Damien Balada and Julie Escurat. I did other, non-noticeable, apps to tests things or play with friend.

So let jump in.

I'm making these blog post to compare objectively what it feels to develop on iOS and android, DISCLAIMER: I'm not a fan of these platforms, I know it's hard to trust but still.

Languages

As I explain before, I come from the PHP world, so I'm more familiar with language structured as C. I did study C, C++ and Java also. So that was not difficult for me to do some Android. I'm sure you know that Objective-C comes from C too. But let's be honest it doesn't look alike. I learn iOS through the Sandford online course, and it was really easy. The main difficulty was to recall concept I learn in Java (or whatever) in Objective-C. Maybe it's the other way around for you.

That's what I get:

ANDROID IOS
function/method message
traits categories
interface protocols
final __block
callbacks blocks
adapters delegates

Of course Objective-C comes with header files, but it doesn't change things. I'm a tech guy so as you can expect this is some code.

Now, let's talk about a very important point when you start with a language/framework,

Documentation

As you could think, because Android is open source and cheap there are plenty of resources on the Internet. As you could think, because Android is open source and cheap the quality is not very high. You will find a lot of tutorial talking about this or that for Android, giving example with code of a certain quality. It still is helpful in the beginning, but rapidly becomes noise in your search. Of course Stack-Overflow is helpful to get the right implementation as the community correct errors. In the other hand, and may be because iOS isn't open source neither cheap, tutorials for iOS are rarer.

On the official documentation side, I think Google wins. Its documentation looks cleaner (IMHO) and it counts! But it comes with lots of examples and I never need to over search for something. All was easy to find. The Apple documentation is complete as well. But harder to navigate through.

Both give example application, and it's good to look at.

To conclude, I'll say that with my background, and I think pretty much objectively the winner is Android on this one. The language is closer than what I know, and the documentation is better.

About IDE

In this I'll talk, about IDEs. I'm not going further than the officials ones, because IMHO a beginner as me won't check something else until he's fully fluent with the framework.

I already can tell you that it's a full win on the Apple side. But let's see.

Eclipse (OMG) for Android.

Android choose Eclipse, that sounds logical because Eclipse is really well done for Java programming. But the problem I guess, is the 90s look and feel. The UX is horrible, it's really slow and -that not the case any more but the plugin installation was a pain. Of course Google is aware of this situation, and it already proposes a replacement in alpha: android studio. Problem is that this is not stable yet and doesn't allow full stack programming yet. So Eclipse it is.
I just don't like it.

Xcode for iOS.

Apple ships iOS and Xcode together, the software is pretty well polished, but still has some bug or feature missing.
Whatever, it's easy to found its marks, way more than on the Android side.

On both side, the build process is hidden and works well, just click that play button, and you're up and running. Emulator (or simulator, we're getting there) are integrated, as well as real device through USB. These IDEs are a must if you're a beginner, it allows to create a project and work with it very quickly.

When you setup a new project

On Xcode it seems a little faster to setup a project, not mush option or question regarding device version or stuff like that. I'll use a single view app to get the basic setup done for me. Because Android is more fragmented, the wizard on project creation ask for 3 versions to chose, blablabla. Not much of a problem, but it accentuates the fact that this issues exist. In the real world, this problem exists in iOS too and is IMHO more vicious due to the fact that developers seems less aware of it.

Emulators

On this on Android is not even playing. You have to know that both platform come with a emulator to test your code on your computer. You'll use them in a first time but in the end developing on real device is a must.

So maybe you know that Apple is cheating! But it's a nice cheat. They don't give you an emulator, but a simulator, and the difference is really significant.

As I wrote this was a work in progress, and it ends abruptly here.
check out my website to get useful snippets for both platform :)