Archives For Introduction

Mobile Business Apps

dreamstime_xs_14156598

As you probably know the last 4 years I mostly developed native BlackBerry 10 apps for business usecases in SMB or Enterprise. Many apps are running as inHouse apps via BES12.

Last year BlackBerry introduced the first BlackBerry smartphone running a secured Android: the BlackBerry PRIV – a slider:

priv_image

 

This year next two Android devices will follow: one fulltouch and one with integrated keyboard – both in a lower pricerange as the PRIV.

BES12 in the meantime makes it easy to manage Android, BlackBerry, iOS, Windows devices and supports Android for Work, Samsung, iOS9 etc.

bes12

I’m still developing BlackBerry10 apps for customers targeted to BlackBerry only, but on the other side there are more and more usecases and customers looking for x-platform apps in the enterprise.

What’s the best way to develop x-platform mobile apps ?

There’s not THE answer – as always: ‘it depends…’ (There’s a Video from my MobileTechCon session where I explain this in detail)

For me these are the most important requirements:

  • native feeling
  • performance
  • re-use of code

If you’re coming from web development there are some great frameworks as

You can develop nice looking apps, but I’m not a web developer, don’t like mixing HTML and JS and also there’s nothing I can re-use from my existing BB10 Apps. Developing complex apps with HTML5/JS also can end with slower performance.

Do you have knowledge in C# ? Then

might be the best for you, even because Microsoft just Open Sourced Xamarin.

There’s another interesting project:

Flutter uses dart and supports Android and iOS from a single codebase, but Flutter is in Alpha at the moment.

Native BB10 apps are based on Qt 4.8/C++/QML(Cascades UI Controls). So what about

qt

Qt exists since more then 20 years and supports many platforms and since some time you also can develop mobile apps.

But in the past there was no out-of-the-box support for mobile UI and Navigation controls, no support of different density etc. You had to implement this by yourself. For me this was a no-go.

This has changed completely with Qt 5.6 🙂

As part of Qt 5.6 there’s a Technical Preview of qt.labs.controls providing all you need for mobile apps: UI and Navigation controls in three different styles:

  • Material (Google Design)
  • Universal (Microsoft)
  • Default (Qt specific)

Also light and dark themes are supported.

quick2_04

qt.labs.controls will be part of Qt 5.7 – comming out next 3 months – then named QtQuickControls2

QtQuickControls are ligthweight and much more performant as QtQuickControls1 because all the heavy stuff now is done in C++. More infos here.

Qt 5.6 also supports HighDPI on all platforms now. http://blog.qt.io/blog/2016/01/26/high-dpi-support-in-qt-5-6/

So now it’s the best time to give Qt a chance.

Wait a moment – what about the license costs ?

Qt is Open Source and dual-licensed – you can also use a commercial license. The use of Qt Open Source isn’t an easy decision for mobile apps – I have summarized it in this article.

But there are good news: Starting with Qt 5.6 there’s a new startup license for Independent Developers and Startups (Intro price 49$/month)

Why not Xamarin – some concepts sound similar ?

Only at the first view. There’s a main difference:

Xamarin is using ONE LANGUAGE (C#) to write mobile apps, but it’s NOT ONE CODEBASE. You still have to write different code for Android and iOS esp. because the underlying UI Controls from native platform are be used. This is good for native-UI/UX, but more work is required and less re-use.

Qt is also ONE LANGUAGE (C++/QML) , but also ONE CODEBASE. For common usecases you have to write Code only once. For some special parts you can execute code from underlying Android Java or iOS ObjectiveC.

For me another plus: I can re-use 80% of C++ business-logic-code from Qt4.8 and also some concepts like SIGNALS/SLOTS for great event handling.

easy-way-720-343

The Easy Path

You see – it’s not easy to decide.

My blog series here will give you some hints and an easy path to try it out.

Doing this as a Qt newbie without assistance is hard because Qt supports so many targets and UI can be build using different technologies

  • QtWidgets
  • QtQuick
  • QtQuick2-qt.labs.controls).

Also the IDE (Qt Creator) works different compared with Eclipse Momentic, Android Studio or Xcode. Needs some time to figure it out. On the other side Qt Creator masters a hard job to support many different targets / OS from Embedded to Mobile and Desktop.

