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