Monday, June 12, 2017

Mobile Development Platforms

Mobile Development Platforms

When you're first getting started with mobile development, it can be hard to choose a platform. Even worse, each platform has its own set of languages and tools to choose from. So how can you decide?

This tutorial will help you pick a suitable mobile development platform so that you can jump in and start coding apps.

Platforms and Their Market Shares

A platform—an ecosystem of mobile devices, toolkits, and apps—is usually defined by its operating system (OS). The platform vendors are large companies such as Google, Apple, Microsoft, etc. Each one has developed an OS which they license to device manufacturers. Sometimes, they may be also device manufacturers themselves. The device manufacturers design and build the devices (mostly smartphones and tablets) with the relevant OS pre-installed. These devices are then sold to consumers (the users). 

Some basic apps, developed by the device manufacturer or even the platform vendor, may come pre-installed on the device. However, the vendor and the device manufacturer alone are unable to cater to the ever-growing needs of the users of these devices. So they rely on "third-party" developers—like you!—to fill in the gap of supply and demand. 

To support the developers who want to sell apps for the platform, they publish SDKs, APIs and other tools to make app development easier. Also, an official "app store" may be launched, to which the developers can publish their apps and from which the consumers can browse and download them. Thus, a whole app ecosystem is built around the platform.

Currently, Android OS by Google has the largest global market share, with a whopping 86.1%. Apple's iOS has 13.7% and holds the second position. The remaining portion of around 0.2% is shared by all the other vendors combined. This includes Windows Mobile by Microsoft, BlackBerry OS, Tizen OS, Sailfish OS, and Ubuntu Touch. 

The global composition may change significantly in certain countries. For example, in the United States, Android's market share is 53.4% and iOS share is 44.5%, a notable difference when compared with the global market share. If you have a specific market in mind, it would be a good idea to research that target demographic to find out which platform they are likely to use!

CPU Architecture

While all these platforms support ARM CPU architecture, Android extends its support even further, covering x86 and MIPS architectures. Tizen, Sailfish OS, and Ubuntu Touch also support x86 architecture. However, unless you are programming custom ROM chips, the CPU architectures supported by each platform won't affect your choice.

How to Choose a Platform

Your Familiarity With Programming Languages

You'll have to write lots of code as a mobile app developer. There are certain tools that allow you to avoid typing in a text-based code editor—for example, both Android and iOS have drag-and-drop tools for building graphical user interfaces. These won't let you fully use the platform features and capabilities, though. To build complex apps, you'll have to learn to the programming language for your platform.

So you might have to put in some effort to learn a new programming language or master one you already know. All the major platforms use popular programming languages with large developer communities. So make sure you leverage your knowledge and skills in those languages.

If you are familiar with Java, you'll find it easier to develop Android apps with Android SDK (Software Development Kit). However, some advanced app features will require you to use C and C++ skills, with the Android NDK (Native Development Kit). Also, it is now possible to program for Android with alternative languages such as Kotlin.

  • Java
    Learn Java for Android
    Sue Smith
  • Android SDK
    Java vs. Kotlin: Should You Be Using Kotlin for Android Development?
    Jessica Thornsby

iOS requires Objective-C or Swift programming skills. 

  • Swift
    Create iOS Apps With Swift 3
    Markus Mühlberger

If you are a fan of Microsoft's Visual Studio .NET, you'll be happy developing Windows Mobile apps with C#. 

To develop for BlackBerry or Tizen, just learn HTML, CSS, and JavaScript. 

Master QML or Python, and you'd ready to develop Sailfish apps. 

If you love Ubuntu Touch, you should learn QML or HTML and JavaScript. 

Finally, if you already know the web languages such as JavaScript and CSS, you can use these to develop for any platform, with a mobile cross-platform framework.

  • JavaScript
    JavaScript Fundamentals
    Dan Wellman

New programming languages are constantly being proposed and promoted. While it's not always clear whether these new languages have a big advantage over the old ones, it's a good idea to stay tuned for the latest trends. Some programming languages may become obsolete with the introduction of the new ones—Swift is a replacement for Objective-C, for example—and some old languages may find renewed existence, with totally new uses.

Native vs. Hybrid Development

You have two options when it comes to developing smartphone apps: native apps and hybrid. A native app published on one platform won't run on another platform. For example, you can't install an Android native app on an iOS device. You need to publish a separate platform-specific version for that, built using the appropriate development and deployment tools, targeting iOS. By contrast, a hybrid app is a web app developed with HTML, CSS, and JavaScript, and wrapped in a native app shell (or UI). 

