Easy deployment of Qt Quick applications

Tip

Updated 2010-12-29 07:58.

Haltu released web-based tool to generate binary packages of pure QML apps.

Qt guys released Qt Quick this fall and in its current form it is mainly suited for creating UIs to applications written in C++ using Qt libraries. But what if it was the other way around. You would create the application by defining the UI with QML, the UI level logic with Javascript and then just wrap all that together with a launcher to different platforms.

At the moment you can’t run QML files on any device without some binary application. Two such things are coming with the SDK: qmlviewer and QtCreator. Both can be used to run QML files. But if you want to deploy your own QML application to e.g. Nokia N8 or N900, you need to create boilerplate C++ code to launch the QML UI.

We (actually, it was our CEO) at Haltu ported Kelikamera app to working Qt Quick demo in four hours. The app itself is only QML and Javascript. No need to compile anything. You can see it in this video.

Now, to get that to run on all supported devices we need to have all kinds of SDKs and environments where to compile the launcher. And actually the launcher code is just copied from the qmlviewer.

What I’m proposing here is that the guys at Qt Software at Nokia create a tool that can be used to package QML files to runnable binaries and then deploy to devices. Without compiling.

All that nasty compiling and linking would be somehow out of sight. I know it might be hard to create it as a tool that is deployed with the SDK. But it could also be a web service. The developer uploads the QML file there, the service packages it to sisx-file for Symbian devices and similar files for Maemo/Meego. And of course submits it to the Ovi Store at the same time. And if there are some differences in the launcher code on different devices that service would handle all that. All QML files already have version numbers in import statements so it would also allow this to work so that the once-submitted QML file would be re-packaged by the service in the future if needed.

The end result would be a world where Qt Quick applications could be created without knowing anything about the target platform or compiling.

That I would call rapid application development.