Next weeks following my blog series you can find out if my x-platform-journey with Qt will be finished successfull 😉

BlackBerry 10 Devs Attention !

Even if you only developed BlackBerry 10 APPs yet and no experiences with Android or iOS. Don’t Panic !

My blog series starts from the beginning (prepare Android / iOS devices, Install, …) – also for BlackBerry Cascades developers from time to time I’ll compare the code / concepts HowTo design the UI.


→ Next Article (Open Source vs Commercial License)

⇐ Home (Overview / Topics)


 

Qt exists since more then 20 years ! Take a look at the history: http://www.qt.io/qt20/

Open Source

open

Since 1998 the KDE Free Qt Foundation guarantees Qt availability for Open Source Development. It’s great to rely on an Open Source framework – you always can take a look how things are implemented.

Up to Qt 5.6 the LGPL 2.1 was used, from Qt 5.7+ the LGPL 3 will be used.

I’m starting with Qt 5.6 to test the new UI Controls from qt.labs.controls. qt.labs.controls are only a Tech Preview in 5.6 and will be part of Qt 5.7.

Not only LGPL 3 is new for Qt 5.7 – also some Tools (Charts, Data Visualization, …) only available for commercial license before will become Open Source, but as GPL 3. Later this year the QML Compiler will also be included into Open Source license.

There’s a Blog describing all these changes in detail: http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/

What does this mean for your mobile APPs ? Can you use the Open Source version of Qt ?

The answer isn’t easy and I’m not a lawyer !

Here’s a great german blog discussing LGPL 3 and GPL 3 for commercial projects: https://blog.codecentric.de/2012/05/verwendung-gpl-lizenzierter-komponenten-in-kommerziellen-projekten/

Using Qt Essentials and Add-Ons -> LGPL 3

Your own APP can be sold commercial, but the user must be able to replace the Qt Libraries. No one would do this for a mobile APP, but these are the rules which make sense if Qt is used for Device Creation in embedded market.

You can publish your Android APP via Google Play store, if you provide a description HowTo replace the Qt libraries (.so) which means you must provide your APK file together with a recipe HowTo do this.

See also discussion at StackOverflow: http://stackoverflow.com/questions/18639508/replace-so-file-in-android-apk

and here’s the recipe: https://gressie.wordpress.com/2012/06/14/how-to-properly-re-assign-a-signature-to-an-android-apk-file/

So for Android there’s a way, but this won’t work for Apple’s App Store AFAIK.

Tools (Charts, Data Visualization, …) -> GPL 3

The story becomes more worse if you’re integrating GPL 3 – licensed tools into your APP. Then your own APP must be GPL 3, so you should ignore these for APPs distributed via Google Play or so.

Business APP In-House-Use 🙂

The story is totally different if your APPs are not distributed via consumer app stores.

I’m developing mobile business apps running in-house in medium-sized companies or enterprises. APPs in this case are distributed via BES12 or similar MDM / EMM solutions. My customers always get the sources, so the Open Source licenses for included Qt libraries can be used without any problems.

Sometimes customers want to get support from Qt, which is part of commercial licenses – in this case it makes sense to get a commercial license.

Commercial

dreamstime_15621840

As we’ve seen: LGPL 3 and GPL 3 are no easy-to-use licenses for mobile Applications – are there alternate ways to go ?

Yes: Qt is also available with a commercial license and because Qt is available for so many platforms, the license isn’t cheap (around 300 € p.month). This is ok for companies like LG using Qt for their Smart TVs or so but not for the typical moble APP developer.

The Good News: starting with Qt 5.6 there’s a new commercial license for small StartUps and Independent Developers:

startup_plan

For me this sounds good and enables me to distribute apps without any problems via consumer app stores. Follow these blog series to see how cool it is to develop x-platform mobile APPs with Qt.

My Enterprise customers on the other side will get the complete source projects and can decide if they want to use Commercial or Open Source license for in-house-use.


← Back (Why Qt for Mobile App Development)

→ Next Article (Prepare for Android (SDK, NDK))

⇐ Home (Overview / Topics)