Cross-platform mobile development is getting lots of attention. Why? Well, there are two types of app development projects – native and cross-platform. Native apps are written for specific platforms, like Android or iOS (Apple). Producing a native app for both Android and iOS requires developing two apps. Cross-platform mobile development, however, takes aim a single app that can work on both platforms. Over the past few years, we’ve noticed a general misunderstanding about when to go with cross-platform app development over native apps. The reasoning we hear most is that cross-platform development cuts costs and development time.

The expectations of cross-platform development are high: develop an app that runs everywhere, at less cost and within a shorter time frame. But, let’s do a little reality check and take a look at how these high expectations could end up being a problem. Our goal is to leave no stone unturned so that you can make an informed decision on cross-platform app development. In the process, we’re likely to dispel some misconceptions and myths surrounding the cross-platform approach.

What’s cross-platform development all about?

Cross-platform development has been around since the 1970s, with the programming language C being the first well-known cross-platform solution. There are a lot of different programming languages out there, many with variants of their own like C, C#, C++, and Objective-C, not to mention ones such as Basic, Fortran, and Pascal. Today though, while you’ll come across some exceptions, the field narrows quite a bit by sticking to the most-used languages for mobile app development.

  • iOS Native: Swift and Objective-C are used today in native apps for iOS devices.  Many legacy projects still use Objective-C.  But, now iOS developers have two options: Swift or Objective-C. Most prefer Swift.
  • Android Native: Java is the official programming language used by Android, but Kotlin is also becoming very popular, Google is putting in a lot of work to make developers happy with Kotlin. C, and C++  could also be options with Java for native features where low-level code execution is needed without the Java Virtual Machine for performing tasks such as encoding/decoding.
  • Web: JavaScript is the most common language for web-based apps, typically used in conjunction with HTML5.
  • Cross-Platform: Xamarin, React Native, NativeScript and others can be used for cross-platform development – the choice of which is usually specific to each app. Flutter is another new, but very interesting cross-platform solution that has steadily grown in popularity. Flutter uses the Dart language enabling developers who JavaScript, Kotlin, Swift and the like to begin immediately and is regarded as very easy to use.
book-img

How to Build a Mobile App and Not Fail Miserably

Everything you need to know about building, launching, distributing, and monetizing a mobile application, all in one easy-to-read e-book.

DOWNLOAD FREE EBOOK

Build Once – Run Everywhere.

There are dozens of tools and solutions for cross-platform mobile development. Developers and clients alike love the concept, since it’s often marketed as a way to cut costs and time by writing once and running everywhere. Sounds great, right?

The illusions vanish when they realize that platforms are incompatible, and cannot provide the same functionality as native software. These illusions create problems for many software development projects. They create risks. And risks can kill the benefits.

Risks include variations in how the app is displayed, features not working as intended, security vulnerabilities, and more – all on a device by device and operating system basis.

Devices and Operating Systems

There are thousands of different mobile devices out there. Globally-speaking, about 88% of them use Android (with 16 operating system versions) and 12% use iOS (with 11 versions). The Android vs. iOS market share is not the same everywhere though. It is also important to note that technically most stats only compare Android and iOS. There are other devices using a variety of other operating systems, albeit with a collective market share of perhaps 4-5%.

In most cases, these can be safely ignored by businesses in the United States. They are usually older mobile phones persisting in some countries where the average lifespan of a mobile phone exceeds 7 years; one good example was South Africa, which until quite recently was the world’s #1 Blackberry audience. Blackberry has since adopted Android, too.

The different iOS and Android versions go back to at least 2007, so there’s always a question of how far back you want to go to be backwards-compatible. Many developers, however, will only support the two most recent OS versions. For iOS, providing for users going back to iOS 9.x covers about 97.5% of the audience – it was released in 2015. With Android, the ecosystem is far more varied, but Lollipop 5.1 and forward picks up 87% of Android users. It was released around November of 2014.

Android vs iOS Market Share

It is important for you to perform your own market research before making any development decision. In addition to your research, it is prudent to ask your development team or agency, too. Changes in tech can force major “near-future” changes in mobile market shares, and may not be picked up by regular market research. One new, or impending example, is how Google Play has started requiring all developers to submit 64-bit versions of their app (supported by Lollipop 5.1 and later), as of August, 2018 and 32-bit versions will no longer be downloadable come August, 2019.

Android captures 87% of the global mobile market compared to about 13% of iOS users. However, when it comes to the US market, iOS has a 63.5% market share, up about 8% over 2017. That leaves Android with a 34.16% share. It’s also well-established now that iOS users spend twice as much as Android users.