What's great about native apps is that they are superior in performance, and they fully utilize the device's capabilities. Also, they are more secure. The downside is that the developer has to maintain several codebases for each of the platforms. Since hybrid apps have only moderate access to native APIs, their performance and the level of user experience (UX) is somewhat lagging behind. The key advantage of the hybrid apps is that the developer could publish for multiple platforms with the same codebase.

If you want to build native apps, you might want to check out our comprehensive courses on getting started coding apps for Android or iOS.

  • Android
    Getting Started With Android
    Paul Trebilcox-Ruiz
  • Swift
    Create iOS Apps With Swift 3
    Markus Mühlberger

Ionic 2 is a popular framework for developing cross-platform hybrid mobile apps. It is based on the Angular 2 web framework. If you want to learn more, check out some of our courses or tutorials.

  • Ionic
    Get Started With Ionic 2
    Reginald Dawson
  • Ionic 2
    Introduction to Ionic 2
    Wernher-Bel Ancheta
  • Ionic
    How to Create a Camera App With Ionic 2
    Ashraff Hathibelagal

Native Cross-Platform Apps

Recently, a new batch of mobile cross-platform frameworks have emerged. These combine the best features of native apps and hybrid apps—they're fast and light and can access the full power of the native device, but they also are coded with JavaScript and other web languages, so a lot of code can be reused between platforms.

React Native and NativeScript are popular native cross-platform frameworks. If you want to learn more about these, check out our comprehensive beginner course or some of our many tutorials.

  • React Native
    Get Started With React Native
    Markus Mühlberger
  • React Native
    Get Started With React Native Layouts
    Wernher-Bel Ancheta
  • React Native
    Practical Animation Examples in React Native
    Wernher-Bel Ancheta
  • Mobile Development
    An Introduction to NativeScript
    Wernher-Bel Ancheta

Your Ability to Learn

If you're a fast learner, then you could easily master the native development track. You'll need to understand basic programming concepts such as object-oriented programming (OOP), and you have to learn to be comfortable with the platform-specific technical concepts—such as Application Lifecycle Management in Android, for example. 

To get started, just download the necessary tools and SDKs from the platform vendor and give it a try. Most of these tools are open source, and there are plenty of code samples and app templates bundled with them to help you get started fast. 

If you are a web developer and want to explore the smartphone development space, then you might be more comfortable starting with hybrid or cross-platform native development. 

System Setup & Ease of Coding

Another factor to consider is the OS platform, and sometimes the hardware setup of the development computer. 

If you want to develop native iOS apps, you won't be able to do so on a normal Windows computer. You need a Mac with macOS, and Xcode, Apple's IDE for iOS development. Similarly, Ubuntu Touch native apps are best developed with an Ubuntu computer. While Android SDK runs on all three major desktop OS platforms, it's always advisable to check if your system meets the recommended specs before you start developing.

App Store Policies & Revenue Sharing

Both Google's and Apple's app stores charge a nominal registration fee. Although both offer the same revenue sharing percentage (70% of sale price at present), developers can, in theory, earn more revenue by publishing on Apple's. That's because the number of apps is relatively smaller and there's less competition among similar apps. Also, you need to be aware that not all geographic locations are allowed to publish paid apps on Google's Play Store. So you must think of a method of monetizing your app in advance.

Besides selling the app itself, another way to monetize your app is by displaying ads or by offering to unlock additional features.

  • iOS
    How to Add AdMob Banner Ads to Your iOS Swift App
    Francesco Franchini

Your Target Audience

This is an important factor because the success of your app depends on how well you address your audience, or how effectively you solve their problems. While most smartphone users tend to belong to younger generations, there are smartphone apps dedicated to older people and disabled people. Since the platform market share changes by country and age group, it's a good idea to research the platform demographics, if you want to target a specific demographic. 

Supported Device Features by Platform

Not all the devices support every feature of a platform. On the one hand, there are high-end devices, often dubbed "flagship products", supporting most of the features. On the other hand, there are low-cost, entry-level devices, supporting only the basic features. Then, there's everything in between. 

So you need to be very selective and make informed decisions when you develop apps. Developing an app that needs features supported only by high-end devices might severely affect your app's sales.

On the other hand, this could be an opportunity, if you can offer users of an advanced device an app feature that is not available elsewhere.

Conclusion

In this post, I've looked at the all the main mobile development platforms and tried to give you some guidance to help you choose between them. Applying these insights will surely help you become successful in your app development business.


No comments:

Post a Comment