20 Comments

Summary:

Mobile development currently has but two proven roads to success: Android and iOS. Each road has its own challenges and rewards. The best course of action might be to do both, but if you have to choose, here’s a guide to getting started with either platform.

iOS vs Android

There is no better development platform than OS X today, and there is no hotter development focus than mobile right now. And mobile development currently has but two proven roads to success: Android and iOS.  Each road has its own challenges and costs, and its own opportunity and rewards.  Sometimes you don’t have much of a choice which road you take, and more and more often, doing both is best. But if you do have to choose, check out this comparison of the startup costs involved in each, and what you get in exchange for your investment.

Barrier to Entry

With iOS development, the initial startup costs are perceived to be high. Very high, in fact. To be fair, the costs are not that bad when comparing Apples to Apples.  Most will argue that since you can only develop iOS apps on a Mac, you must first purchase a Mac before development can begin.  Of course, you must also procure some sort of computer to start developing on the Android platform as well.  It is however true that Android development can be done on Mac, PC or Linux machine. And there’s the rub. So at least in this regard, Apple does get paid up front for every prospective app that is in development before it ever gets developed, while Google does not.

Accessing the SDK

Each platform has its own software developer’s kit (SDK).  Since Xcode 4 was released, the iOS SDK is no longer free for developers.  You must now be a registered iOS Developer on the Apple Developer Connection (ADC), which costs $99 annually.  Alternatively, you can choose to install Xcode 4 through the Mac App Store for a mere US$4.99.  The difference is that with the App Store version you cannot deploy your software to physical devices for testing, you cannot access the online developer forums, and you cannot submit apps to the App Store.  Both the ADC as well as the App Store route will require an Apple ID, which at a minimum attempts to identify the individual accessing the SDK.

Android on the other hand is a little more open than iOS when it comes to SDK access.  Not only is it completely free to download, you do not even need any sort of User ID or account in order to access the SDK.  There’s no registration process whatsoever. Just go to the Android Developer site and download the installer.  So not only does Google not gain any revenue from the sale of their development tools, they also don’t have a direct means of ascertaining how many developers have downloaded their SDK.

Installing and Updating the SDK

For the iOS SDK you get everything you need to get up and running in one simple installer package, from Xcode and the Simulator, to Instruments and the SDK itself.  Keep in mind that this little bundle weighs in at close to 4.5 GB.  Not a small download even by today’s standards.  And when it comes to updates, you basically have to download and reinstall with every new version. No incremental updates or patches.

Getting started with Android is a little more confusing at first.  You download what you think is the SDK, but it is actually just the starter package.  But before you get started, you must ensure that your machine meets the minimum system requirements.  You might then have to install Oracle’s Java Development Kit (JDK) when Apple stops shipping OS X with Java pre-installed.  Once the starter kit is up and running, you then choose which target platforms and components you plan to utilize.  Then it’s time to download and install Eclipse and the Android Development Tools plugin for Eclipse.  Don’t have Eclipse? No problem, it’s free too.  Now before you get started, you may want to take a look at some of the additional SDK Tools that are available.  Not to mention the fact that if you are on Windows, you may need to install a special USB driver in order to deploy to a device.  And if what you really wanted to do was develop native android apps, then you will also need to download and install the Native Development Tools or NDK.  The perceived upside is that each component can be updated individually.  The downside is that you need to check for updates of each component separately.

Target Devices and Release Schedules

Apple has been quite methodical when it comes to releasing not only its iOS devices, but also updates to the iOS platform itself.  Developers can accurately predict exactly when updates will be coming, and plan accordingly to ensure that their apps will be stable and fully functional on the next major release.  And since the devices all come from one major manufacture, the number of test devices that one needs to maintain is a small one.

