Christian Feldbacher, V-Play [Qt Technology Partner]

Mobile App Development with Qt Part 1 – Top Considerations for Choosing Your App Development Framework

Published Wednesday June 14th, 2017
19 Comments on Mobile App Development with Qt Part 1 – Top Considerations for Choosing Your App Development Framework
Posted in Biz Circuit & Dev Loop, Mobile

Choosing a framework for your next cross-platform app is an important decision. In this post we’ll cover multiple factors to consider when choosing your app development framework and how that should support your business strategy.

What to Consider

Determine the reasons why you may need a cross-platform mobile app:

  • Do you want to improve your brand and better position your company in mobile app stores?
  • Do you want to make your employees more productive with internal apps that they can use on their tablets or phones?
  • Do you want to save the cost of having a dedicated Android and iOS development team and instead have one team that’s able to cover all platforms with a single source code basis?
  • Will you have to maintain your app on multiple platforms over a long period of time? Your iOS and Android versions may drift apart in terms of functionality and features because maintaining multiple platforms requires a lot of effort and dedicated experts for iOS and Android. With a cross-platform solution, you can avoid different timelines per platform and reduce maintenance costs.
  • Do you need to reduce the amount of duplicate code for multiple platforms such as iOS, Android and Desktop?
  • Do you have existing business logic or even a desktop application written in C++ and now want to bring it to mobile?

If you answer yes to just a couple of these questions, you should be considering a cross-platform mobile app strategy.

Let’s dive into the question, what your cross-platform framework should provide:

Animated UIs

Successful apps all have one thing in common: a great user experience and smooth animations that give the user a sense of joy.

So to create a modern mobile app, the user interface and the screen transitions need to be animated. Adding animations and prototyping different UIs should be the core strength of your framework. Take Qt Quick (aka QML) as an example – QML was essentially designed and written with this goal in mind.

If you’ve developed native apps for Android or iOS before, you’ll know that getting these animations right is a major time sink. Using a declarative design approach will save you time and money.  QML allows you to easily animate any user interface element with dozens of different easing types and gives your app that extra level of polish

(Very) Few Lines of Code

Another benefit of QML is its declarative structure: You can define UIs and animations in less than 20 lines of code and they’ll still be easy to understand and read. With advanced features, such as property bindings, you can save even more lines of code. This requires a lot of boilerplate code in other programming languages.

Native Performance

The basis of QML is C++ which has much better performance than any JavaScript-based framework. In addition, the rendering of QML is handled from a modern scene graph optimized for mobile. Thanks to this scene graph and C++ basis, the animations and loading times are on a native level, just like a regular iOS or Android app.

Business App Requirements

Qt supports many requirements in modern business apps. It allows you to access your backend APIs via WebSockets or REST/HTTP, add location and maps services, display HTML 5 content, access sensors, multimedia, databases, localization features, and more connectivity access via Bluetooth LE or NFC.

Compatibility with Your Existing Business Logic

If you have existing business logic in C++, you can include that code and reuse it for your mobile apps. You don’t need to start from scratch and can focus on providing a great UI to users.

Extensibility

If a native feature you need is not covered by Qt yet, you can add it on your own and then provide it to QML with a clean scripting API, from native Java or Objective-C/Swift code to QML. This also allows you to add 3rd party SDKs, which might only be available for iOS or Android. Some of the most popular mobile services are available in a cross-platform format as V-Play Plugins – see the upcoming part 2 for more details.

Components Designed Specifically for Mobile App Development

Qt with QML fulfils many mobile app requirements, but you can make it even better by taking advantage of components that are specifically designed for mobile app development, such as those available in the V-Play Apps SDK , which provides components on top of Qt to simplify and accelerate mobile app development with Qt.

 

vplay

V-Play Apps components were designed with mobile-first in mind. This means you get components used by the most successful and popular mobile apps on iOS and Android as cross-platform components.

This is the first part of the “Mobile App Development with Qt” series. In the second part, you will learn about the differences between platforms and how you can support these differences with a shared code base using Qt and V-Play Apps.

As soon the second part is released, the link will be added here.

Do you like this? Share it
Share on LinkedInGoogle+Share on FacebookTweet about this on Twitter

Posted in Biz Circuit & Dev Loop, Mobile

19 comments

anonymous says:

Hi gays, we are placing a small tool button to the right from the QLineEdit to let to clear it by a click. But usually we have a label to the left of the line edit. Why not to start the rule cleaning the line edit by this label click?

Jow says:

