Mobile app development is one of the most lucrative fields for developers today. With Android and iOS accounting for over 95% of the mobile market, virtually all mobile developers find themselves choosing between the two platforms for their projects. This article discusses the key comparisons when choosing Android/iOS for your project.
Even with Swift's less verbose syntax, iOS still shares a similar learning curve with Android. Both share a similar project structure and are MVC like in nature. This means once you understand the relationships between the views and business logic you'll more easily transition between the two platforms. Similarly, once you get familiar with either Java/Objective C you will have an easier time exploring the other side.
Swift/Objective C handle null pointer exceptions more elegantly than Java. This means your app won't crash if your code produces a null value. With Java, null pointers will crash your project without clearly revealing their roots. This can slow down development time considerably as errors are harder to track with Java. Conversely, you are able to catch things like memory leaks earlier with Java's stricter debugging.
View rendering is another key difference. While XCode has a robust interface builder with drag and drop capabilities, Android relies more on XML for layouts and rendering. If you're familiar with CSS, then this actually isn't too bad. It's just a matter of learning Android's version of things like padding/margin and applying them to your layout 'components'. However once you've experienced the ease of dragging a UI element onto a screen canvas and having all the code prepopulate, it will be tough for you to appreciate Android's XML approach..
Research has shown that, while more people have Android devices than iOS devices, the iOS App store generates around 75% more revenue that Android's Google Play store! This means that iOS users are more willing to pay for apps than Android users. If your an independent app developer looking to make good money, iOS may be the platform to hone in on.
Cross platform development is always important to developers who want their app running on as many devices as possible. With iOs development, your developing for considerably fewer devices than Android. XCode's interface builder also makes views inherently more responsive than Android. This means it can take more time to make your app responsive for Android than iOS because you have more potential devices running on more potential versions.
A bi-product of Android's more fragmented environment is it's ability to control the device it's running on. With Android, you can tap into app sharing, launchers etc. While iOS does give you a more performant 'sandboxed' environment, it severely limits your ability to interact with the native technologies of the device. Sure you can interact with the camera feature etc., but your interaction with other apps / functionality running on the device are severely limited with iOS.
Getting your app into the store is much more painstaking with iOS. First you have to register as a developer which costs $100 annually. This contrasts greatly with Android which only requires an initial $25 fee. Additionally, you have to download certificates and link them with your account to become an 'approved vendor' with iOS. You submit your builds and they are reviewed between 2-7 days. Sometimes your apps can get rejected with vague reasons and this gets frustrating as you have to repeat the approval process each time you submit a build.
Android is cheaper and less strict in terms of publishing. You submit a few screen shots, pay the fee and your app will appear live in the store a few hours later. It's not the most enjoyable process, but when compared to iOS will seem like a breeze!
Both iOS and Android share similar learning curves but for different reasons. If you've worked with Java before, then getting started with Android will be easier than iOS. If you have more front end experience, then Swift may make iOS a better place to start. In general, iOS app development is more lucrative from a revenue standpoint but Android allows you to reach a larger audience and faster.