Google has little to no control on when updates will be pushed out to the devices that are already in consumers hands.  Releases of the Android platform itself have been sporadic and at times very unpredictable.  And with the latest major update of Android for tablet devices, the definition of “open” has changed as Google has announced that they will not be releasing the sources in the foreseeable future.  With a capable smart-device platform like Android being free to manufactures to embed, deploy and extend, it should be no surprise that there are hundreds of devices on the market that all support Android.  While one may be able to adopt a much tighter and proactive testing and update strategy with the iOS platform due to the methodic nature of releases from a single source, with Android a much looser and more reactive testing and update strategy is probably best.

Development Tools

When you do start developing on both platforms, what you will immediately notice is the maturity of the iOS development platform compared to that of the Android platform.  With its graphical designer and assortment of testing tools both in the simulator as well as on the device itself, you begin to see that you really do get what you pay for in this case.  And the development cycle to build, deploy and debug in the simulator is very, very fast.  The focus of Xcode is clearly to get out of the developer’s way and provide the necessary tools to quickly and easily create high-quality apps.

With the Eclipse Plugin for Android, you will notice that you do not have any sort of graphical designer when developing the layouts for your Activities.  There are also not nearly the same breadth and depth of profiling tools available.  What is most annoying is that the emulator requires configuration and can take quite a long time to initialize.  This results in longer development cycles.  Even once it is up and running, the Android build, deploy and debug in the emulator cycle is nowhere near as fast as it is in Xcode.  But keep in mind the priority of Android is to be open.  The collaborative nature of open source does not always lead to consumer satisfaction or turnaround time being the first priority.

Learning Experience

What is maybe most surprising is that the learning experience on the two platforms is also very different.  Both platforms have that extreme programming aspect of learning, where you try it in code first, then search on Google for a better way to get it done.  This unstructured part of learning a new development technique is common across all languages and technologies.  With iOS however, there is an alternative and much more structured path one can take as well.  Through Apple’s own iTunes University, Stanford has been creating and maintaining a iOS development course that anyone can take online.  Additionally, Apple has provided the WWDC technical presentations to any registered ADC developer through iTunesU as well.

iOS and Android development compared.

Conclusion

The differences between iOS and Android development are as different as night and day.  From the ability to download and install the SDK, to the strategy one employes when testing apps, to the way one ultimately learns how to develop.  Down to the last detail, the two platforms differ in both philosophy as well as technique, so consider carefully before deciding which path you should follow.

