© prettyboy80/Shutterstock.com
Eine kleine Einführung in Qt for Android

Troll knutscht Androiden


Nokia-Manager animierten Symbian-Entwickler mit einem einfachen Versprechen zum Umstieg auf Qt: die neue Technologie sollte Apps für die nächste Milliarde Geräte ermöglichen. Einige Monate – und einen CEO-Wechsel – später wurde das Entwicklungsframework an Digia verkauft, da es mit der damaligen Version von Windows Phone inkompatibel war.

Bogdan Vatra bewies eine geradezu prophetische Vorsehungskraft. Er begann die Arbeit an seiner als „Necessitas“ bezeichneten Portierung im Jahre 2010. Mittlerweile wird sein Projekt von KDE mit Serverressourcen versehen, Digia hat sich seine Dienste als Mitarbeiter gesichert. Für Qt-erfahrene Entwickler bedeutet dies, dass sie ihre Applikationen fortan auch auf Goo­gles quelloffenem Betriebssystem anbieten können. Die dadurch in Aussicht stehende Reichweitensteigerung rechtfertigt den zusätzlichen Aufwand mit Sicherheit.

Leuchtturm

Qt war von Anfang an als Cross-Plattform-Bibliothek vorgesehen. Leider war das Portieren des QtGui-Moduls alles andere als einfach: Die von Qt angebotenen Steuer­elemente mussten mit den Widgets aus dem GUI-Stack des Betriebssystems verdrahtet werden. Der einfachste Weg zur Lösung dieses Problems war das Mitbringen eines kleinen Fenstermanagers, der das eigentliche Rendering der Steuerelemente erledigt. Im Rahmen der Portierung muss man in diesem Fall nur mehr ein „Wedge“ schreiben, das die vom Renderer angelieferten Bitmapdaten in ein vom Betriebssystem bereitgestelltes Fenster kopiert und eventuelle Eingaben des Benutzers einsammelt.

Qt für Android basiert auf diesem Entwicklungsbranch. Eine Qt-für-Android-Applikation besteht – in der einfachsten Form – aus einer Java-Activity, die den Lighthouse-Window-Manager anwirft und die von ihm generierten Daten ausgibt. Die eigentliche Applikationsintelligenz findet sich in Form eines C++-Blobs, der den Qt-Code enthält.

Eine „komplette“ Distribution aller Qt-Bibliotheken ist einige Megabyte groß – bei kompakten Applikationen vervielfacht sich der Umfang der Distributionsdatei. Vatra löst dieses Problem durch ein als Ministro bezeichnetes Hilfsprogramm. Die in allen populären App Stores bereitstehende Software wird vom in die jeweilige Applikation einkompilierten Startcode angewiesen, die benötigten Dateien von einem Zentralserver herunterzuladen – wenn Ministro selbst noch nicht vorhanden ist, so wird der User zum Download des Programms aufgefordert.

Erste Schritte

Nach diesen einführenden Überlegungen ist es an der Zeit, erste Schritte in die Welt von Qt für Android zu setzen. Die im folgenden Artikel gezeigten Screenshots und Anweisungen entstanden unter einer 32-Bit-Version von Ubuntu – die Verwendung von Mac OS X und Windows ist ebenfalls möglich, Unix stellt die „preferred development platform“ des Projekts dar.

Öffnen Sie die unter [1] befindliche Webseite, um das passende Distributionspaket herunterzuladen. Die rund 20 MB große Datei setzt das Vorhandensein einiger Pakete voraus, die in der folgenden Liste zusammengefasst sind:

  • build-essential

  • openjdk-6-jdk

  • ant, Version 1.8 (!!!)

  • ia32-libs-gtk, für 64-Bit-Betriebssysteme

Eventuell fehlende Pakete lassen sich mit apt-get install herunterladen. Im nächsten Schritt muss die Datei in einem Terminal als ausführbar gekennzeichnet und ausgeführt werden. Unter Ubuntu sieht der dazu notwendige Code so aus:

chmod +x linux-online-necessitas-alpha4.1-sdk-installer ./linux-online-necessitas-alpha4.1-sdk-installer 

Im Rahmen der Installation werden einige hundert Megabyte an Daten heruntergeladen. Die von Haus aus voreingestellten Settings laden rund 2,6 GB herunter und belegen schließlich und endlich rund 5 GB auf der Festplatte.

Nach der Installation können Sie die im Verzeichnis /QtCreator/bin/ befindliche QtCreator-Datei starten. Wenn Sie andere, nur mit Root-Rechten lauffähige Qt-Werkzeuge installiert haben, so ist das Verwenden von sudo empfehlenswert – einige geteilte Dateien können sonst nicht angesprochen werden.

Necessitas wird von Haus aus mit Qt 4.8 ausgeliefert. Die Version 5.3 des Frameworks bringt einen wesentlich verbesserten GUI-Stack mit – sie lässt sich bei Bedarf von Hand installieren. Dazu ist ein etwas anderes Setup-Programm notwendig, das in [2] beschrieben wird und unter [3] zum Download bereitsteht.

Die Frage nach dem GUI-Stack

Wer eine Qt-Applikation entwickelt, muss sich für einen GUI-Stack entscheiden. Das altgediente QtGui enthält eine Vielzahl von vorgefertigten Widgets, die primär für die Verwendung am Desktop vorgesehen sind. Auf QML bzw. Qt Quick basierende Anwendungen erstellen ihre Benutzerschnittstelle in einer Mischung aus JSON und JavaScript. Animationen gehen hier leichter von der Hand, komplexe Steuerelemente müssen dafür von Hand zusammengestellt werden.

Research in Motion geht mit Cascades einen „Sonderweg“. Dieser GUI-Stack steht nur unter BlackBerry 10 zur Verfügung. Wenn Sie ihn in einem Ihrer Programme einsetzen, müssen Sie das GUI auf jeden Fall neu schreiben. Besonders ärgerlich ist, dass sich Cascades aufgrund des geänderten Rendering-Pfads nicht mit QtGui oder QML kombinieren lässt....

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang