Posts

Android vs. iOS from a Developer’s Perspective – Part 1

Development Environment and Project Setup

This is the first post of our five-part series on Android vs. iOS development from our microProduct Lead, Mark Oldytowski.

Android vs. iOS, the debate that stirs the same emotions as the RedSox vs. the Yankees, Ali vs. Frazier, and South Park vs. Family Guy. Everyone has a side, and everyone will defend it until the bitter end.

Whenever a coworker asks the question “Which platform do you prefer developing for: Android or iOS?” I pause for a few seconds, and then rattle off a few negative remarks about whatever is aggravating me about the OS I’m working with at that particular time. This never actually answers the question for anyone involved, just more of a way to push the decision off to a later point. That point has finally come, so it’s time to do some real soul-searching into the Android vs. iOS debate.

This blog is the first in a series that takes a look at the pros and cons when developing mobile apps for two major platforms – iOS and Android. When choosing between Apple’s iOS 8 with Google’s Android 5.0 “Lollipop” the most recent releases for both platforms, how does a developer choose between them? I’m not going to try to convince you about what type of phone you should buy or where you should release your app first (disclaimer: I have been a Windows Phone owner since release, the best OS that nobody will ever use), but I am going to tell you about the good, the bad, and the confusing things I’ve encountered while developing and releasing native apps for both platforms (check out PubRally and LMK App).

Development Environment and Project Setup

So you are all amped up to start coding up the great idea you have. The first thing to do is grab Xcode, Android Studio, or Eclipse. Oops, you don’t have a Mac? Better head to your local computer store / eBay, or else scratch the idea of working on a native iOS app (the only other option is to do it ‘hackintosh’ style on your PC). If you do have a Mac, you will be greeted by the pleasant experience of downloading Xcode from the app store. There are no headaches and no fuss, just grab Xcode and you are ready to start developing iPad, iPhone, and OS X apps for any version of the OS that is still supported.

With Android Studio (built on top of IntelliJ) / Eclipse, right off the bat you are presented with both the biggest advantage and shortfall of Android development: Options. Options for which OS to develop on, which IDE to use (Android Studio is the official choice at the moment, so from here onwards I will refer to that as the Android IDE), which versions of the Android framework and external tools to download / target and where to put them during development (locally, or with the project), and even which build tool to use for the project. The advantage is that a seasoned Java developer will be able to customize everything about the environment to feel familiar and maximize productivity, but someone new to the development world might be overwhelmed by the options, leading to difficulty in finding support for their particular setup if something becomes out-of-whack (and it eventually will).

Once you are up and running with your IDE for Android or iOS, both provide comparable features, such as built in version control integration, auto-complete, a WYSIWYG UI editor (more on this later), and a suite of testing, tuning, debugging, and deployment tools. One aspect they do differ greatly on is the state of the device emulators / simulators included with the IDEs. Xcode includes a suite of simulators representing every iOS device / screen size that is out in the world right now. They load reliably and accurately represent the hardware through the testing phases when physical devices are not available. Android device emulators, on the other hand, only cover a miniscule subset of devices currently on the market, and take eternity to load (if they ever do). The load times take so long that it’s easier to buy a device for every screen size that you want to support than it is to try to utilize the emulator.

New mobile developers will find getting started with iOS development to be a touch easier than Android sildenafil 100mg tablets. Since Xcode packages everything together, a new developer just needs to download it from the app store, enter the repository link in the open project screen, and they are ready to go. With Android, the process is more involved since the team may choose to use external tools, additional libraries, or custom build configurations that have to be setup before the project will build. It usually isn’t terribly complicated, but does add to the startup time for a new member.

This table summarizes the pros and cons for the development environment including what it will take to develop your first mobile app on iOS and Android.

 

Android iOS
+ IDEs for every OS + One click download, setup, and “getting started” process
+ Robust tools for every scenario + Easy for new members to join the team
– Complicated “getting started” process + Reliable device simulators
– More involved for new members to join – Locked to OS X
– Horrible, horrible device emulators

 

Stay tuned for Part 2, Language and Framework Features.