Native mobile app development: Android vs iOS
The first time I faced an issue of choosing between Android or iOS app development was in 2012. Two of my friends from the biomedical engineering department were about to build an app for senior people providing real-time messaging with their doctor. Yet, they couldn’t prove to each other which operating system was better: both certainly had a point.
There are several things to consider if you need to pick a native platform, including:
According to data from August 2021, the worldwide market share of Android devices is 72.73%, while for iOS gadgets it’s just 26.42%.
However, the general picture is not enough for making a definite decision, and should not discredit iOS. Platforms‘ popularity differs for each particular region, e.g. in the USA iOS market share is substantially higher than the one of Android.
At the same time if, let’s say, you develop an app for Ukrainians, you can not count too much solely on iOS.
Despite the difference between them, both operating systems constantly improve and create excellent user experience. Here is a closer comparison of iOS and Android that highlights their peculiarities.
Things to consider
Swift, Objective-C
Tools for app development
Android SDK supported on all platforms
Xcode+iOS SDK supported only on macOS
Ease of app development and testing
With a broad variety of android devices you need to take into account their peculiarities and a rather wide range of screen sizes. This also makes testing more complicated.
Relatively small number of devices and screen sizes for which you develop the app. Testing is rather straightforward.
Quite flexible material design and app quality guidelines: bring your idea to life just the way you see it!
Strict design requirements making app customization more challenging.
App submission to Play Store requires meeting less restrictions compared to App Store, thus it’s usually simpler and faster.
To get the App Store approval, you have to provide an explicit description of your application according to the numerous requirements. The app itself undergoes a thorough app review, which may last up to a few days.
The majority of Android owners look for budget solutions, which means that it makes sense to look for indirect ways of app monetization, e.g. advertising.
iOS devices are more costly, and, as a rule, their owners are more ready to pay for access to applications.
Native vs cross-platform development
Both Android and iOS provide seamless user experience, and if a couple of years ago cross-platform frameworks struggled to repeat the native feel, today they have hit this target.
Pros of cross-platform app development
Cons of cross-platform app development
Although nowadays there are several frameworks for cross-platform development, in this article we’ll take a closer look at three of them: Cordova, React Native, and Flutter.
What is Cordova?
Once a game-changer in mobile app development, Cordova (former PhoneGap) has been one of the very first cross-platform frameworks. At the beginning of the rise of mobile technology popularity there was a high demand for rewriting web applications into the mobile ones. Cordova, using HTML5, CSS3 and JavaScript, is fast for developers to pick up, allowing getting small mobile apps almost in no time.
To achieve cross-platform development, Cordova provides native wrappers for app components, and uses a HTML Rendering Engine – WebView. Core plugins enable access to all hardware functionality. Besides, it’s possible to use third-party plugins or create the new ones whenever necessary.
Advantages of Cordova
Disadvantages of Cordova
What is React Native?
RN was developed by Facebook as an extension of React.js. It uses components to build mobile applications both for iOS and Android. It is possible to work with native modules, and to create your own ones.
React Native reaches native modules through JavaScript bridges, which once used to be a source of performance bottlenecks when it came to animation. In the latter RN release this issue was eliminated as animation runs with a native code without necessary passing of every frame through the JS bridge.
, a JS engine that achieves 2-3 times shorter app’s start time and reduces memory usage, is compatible with RN versions starting from 0.60.4. It is available for iOS starting from 0.65 release as well, which means that the same JS engine is used both for iOS and Android applications. This ensures similar code execution for both platforms, and eliminates bugs e.g. when something works well on Safari, but fails on Chrome.
Several limitations have been removed, concerning React Native compatibility with , so it’s much easier to streamline cross-platform app development. Now it’s possible to
Here is a step-by-step guide on how to. Also here you can find two articles that highlight popular React Native apps, their and , and demonstrate some practical RN capabilities.
Advantages of React Native
Disadvantages of React Native
What is Flutter?
Flutter is a cross-platform app development framework created by Google. It offers a wide variety of widgets to build the application with. Flutter uses Dart programming language, which is relatively easy to pick up if you are familiar with JavaScript, Java or C++.
If you need to implement a unique feature and can’t find a corresponding widget, it’s easy to use the device’s native APIs. A huge advantage of Dart is that it directly compiles into native code without having to use bridges or third-party tools to do it.
Flutter’s rendering engine Skia also greatly contributes to the high level of app performance. It’s easy to build a great design for any screen size with native feel and 60 fps frame rate.
The main difference with React Native consists in Dart programming language, otherwise these two platforms are pretty much equally performant. Here is a more detailed comparison of .
Advantages of Flutter
Disadvantages of Flutter
React Native vs Flutter vs Cordova
To summarize, let’s take another look at the three platforms compared with one another.
React Native
JS
Native components can be written with Kotlin, Java, Swift, Objective-C, C++/WinRT, C, depending on a target platform
Dart,
partly C, C++
Android, iOS, macOS, Web, Windows, Android TV, tvOS, UWP, VR
Android, iOS, macOS, Web, Windows, Linux, Google Fuchsia
Android, iOS, macOS, Windows; pending tests for Electron support
Operating systems the framework runs on
Windows, macOS, Linux, Chrome OS
Windows, OS X, Linux, macOS, depending on the operating system you develop your app for
*Expo is an optional toolchain that streamlines app development and testing, although it does have its drawbacks
Flutter SDK
WebView rendering engine is one of the main reasons of slowed down performance
Apps the framework is most suitable for
Little mobile apps, created based on their web equivalent applications
Community: number of contributors at GitHub (October 2021)
Let’s sum it up!
It looks like the times when you had to choose between iOS and Android operating systems are over. Cross-platform application development confidently reaches native level, and opens access to broader audiences within significantly decreased time and budget.
The last releases of React Native and Flutter provide developers with nearly equal capabilities. The platform choice may depend on the programming language required. While RN uses JavaScript, it may be easier to find a dedicated team for your project. Dart is a less widespread programming language, but its popularity increases.
If you have any questions, or would like to discuss your project idea, feel free to ! You also can get a free approximate for developing your application at Apiko.
This content was originally published here.