I’ve found and would recommend gs.statcounter.com as a good (free) place to start for research regarding mobile device usage. Use the “Edit Chart Data” to select country, date range and any other criteria like OS, device, browser, etc., that you want. For a quick view comparing iOS vs. Android, checkout DeviceAtlas.

Market Launch and Long-Term Strategy Considerations

All of your technical and market share data should help define an optimal marketing plan both for your app’s launch and its long-term. Other market and demographical data will influence your decision, too. Simply put, don’t guess or make an arbitrary decision. Use the data to answer the Android vs. iOS vs. Cross-Platform question for you. decision. Making that decision without considering all of your available market data could leave you up the Schitt Family Creek without a paddle. The decision should be justified based upon your budget and ROI requirements.

Some basic starting points might include the following scenarios:

  • iOS first. If your budget and ROI are major concerns, start with asking about an iOS first launch considering its more affluent audience, especially if you intend to launch in English, or one language in another developed market (North America or Western Europe).
  • Android first. If you want to engage Global Mobile, going internationally in any and every market you can get into, you’ll likely want to consider Javascript, HTML5 or Android. If your app depends upon high performance, then you’ll be looking at Android. Remember that every language in which you intend to launch will involve a localization cost. Localization costs are likely to be lowest for HTML5 apps.
  • Cross-Platform first. There’s really only one clear-cut case where you MUST engage with a Cross-Platform App – and that’s when it MUST be compatible with non-standardized, often legacy, devices. That’s not the only case where Cross-Platform development is viable, suffice that we’re about to get into more of its technicalities.

Principles of Cross-Platform Apps

As computers grew in performance, so-called runtime solutions came into being – like the Java language and its virtual machine. It’s a unified environment, where the application is run. Basically, the source code is only written and compiled once.

Web-based solutions offer another world for cross-platform apps. Here, it’s all about the browser. Since browsers are a part of pretty much any modern operating system, running applications within browsers like Google Chrome, Safari, Internet Explorer and Firefox makes a lot of sense. The code doesn’t even compile since browsers have built-in interpreters.

The best examples of web-based solutions are JavaScript and HTML5 web applications. Ever heard of creating hybrid apps? Such cross-platform applications are native but include what’s called a webview to execute the web app. The web view loads the web application from the server and the user interacts with it.

These solutions have a common feature, a layer between the app and the OS – a compiler, a virtual machine, or a browser. Through this layer, the OS accesses the app’s functionality.

The Problem of Universal vs. Specific Devices

But, there’s a fundamental contradiction here: the solution has to be implemented for each platform separately. That means each implementation will have its own bugs to fix, versions to maintain, and features to roll out. Even specific devices by a single manufacturer may need separate versions.

That makes the development of cross-platform applications a bad option for cutting costs. Yet, even if you manage to cut some, it will be “eaten” by bugs, support, maintenance and so on.

We’re not evangelizing against cross-platform apps here, we just recommend a deeper analysis of the pros and cons:

Pros Cons
Compile-time solutions Highest performance
Native user experience
Low-level development
Runtime solutions Native user experience High level of development risks
Web-based solutions Simplest development
Wide platform coverage
Lot of restrictions
Non-native user experience

In cross-platform  mobile development, everything comes at a cost.

Every Tool Has a Function

Sometimes I like to go to the hardware store and run around with a screwdriver shouting, “Ladies and gentlemen, this is not a drill!”  Okay, well – the simple point is that every tool has a function that it can perform very well. It can perform other functions, too – but not as well.  Here’s a more in-depth view of the technologies for cross-platform mobile development. Most of them are suited for mobile app development, but some work for desktop computers, too. These solutions provide developers with UI kits, Application Programming Interface (APIs), development and distribution tools.

Game development is abundant with compile-time solutions because performance is the top priority here and the UI has to be consistent across all platforms. Compile-time solutions require code translation. The code is written for one of the platforms and then converted to the code of the destination platform. That process requires skilled developers, for it to function properly.

There are online services that provide tools to build and submit mobile apps to the stores right from the browser. Como, now owned by Swiftic, is an example of such app builder. Some of the solutions are just UI kits for developers: Mobile Angular UI, jQuery Mobile, and Sencha Touch. There are also distribution and analytics systems like IBM MobileFirst and Trigger.io.

