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.

  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.

    Share
    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.

      Share
  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.

    Share
    1. 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.

      Share
  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

    Share
    1. 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.

      Share
      1. Hamranhansenhansen Friday, March 25, 2011

        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.

        Share
  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.

    Share
    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.

      Share
  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.

    Share
  6. What’s your opinion on Phonegap?

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

    Share
  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.

    Share
  9. 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.

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

    Share
  11. The comparisons are interesting. Still, if you are determined to be an awesome developer, you won’t let Apple’s cost of entry or Google’s platform configuration stop you.

    In the end, the battle between the platforms is going to be for high quality devs.

    Share
  12. Another advantage of Android is that you can develop with other IDEs like IntelliJ or Basic4android. Each environment has its own advantages and disadvantages.

    Share
  13. Anyone that is a developer is highly likely to already have a PC that is running some version of Windows. So the cost of a Mac Mini for Android development shouldn’t be there. Most people don’t own Macs and so would need to buy one in order to make stuff for IOS devices.

    Apple is basically charging a developer the cost of the machine + $99/year.

    Share
  14. The emulator on the Android SDK is so slow on Windows it is practically useless. It has been this was since the SDK was first released–why Google does not make it a top priority to fix the multiple deficiencies in its development platform is beyond me..

    Share
  15. “Since Xcode 4 was released, the iOS SDK is no longer free for developers.” is not true. Anyone can register for free and download XCode 3.2.6 and iOS SDK 4.3 –which can still be used to develop iOS apps. When you are ready to sell on the app store, that’s the time you get the $99/year license.

    Share
  16. Mac Dev Notes: iOS and Android Development Compared http://t.co/0izsX0Q1

    Share
  17. RT @HubaSolutions: Mac Dev Notes: iOS and Android Development Compared http://t.co/0izsX0Q1

    Share

Comments have been disabled for this post