[Android] Avancée du support d’Android dans Qt 5.1

Le portage de Qt sur Android n’est pas neuf : en janvier 2010, un système graphique fonctionnel était rendu public par BogDan Vatra.

Un peu plus d’un an plus tard, en février 2011, Necessitas sortait au grand jour, avec la première version de Qt utilisable sur Android : https://groups.google.com/forum/#!msg/android-qt/IJ7e98XO7Io/_ti9asJPEsAJ. Fin 2012, le projet Necessitas quittait le giron KDE pour passer au Qt Project, avec intégration dans Qt 5 prévue : http://blog.qt.digia.com/blog/2012/11/08/necessitas-android-port-contributed-to-the-qt-project/.

Début 2013, une branche de développement était créée sur le dépôt Git de Qt, qui vient d’être intégrée au tronc commun : le support d’Android sera bel et bien disponible avec Qt 5.1.

Cette première version s’oriente plus vers les développeurs, pour qu’ils lancent et testent de manière aussi facile que possible leurs applications sur Android. Un support plus finalisé sera disponible pour Qt 5.2, avec plus de possibilités pour le déploiement et le support de plus d’API Android.

En pratique ? Une première démo Qt 5 sur un Nexus 4, un Asus Transformer Pad TF300T et un Nexus 7 ; elle montre un grand nombre d’effets graphiques de Qt Quick 2, dont les shaders, les particules, etc., à soixante images par seconde.

L’API de lecteur multimédia de Qt Multimedia est aussi supportée en QML, ici avec un shader par-dessus.

Cette version de Qt supporte aussi le multitouch, notamment utile pour du dessin à la main. Cette vidéo montre aussi les menus natifs.

Qt 5 utilise l’API Android en version 10 (soit Android 2.3.3), c’est-à-dire qu’il est utilisable sur un très grand nombre de périphériques (selon certaines statistiques, cela concerne à peu près tous les périphériques : http://www.developpez.com/actu/52541/Android-4-0-devient-plus-populaire-que-Gingerbread-qui-a-la-peau-dure-Jelly-Bean-enregistre-une-forte-adoption/). Ici, sur un Huawei Y100 :

Qu’est-ce qui est actuellement supporté ? Les applications Qt Widgets et Qt Quick, le lecteur multimédia QML de Qt Multimedia, les capteurs les plus utilisés dans Qt Sensors, les fonctionnalités multiplateformes de Qt (comme les contrôles Qt Quick), le développement et le déploiement d’applications dans Qt Creator 2.7.

D’autres choses sont prévues, comme la distribution de Qt par Ministro (afin de partager les bibliothèques dynamiques entre les applications), ce qui sera la méthode la plus recommandée pour Qt 5.1. Tous les détails sont disponibles sur le wiki du projet (http://qt-project.org/wiki/Qt5ForAndroid).

Source : http://blog.qt.digia.com/blog/2013/03/13/preview-of-qt-5-for-android/.

[iOS] Avancée du support d’iOS dans Qt 5.1

De tout go, Digia annonce que Qt 5.2 supportera iOS, soit vers la fin 2013. Cependant, tous les détails ne sont pas encore décidés (comme ce qui concerne les restriction sur l’App Store ou le support de parties plus anciennes du code de Qt). Qt 5.1, en tout cas, contiendra une première version de ce support, le code a été intégré vendredi dernier.

Tout le développement et le déploiement passe par Xcode. Actuellement, la manière de procéder est la création d’un fichier de projet .pro, qui est exporté en un fichier de projet Xcode par QMake (et réexporté à chaque modification), ce dernier étant alors utilisé dans Xcode. Toute l’édition du code peut évidemment se faire en dehors de cet EDI.

Le style Mac de Qt pour plateformes desktop utilise l’API HITheme d’OS X pour l’affichage d’éléments natifs à l’écran. Cependant, cette API n’a pas d’équivalent sur iOS, créer une classe QiOSStyle comme l’actuelle QMacStyle n’est donc pas possible. Les styles multiplateformes tels que le nouveau Fusion sont cependant disponibles. Tous les efforts sur le style des applications seront portés sur les contrôles intégrés dans Qt Quick 2.

Apple limite fortement les possibilités des applications sur iOS. Notamment, il n’est pas possible d’utiliser un compilateur de type JIT, tel que celui utilisé dans V8 – ce qui signifie qu’il n’y aura pas de Qt Quick 2 sur iOS pour le moment. Ce problème est bien connu et une solution est à l’étude.

Actuellement, déjà quelques modules fonctionnent correctement : les widgets, les graphics view, Qt Quick 1, OpenGL, les éléments tactiles et d’orientation.

Application Qt Quick 1 sur iPad.

Pour tester cette première ébauche, il est nécessaire d’avoir Xcode installé (avec les certificats et le périphérique configurés). Ensuite, cloner qtbase

git clone git://gitorious.org/qt/qtbase.git qtbase-ios
 cd qtbase-ios/

et le compiler (soit pour le périphérique, soit pour le simulateur).

./configure -xplatform unsupported/macx-ios-clang -developer-build -nomake examples -nomake tests -release [-sdk iphonesimulator]
 make

Récupérer une démo et l’ouvrir dans Xcode :

git clone git://github.com/msorvig/qt-ios-demo.git
 cd qt-ios-demo
 ../qtbase-ios/bin/qmake
 open qt-ios-demo.xcodeproj

Source : http://blog.qt.digia.com/blog/2013/03/05/qt-for-ios-preview/