Last month our mobile app development team put the latest builds Android and Apple’s mobile operating systems up against each other from a user’s perspective. Today we do the same, but place Apple’s iOS 7 against Android’s KitKat in the ring to duke it out from a development point of view.
Without mobile developers working to build compelling and engaging applications for these mobile platforms, even the most polished operating system will suffer.
That said, despite the differences in the two competing platforms, there are three basis aspects that virtually all developers seek when developing apps:
- Development Ease
- Target Audience
No one wants to face a blank screen with nothing to assist with the coding save a few well-paged through books. But that was pretty much how developers worked back in the day. But just as the form factors of devices has evolved from desktop to laptop to the present with tablets and smartphones, so too have our development tools. But there are some distinct differences between the iOS and Android environments.
iOS takes great pains to offer users a highly intuitive operating system for its users, and the same ease of use follows in the development environment, Xcode. Xcode 5, the most current version of the tool, which is a snap to download and install. As Apple has control of both the hardware, the operating system and the development tool with Xcode, developers have a controlled in which to work. Many elements can be implemented with a simple drag and drop, and then modified as needed via Objective C.
Android developers have some elements that are a bit more complicated. Unlike Apple’s closed ecosystem, Android’s Java-based system is open to a wide variety of development IDEs, like Eclipse, Netbeans, Visual Studio and more. While the developer benefits from many choices and can pick based on their personal preferences, that wide selection means that there may not be one set way to accomplish a task. iOS wins for simplicity, but Android gets the nod when it comes to having more available options.
In terms of app performance, garbage collection and memory management should be a consideration. iOS offers more control as it allows a developer to determine when an object requires memory allocation.
For Android, the Java solution is to have it all done behind the scenes when the Java Virtual Machine (JVM) dictates it. The Java garbage collector attempts to find objects with no references being made to them, thus allowing for reclamation; this reclaimed memory may then be overwritten with new information as needed.
If a developer is looking to dabble in both worlds, the transition needn’t be difficult. While Java has unique aspect that Objective C does not and vice versa, the commonality is that both are object oriented languages with similar rules and terms. In both cases, it will always be helpful if the developer has a good grasp of basic programming fundamentals.
If the goal is to produce an application that could potentially get in the hands of as many users as possible, then Android makes for a compelling choice. Android-powered devices comprise 80% of the market. But, with that said, that isn’t 80% using KitKat – that’s 80% using any of the many iterations of the Android OS – Jelly Bean, Ice Cream Sandwich and Gingerbread are all much more widely installed.
That being the case, if mass adoption is the goal, it behooves the developer to craft a solution that will work on as many of the Android iterations as possible.
On the other hand, Apple reports that as of this writing 78% of iOS devices have been upgraded to iOS 7, the latest build of the operating system. That means iOS developers are able to code for the latest and greatest and can be well assured that the vast majority of the target audience will be able to run the application.
There are a number of reasons for why iOS users seem keen to adopt the latest version of the OS – part of it is because many Apple devotees tend to upgrade their hardware with each release of new product. We’ve all seen them line up in droves to be the first to get their hands on the newest iterations. But also, Apple makes it very easy to upgrade the software on legacy devices. Connect the device to iTunes, and it may well inform you of the availability of an upgrade. With a few clicks the upgrade process begins.
On the Android side, there may be hardware limitations that preclude an upgrade, and the associated Android carrier may not be offering an upgrade to users of specific devices. Instead they might require that the user purchase or acquire a new device – and the new service contract – to gain access to the new operating system. This is likely why KitKat is only on 1.4% of devices as of this writing.
If your development goals are to make money from app sales, then you should focus your energies on iOS. The fact is that iOS users seem willing to part with real money to gain access to premium apps, while their Android counterparts are happier with free apps. This could be the nature of device adoption.
iOS users tend to pay a premium for their devices, while Android users are often offered free or very low priced devices from their service providers. So it could be that Android users are more inclined to save money on apps just as they did with acquiring the device. Meanwhile iOS users seem to be fine with paying a fee for what they feel is a premium device and the applications that they wish to run on it.
This isn’t to denigrate Android users – but from a development point of view, if you’re seeking to get people to pay for your work, it should be a consideration.
When we look at the three key areas developers need to consider, iOS looks to be a better option if the target is one over the other. Apps are easier to develop with Xcode 5 vs. Eclipse and the potential to generate revenue is greater with apps in the iTunes store vs. the Google Play store.
Still, there are a vast array of Android users out there, and they will want apps. But instead of producing apps that would be up for sale, the Android developer might be better off by developing an ad-supported application, and deriving income that way instead.
What are your thoughts? Have you decided to develop apps for both platforms or just one of them? What have you experienced along the way? Let us know in the comments section below.