08Apr
By: vincent On: April 8, 2013 In: Blog, Featured Comments: 0

When I started out to explore mobile development, I was immediately drawn to the iOS mobile platform because I owned several generations of iPhone models. iOS seemed perfect to me because I used a variety of iPhone apps that inspired me to investigate mobile development. However it wasn’t until I delved further into mobile development that I quickly realized as a developer, that there was more to the basis of my preference than just the mobile device in my jeans pocket.

How To Effectively Compare Mobile App Platforms

Some readers might already be aware of my master’s project, “Creating Multiplatform Native App Support for Locating H1B Jobs”. The project investigates the differences between the iOS and Android platforms from a developer’s perspective. My perspective was informed by the app I developed and deployed on both iTunes App Store and Google Play. Developing for both platforms gave me insight into questions a programmer needs to typically ponder over before making when assessing the pros and cons of a given platform. Some of the questions also originate from selected conversations with my classmates as well as discussions from my job interviews with top companies like Amazon and Compuware.

Learning Curve and Marketing Dominance

These days it seems you can’t turn around without running into someone with either an iPhone or an Android mobile device. It is probably not surprising that Android and iOS accounted for 90% of all smartphone sales. Although Apple seems to be selling iPhones at a fast pace, Android continues to dominate the market. Android is leading the market sector with 47% share sales while iOS is breathing down the neck of Android with 43%. [1] Therefore we can confidently say Google’s Android is in high demand today, closely followed by Apple’s iPhone.

Aside from that, the learning curve for Android development is relatively less steep than iOS. For me, my prior background in Java programming made the transition to Android development much smoother. I was able to transfer my expertise in pure Java coding to working in the Droid platform. However iOS was rather challenging. Without any prior knowledge in C programming, self-instructed lessons in Objective-C require a high level of dedication. The iOS lectures videos available on Stanford iTunes can be very condensed. As a result, I occasionally consult an alternate, basic training material “Beginning iOS5 Development Exploring the iOS SDK”[2] authored by Mark et al.

Similarities and Differences in iOS & Android UX Design

The user experience designs of both Android and iOS are alike. The touch gesture controls are very comparable. For instance certain gestures such as tap, pinch, swipe, slide, flick, hold and drag, and double tap offer identical actions on both iOS and Android devices. Although the design treatment and UI placement might vary, basic components such as buttons, switches, checkboxes, pickers, tabs and sliders also have very similar functionalities in both platforms. Moreover, for both iOS and Android platforms, particularly in task-based applications, it is common to see hierarchical tree-based menu format where user navigates the app through a series of lists to dive deeper into specific information within the app.

However, there are some differences in the user experience designs of both platforms that strongly dictate development in either environment. The iOS smartphones comes in 2 screen sizes and resolutions. Android, on the other hand, has 4 generalized sizes and resolutions (densities). Furthermore, the tab navigation placement in both platforms is complete opposites. The tab navigation of iOS is represented as a tab bar at the bottom of the app. Android suggests tab should be placed at the top of the app.

Pros and Cons of Each Development Environment

Firstly, let us review the advantages of both development environments. Xcode for iOS platforms has storyboarding, which makes development very easy. The storyboards are nice for prototyping. The use of storyboard segues helps to identify navigation/modal relationships.  Xcode also has a user-friendly Model-View-Controller (MVC) oriented organization. The emulator for both Android and iOS platforms allow you to conveniently test apps on a device from the comfort of your computer.

Unfortunately it could be debated that as storyboards expand, it gets difficult to keep track of the navigation relationships within the app. It almost seems like a “spaghetti” code and could get a little frustrating. The Eclipse emulator could be extremely slow to start up. At some point, it maxed out my computer RAM. When an emulator starts, it takes quite a while for the apps to also load. A quick fix around this is to have an Android device if you intend to develop efficiently. Sadly, with Xcode, developers need to register their device before they can test on an iPhone.

The Application Deployment Model Between Apple and Google

Google Play developer’s account costs $25, which is a one-time fee. However the iTunes App Store charges an annual fee of $99. Also, publishing an app on Google Play is very easy. Once the developer completes development, he simply uploads the apk file(s) and instantly publishes the app on Google Play. iTunes App Store on the other hand has a very tedious review process. A developer typically submits the binary files for review and approval by the App Review Team. This review process usually takes approximately 8 business days prior to an official launch of an app on the iTunes App Store. Finally, Android developers have a variety of deployment avenues such as Amazon App Store for Android and AppsZoom, formerly AndroidZoom.

Conclusion

Personally, the choice between the 2 platforms, iOS and Android, would be a challenge. To some degree they both have unique strengths and weaknesses. It is safe to say that no one platform is a universal solution. I am a huge fan of the Xcode storyboards. For me, the simple drag, drop is fantastic. However, as a student, the $99 annual fee is an expensive cost especially when my app isn’t monetized. On the other hand, Android development makes things easy for developers just like me to deploy apps without a rigorous review process. My proficiency in Java has made the Android platform very appealing to me. But the only thing that bugs me is the complexity of manually specifying relative layouts when I drag and drop UI components on an Android canvas or layout. If I had to pick one at the end of the day, I would base my choice on the best tool that can help me accomplish the job or task I have been assigned.

[author] [author_image timthumb=’on’]http://masl.cis.gvsu.edu/wp-content/uploads/2013/04/samv-profile-picture.png[/author_image][author_info]Vincent Sam (aka Kobby) recently graduated with his MS from Grand Valley State University. This article was based on his experiences writing the H1B Jobs app on both the iOS and Android platforms. You can download both apps from the iTunes App Store or Google Play. Vincent currently works as a mobile app developer at Compuware in Detroit, MI. [/author_info] [/author]

References

[1] Kim, R. (2012, January 9). IPhone Breathing Down Neck of Android in U.S. Retrieved December 14,
2012, from GigaOm website: http://gigaom.com/2012/01/09/iphone-breathing-down-the-neck-of-
android-in-u-s/
[2] Mark, D., Nutting, J., & LaMarche, J. (2011). Beginning iOS 5 Development: Exploring the iOS SDK.
New York, NY: Springer Science and Business Media New York.

vincent