Compile-time solutions Runtime solutions Web-based solutions
Apps Games
Xamarin Platform
C#
iOS, Android, WP
Unity 3D
C#, UnityScript
iOS, Android, WP
Facebook React Native
JavaScript
iOS, Android
Adobe PhoneGap / Apache Cordova
JavaScript
iOS, Android, WP, Blackberry OS, Samsung Bada, Tizen, webOS
Embarcadero RAD Studio
C++
iOS, Android
Marmalade SDK
C++, Lua
iOS, Android, WP
Appcelerator Titanium
JavaScript
iOS, Android
Ionic Framework
on top of Apache Cordova
JavaScript
iOS, Android
RubyMotion
Ruby
iOS, Android
Cocos2d
C++, Lua, JavaScript
iOS, Android, WP
RhoMobile Suite
Ruby
iOS, Android, WP
Intel XDK
on top of Apache Cordova
JavaScript
iOS, Android, WP
Qt
С++
iOS, Android, WP
Corona SDK
Lua
iOS, Android, WP
Trigger.io
JavaScript
iOS, Android
IBM MobileFirst Platform Foundation
on top of Apache Cordova
JavaScript
iOS, Android, WP, Blackberry OS
RoboVM
Java
iOS, Android
Unreal Engine
C++
iOS, Android, WP
Adobe AIR
ActionScript
iOS, Android
Telerik Platform
on top of Apache Cordova
JavaScript
iOS, Android, WP

Is it Compile-time, Runtime or Web-based?

Let’s define the most important goals for cross-platform mobile development:

  • unified development process;
  • cost cutting;
  • faster development;

The platform’s API has a fundamental impact on these goals. For compile-time solutions, your developers have to know all of the APIs for the destination platforms. They have to write different code for each platform. This leads to higher costs and longer development times. As a result, there’s no unified development for you here.

Runtime and web-based solutions ensure the development is unified. But the restricted access to APIs will make you build custom solutions and workarounds, spending more time and money.

Mobile apps depend quite heavily on the User Interface (UI), so that’s the main effort. Compile-time solutions require almost as much effort as native apps when it comes to UI. While web-based solutions may be more affordable, they can fail to provide a top-notch user experience (UX).

Comparing Your Options

Compile-time solutions Runtime solutions Web-based solutions
Platform APIs Proxy access Wrapper with its own unified APIs No direct access
UI Native. Different for each platform Native. Some UI elements are unified, others are not Not native. Unified
3rd party SDKs The developers have to integrate The developers have to write native bridges The developers have to write native plugins. There are many ready-made ones, though
Security The code is compiled and is not accessible The code is a string and can be changed during execution The code can be located on the server and can be changed during execution
Debug and tools Solutions own and native tools can be used. Own or 3rd-party tools can be used Any web tools can be used
Maintenance The new APIs cannot be supported without solution update New APIs cannot be supported without solution update. The solution update can affect the app current version The new versions of the webview have affect the app and have to be supported
The new APIs cannot be supported without a solution update. The solution update may affect the app current version.The platform-specific features (like background tasks) are really hard or impossible to support without native modules
It’s almost always a challenge to support new versions of the 3rd-party SDKs
Team structure Homogeneous, but it’s necessary to know platforms’ APIs, UI and tools Homogeneous, but native development is necessary to support 3rd-party SDKs Homogeneous, but native development is necessary to support 3rd-party SDKs. Have to know the difference between the platforms’ own webviews

Any integration of third-party Software Development Kits (SDKs) increase the costs and terms for cross-platform solutions. It, again, makes unified development close to impossible.
With runtime and web-based solutions changing the code, there can be a challenge for security. But, it can also be an advantage, as it allows for directly updating applications, bypassing the app stores.

Debugging Cross-Platform Apps

Even though all of the solutions above have standard debugging tools, identifying and debugging are in fact more complicated for cross-platform than for native development. Cross-platform environment makes it more difficult to understand crashes and performance. In some cases, debugging apps can take three times longer with Xamarin than it does with native apps. Sometimes it’s necessary to support obsolete platforms. In such cases, cross-platform mobile solutions can be the only way out.

Maintenance

Everything depends on the application version.  Developers have to wait for the solution to add support of new features and to fix some bugs. It increases the project terms. While developers can implement workarounds, it still increases both the terms and the budget.

One of the important advantages of cross-platform mobile development is a homogeneous team. But it’s impossible to exclude platform-specific issues, necessitating at least some native development. This also increases costs and development time, as it makes fully-unified development impossible.

Risk analysis

