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.
- JavaLearn Java for Android
- Android SDKJava vs. Kotlin: Should You Be Using Kotlin for Android Development?
iOS requires Objective-C or Swift programming skills.
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.
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.
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.
- IonicGet Started With Ionic 2
- Ionic 2Introduction to Ionic 2
- IonicHow to Create a Camera App With Ionic 2
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 NativeGet Started With React Native
- React NativeGet Started With React Native Layouts
- React NativePractical Animation Examples in React Native
- Mobile DevelopmentAn Introduction to NativeScript
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.
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.