You’re subscribed! If you like, you can update your settings

  1. What a tainted point of view LOL.

    You slam google for not charging or making revenue on the developer and praise Apple for doing the exact opposite. Screw Apple.

    1. I am ex-Borland, so I do favor quality tools. As far as truely integrated development evvironments are concerned, Xcode 4 feels more Borland than prior versions of Xcode. Even when Xcode was completely free, there was still a lot more to offer developers.

      From a fresh start out if the box, there are just too many hoops to jump through to get the simplest of hello world Android applications running in the emulator.

      The point was not to slam Google for not charging for the SDK.

  2. I’m sure the $4.99 iOS SDK is only if you want Xcode 4 and aren’t a $99/yr paid developer.

    You can still sign up for free and download Xcode 3.2.6 and iOS SDK 4.3 with it’s simulator testing.

    1. Geoffrey Goetz DG Friday, March 25, 2011

      Agreed. But I do find it more than a little interesting that each platform is so unlike the other. Almost polar opposites on all counts.

  3. Great story, but it seems the chart is a little heavy on pricing.

    From your math, all things being equal, the iOS route is $300 more expensive than Android (albeit less fraught with disaster).

    However, in reviewing my own credit card receipts, I didn’t spent near as much. There’s a $99 annual cost for the iOS SDK, that’s it. You only need the additional $99 SDK for Mac OS X development. Then, if you want to develop for Lion, that is included in the cost of SDK. So, you only need the $4.99 Xode 4 if you’re still using Snow Leopard and want to develop for Lion.

    So, total cost to develop for iOS 4.3 is $499 for mini, $99 for iOS SDK…

    Piko

    1. Geoffrey Goetz Piko Friday, March 25, 2011

      Perhaps it is a little heavy on price, but when you start to talk on choosing to learn either iOS or Android, the topic always comes up. In these same discussions iOS development costs include buying a Mac, whereas Android development does not include the cost of a computer of any sort. I find that odd. But then again, I own only Macs.

      1. It’s the way the chart is written. I suggest you change it to say “included in $99/year” so it is clear that the $99/year buys you multiple things.

        Also, the cost of the Mac is not really an issue for many because developers typically buy a high-end PC, not a $349 netbook. Apple’s prices are competitive when comparing high-end to high-end, and better in some cases. And many developers are already on Macs, especially Java developers. Remember that Google itself is over 75% Macs internally. Windows PC’s are almost all very low-end machines over the past 5 years. Web clients only.

  4. Hamranhansenhansen Friday, March 25, 2011

    On your chart, under language, it should say C/C++/Objective-C for iOS. All 3 compile in Xcode. Many iOS apps were written on another platform, before iOS even existed, in C or C++.

    Also, the chart looks like I have to pay $99/year multiple times, and $4.99 for Xcode multiple times.

    1. Your observation is correct. You do not have to pay $99 multiple times each year to benefit from ADC’s program. I was looking for a way to point out that there are certain features common to both iOS an Android, that require access to Apple’s premium ADC program.

      Technically speaking, Android also supports C/C++ with it’s NDK. I doubt seriously that Angry Birds on Android was ported to Java. The difference between the two is Objective-C an Java.

  5. Just to follow up, you can still download XCode 3.x for no charge, to develop both for iOS and MacOS X, using a free developer account.

    You still need a paid developer membership to be able to test on a physical iOS device or to upload to either the iOS store or the Mac App Store.

  6. Phonegap user Saturday, March 26, 2011

    What’s your opinion on Phonegap?

  7. agree with multiple comments about your price table being confusing. please modify it to say “in $99/year bundle” or something similar.

  8. I am a developer that dabbles in both eco-systems.

    Interesting comparison, but I disagree on your assessment of the developer tools for Android. I find the level of integration with the Android SDK to be quite good (ie, not primitive) using Eclipse and the Android plugin. And there are graphical views of the UI available via the plugin when configuring the UI layout via XML.

    Undeniably, the Xcode environment is excellent with its level of integration and productivity features for developers and I must say that I do really enjoy the Xcode eco-system. Android being a collection of open source tools takes some configuring but once setup properly (which might be a deterrent … but never to a true developer!) can be pretty darn good and very productive as well.

    Regarding languages – from my perspective Objective C is a more arcane and difficult language than Java. My programming background is C / C++ / Java and I find the syntax and semantics of Objective C to be just a bit “off-putting” at times. To me Java is the more “fluid” language to develop in.

    Lastly this discussion should probably include some mention of what issues/obstacles one would face when releasing to the respective App Stores / Market. This one point might be decisive in some way, as each destination has its pros and cons.

    I am using Xcode 3.2.6 and Eclipse 3.6.2 w/the 10.0.0.x plugin/SDK on a Macbook Pro running OS X 10.6.7.

    Thanks for an interesting article – I really hadn’t seen something like this before.

  9. Bertrand Griezeltjes Saturday, March 26, 2011

    The author of this post forgot to mention developing using Adobe AIR, which deploys to iOS (via a cross-compiler) and to devices that support AIR natively, like Android devices and RIM’s playbook.

    Publishing with AIR only requires the free FLEX SDK and the free AIR SDK.
    You can then publish your app to multiple platforms with a single click.

    From a developer’s standpoint things couldn’t be easier.

    You might argue that a cross-compiled app for iOS can’t be as efficient as a natively built app, but tons of AIR apps in the app store prove otherwise.

  10. Now a days mobile brands also giving some features like apple…is the good as apple?

Comments have been disabled for this post