Not really the best place to ask for help – there is a [forum](https://forum.qt.io/) for that.

Jason says:

Well let’s all cover where Qt falls short.
Notifications – local and push, as well as browser.
Services and background processing.

While your notifications will likely come from a library like v-play, or firebase, or Amazon, the Qt SDK should have a plugin ability (delegate or java class) and abstraction for them. (ApplicationWindow)

Similarly, integrating with the background/service processing is vastly different on the different mobile platforms. Qt should hide this as it does with multimedia processing.

Finally, It’s been a while some love. My company had to pay Qt to add recording parameters for Apple platforms, dining that already existed for Android.

Qt is on the verge of the best x-platform mobile SDK, but these shortcomings hold it back.

There are also specific issues like not supporting xcode’s entitlements file which detract from the experience.

All these issues are in the bug tracker.

ekke ekke says:

+1
all of this should be abstracted by Qt SDK or as Plugins
also should be easy to share content with other apps / open in other apps

would it make easier for other mobile devs to start with Qt

from my POV Qt is the best framework to develop x-platform apps and I really like all the cool things can be done using plain or customized QtQuickControls2

Jason says:

Finally, It’s been a while since mobile saw some love.

Marcin says:

Shouldn’t licensing be at the top though? No other mobile cross-platform framework is as expensive as Qt, even without VPlay’s costs on top. LGPL licensing is a mess on mobile platforms and thus out of the question for most apps. Qt won’t be able to build a viable mobile ecosystem because the entry cost is just too high, $80/month is a huge deal for indie developers, especially outside of the developed countries.

Mobile is a very fragile market, why would I ever choose Qt for my next app, having to pay through the roof for it, when there are viable free alternatives? Satisfying LGPL requirements on mobile is either basically impossible (iOS) or very close to it (Android) with real chances of being dragged to court over it. Look at what the game development landscape looks like – plenty of free frameworks and engines, and commercial engines that let you start for free and are not restrictive with upfront costs, only ever taking their fair share if you’re successful. Look what Qt is up against in just mobile space, e.g. Xamarin, plenty of other cross-platform frameworks. Qt has to follow suit or face being a niche product for embedded devices by rich companies that will have trouble finding experienced programmers and an active ecosystem.

ekke ekke says:

there are some (mobile business app) projects where customers compared UX of Xamarin and (my) QtQuickControls2 APPs and they decided to use QQC2 🙂
some apps will be available at stores in next months – other are in-house-only

for mobile-only-devs it would be cool to have a licensing of 30 € or so per dev without startup-limitations.
this would make Qt much more attractive for (as you notet fragile) mobile market

Scott says:

Well said. I have thought this for years. And although Qt is dear to my heart I cannot in all conscience operate a business with the high cost of licencing.

Even on desktop with an LGPL licence i find it difficult to support, considering QtCharts is only available as a GPL component.
A lot of business apps which I write rely on comprehensive charting functions. As I cannot afford the expensive licence I am forced to find alternatives.

Considering both on mobile and desktop the alternatives are less expensive or free why would I choose Qt as a development framework.

tham says:

Maybe Qwt can solve your problem?

HM says:

Do you have numbers how many people are using Qt for mobile development and ratios on which platforms? I have the “feeling” that Qt is used only by very few mobile developers, although it is one of the best cross platform libraries.

Marco Piccolino Marco Piccolino says:

I have no figures, but I can tell you that the QtMob Slack chat has got around 420 users at the time of writing. Granted, the vast majority is not often active in chat.
If mobile is part of a broader company offering, especially if it includes embedded and/or desktop, then Qt is an excellent choice and I foresee an increasing number of users. For mobile-only projects there is plenty of other options, most of which require no subscription. You wouldn’t have qml and the extensive APIs, but well, can’t have everything, right? 🙂

http://slackin.qtmob.org

qplace says:

It would be absolutely wonderful if you can do the comparison between mobile Qt and Xamarin development experiences and results

Christian Feldbacher (V-Play) Christian Feldbacher (V-Play) says:

We did a comparison with full source code of the same project here (see the bottom of the page):
https://v-play.net/qt-app-developers/

For the same project & the same output – ie the same app for browsing real estates, Xamarin had 12x (!) the source code.

We might do an in-depth comparison of multiple cross-platform tools in a future blog post, thanks for your suggestion!

Stranger says:

Hello! Any plans to implement the iOS theme in Controls 2?

Christian Feldbacher (V-Play) Christian Feldbacher (V-Play) says:

We’ll cover that one in the next blog post. 🙂

For more info upfront about an iOS theme for Qt Quick Controls, see here:
https://v-play.net/qt-app-developers/

notyetVPlay user says:

Hi, please remove splash screen and llimitations of free license.

Joe says:

Please consider purchasing a commercial license 🙂

Ho says:

The main obstacle for me is the HUGE size of the ouput. For example, a simple UI with Android native development environment will create some APK output with KBs in size, but the output of the Qt is usually more than 10s of MBs.

Christian Feldbacher (V-Play) Christian Feldbacher (V-Play) says:

There’s always pros & cons in selecting a technology/framework. Nothing can beat the small executable sizes for native development. However, requiring 2 development teams and for the reasons shown in the blog post above, a cross-platform tool may easily outweigh the bigger application size. Also, by using Qt Lite, and by deselecting the Qt modules you don’t need in your app (like multimedia, 3d, etc.), you can reduce the output size of an application to <10MB.

Leave a Reply

Your email address will not be published.

Get started today with Qt Download now