Cross-platform mobile development’s main advantage is a single code base, with the challenges and limitations, that come with it.  Conversely, there is a high risk you will need to create separate solutions to make that single code base work with different platforms.  More complex code or more integrated third-party solutions require more development time and money. There is also the chance that despite your best efforts, the only viable solution will ultimately end up being to use custom native code. These aren’t problems in native development. Another significant risk comes in the form of cross-platform security threats designed to deliver malicious files to multiple platforms.

The Cross-Platform Mobile Development Team

By now, it should be pretty clear that that cross-platform mobile development requires more attention to the architect role in the team. They should be the one keeping spaghetti code out of your project and making sensible decisions on technologies and practices.

The team is your most valuable asset, yet the source of some risks. Platform knowledge, or rather its absence, can cause reworks. Even if a single platform is unknown to the team, it takes time and money to deal with. Furthermore, the solutions have their own features, APIs, and issues the team must know. So again, unified development is hard to achieve.

Because that’s a lot of information to chew, here’s a basic breakdown of risks.

Risks Compile-time solutions Runtime solutions Web-based solutions
Only a small part of the code will be common High Medium Low
No standard frameworks available High Medium Low
Very complex architecture and code High Medium Low
Spaghetti code High Medium Low
Too much custom solutions Low Medium Medium
Workarounds Low Medium Medium
Writing native code Low Medium Medium
Cross-platform environment issues Low High Medium
Platform features not supported Low High Medium
UI Kit issues Low Medium High
Troubles with debugging and bug fixing Low Medium High
Troubles with testing Low Medium High
No mobile expertise will have effect High Medium High
Need to learn the platform’s features High Medium Low
Need to learn solution’s features Low High Low

The Benefits of Cross-Platform Mobile Development

The risk analysis above shows that the fundamental goals of the cross-platform mobile development are really hard to achieve. But, that doesn’t negate all the benefits.

Easier to find developers

Due to the wide range of solutions involved, finding developers across many platforms is easier (JavaScript, C#, C++, etc).

Great community

You can bring in well-known web and other frameworks to mobile development. Such technologies boast a great active community, that constantly contributes to the evolution of the platforms. You can harness the power of the community for your project.

Faster hiring and project launch

Popular programming languages mean it’s easier to hire developers. Project requirements stay the same, while your people work with a well-known technology. Such teams can deliver a Minimum Viable Product (MVP) in very short timeframes. This benefit works well enough with web-based solutions.
The team, however, will have to spend the project’s resources to get mobile expertise.  As a result, it will be necessary to evolve the project taking that into consideration.

Reducing overhead

Another benefit of the cross-platform mobile development is a reduction of management overhead. The project manager, team lead or architect will manage the single project, but not for each platform.
Sometimes it’s necessary to support obsolete platforms. In these cases, cross-platform mobile solutions can be the only way out. But make no mistake here: each solution supports its own set of the platforms. You cannot always choose the technology you want.

TL;DR

We’ve gone through the well-known cross-platform mobile solutions, the most important contradictions and the risks. The analysis shows that:

  • Complex cross-platform mobile development has a higher risk of increased development costs and time, compared to native development;
  • Cross-platform teams can’t be fully homogeneous and the developers have to learn the platforms they’ll be working on;
  • Going with cross-platform approach allows to start the project faster;
  • The web’s development community can be involved in your mobile development.

Each cross-platform solution has its own pros and cons, as described above.

Compile-time solutions are the only choice when performance is the goal. Otherwise, they are really close to native development;

Run-Time solutions allow creating apps with a real native look and feel.  However, they are quite risky because of own APIs, and unsupported features;

Web-based solutions have a lot of restrictions due to their high-level environment. The maturity of web technologies and development community can cut some risks and help to provide maximum platform coverage.

Many cross-platform technologies are less-expensive in terms of developer salaries. In addition, you can achieve lower costs by hiring less-expensive (and usually less-experienced) developers.

So, the main problem with cross-platform development is the universalism. The universal solution can solve a variety of tasks, but it can’t solve tasks better than a specialized one. For instance, the computer mouse allows one to interact with any application but it isn’t as comfortable as a joystick for gamers or a graphic tablet for painters.

But sometimes cross-platform is the only way to implement the mobile development app project. That’s especially the case with obsolete platforms.

Mark Dabbs

Expert contributor

Mark Dabbs is an expert contributor and consultant for Reinvently. His passion is helping businesses make better use of mobile technology.

Still can't make a decision?

We’ve built many successful iOS, Android and Cross-Platform apps – we’d love to help!



1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5.00 out of 5)
Loading...