“For this preliminary release, we are focusing on the developer experience, working to enable Qt developers to easily run and test their applications on Android devices. While there’s nothing preventing you from deploying your app to an app store with Qt 5.1, we’re recommending that people wait until Qt 5.2 before they do that, as we’d like to put some more work into improving that experience: making more options for how your app is deployed, adding more polish in general, and adding more support for Android APIs, both by allowing you to extend your app with Java code or by mapping them in C++ APIs, whichever makes the most sense.”
This is interesting. So you can build an app using QT that runs on phones, tablets, and desktops? I thought I recall in Windows 8/RT discussions, when I asked why hasn’t Microsoft done this, the feedback I got was that it wasn’t practical. I always maintained that if you had different layouts depending on what form factor you ran it on (like Android apps might have an extra frame when running on tablets), it shouldn’t be too difficult to write an app that runs on all three, and probably the web as well, if you had an HTML/JS framework to work with like MS does.
Edited 2013-03-13 22:52 UTC
You can to an extent, but it isn’t as simple as writing different views for different form factors.
The way the sandboxes on the respective platforms behave varies, so you need some degree of platform specific code to deal with those nuances.
For example, Windows 8 is less restrictive than Windows Phone 8 with regards to what exactly can run in the background and when.
Ideally you get a high degree of code sharing of the back end code, some code sharing of the middle glue layer, and you get technology and paradigm similarity at the view level.
This is all achievable today with Windows 8 and Windows Phone 8 and the new Windows 8 Twitter app actually shares a huge amount of code between WP8 and Windows 8. The snapped view on Windows 8 is identical to the Windows Phone 8 UI.
Can it be easier? Hell yes it can, but its getting better. I’m sure the same is the case with Qt once you get down into the nitty gritty of porting across N platforms.
The Win8 dev platform is pretty nice, but a bit of a dead end for anyone that cares about tablets (or phones for that matter). The promise of Qt ports to Android and iOS (coming in Qt 5.2) is that we might actually for the first time ever have an effective way to target desktop and mobile platforms with one toolkit (different UI layers of course if you’re doing it right). In this day and age, you can’t get away with going microsoft only.
I don’t code exclusively for Microsoft platforms. I share code across iOS, Android, Windows 8, and Windows Phone 8.
I’m also not trying to turn this into a Qt vs anything debate. I was simply giving input on how things work in general, bringing up the Win8/WP8 to answer a question the OP formed.
You’d run into the same issues doing Qt across iOS and Android for example. Android has differing capabilities that must be abstracted away, therefore it means you always have a middle tier of platform specific code.
It depends, but Ubuntu tries to do the same… based on QT/QML.
1) Adroid has batter layout utilities for adapting
layout to multiple screen dimensions (fragments, layout definitions for different resolution and dpi…)
* Of course, you can find ways to implement this in QT, but not in a nice way as in Android
2) You need to take into consideration the different input
This are not huge problems, with a little effort from the developer they can be easily solved.
Of course, porting a complex app, and use the same code will never be possible.
You can (even today) program the business logic in C++, and the interface for each platform, and this is actually the best way to go, since you can control how the info is displayed based on each platform HUG.
But for small apps this is possible with different toolkit like (but not restricted to) QT.
Ubuntu is claiming their apps (based on Qt) will run on all 3 platforms. In fact, they say a running app can switch its display from phone to desktop when you dock your phone.