Bereitstellen einer Anwendung auf Android

Dieser Artikel beschreibt die technischen Schritte, die für die Bereitstellung einer Qt-Anwendung auf einem Android-Gerät erforderlich sind.

Android-Paketierungsoptionen

Sie können Code unter Android auf drei Arten verpacken: entweder als Anwendungspaket (APK), als Android-App-Bundle (AAB) oder als Android-Archiv (AAR). Bei jedem dieser Formate handelt es sich um eine bestimmte Art von ZIP-Format, das einer vordefinierten Verzeichnisstruktur folgt. Die Unterschiede zwischen diesen Formaten sind:

  • APK-Dateien können auf einem Gerät bereitgestellt und ausgeführt werden.
  • Ein AAB ist dazu bestimmt, vom Google Play Store interpretiert zu werden und wird verwendet, um APK-Dateien für verschiedene Gerätearchitekturen und Formfaktoren zu generieren.
  • Ein AAR unterscheidet sich grundlegend von den Formaten APK und AAB, da es sich um eine Android-Bibliothek handelt. Sie können es als Abhängigkeit für ein Android-App-Modul verwenden, aber Sie können es nicht selbst ausführen.

Android-Anwendungsbündel

Für das lokale Testen der Anwendung ist das APK-Format geeignet, da es direkt auf dem Gerät installiert und ausgeführt werden kann. Für die Verteilung an den Google Play Store wird stattdessen das AAB-Format empfohlen, das ein ähnliches Layout hat. Der zusätzliche Vorteil von AAB besteht darin, dass Sie alle Ziel-ABIs in dasselbe Paket aufnehmen können, ohne die Größe des eigentlichen Pakets zu erhöhen, das von Ihren Benutzern heruntergeladen wird. Bei Verwendung von AAB generiert der Google Play Store optimierte APK-Pakete für die Geräte, von denen die Download-Anforderung ausgeht, und signiert sie automatisch mit Ihrem Herausgeberschlüssel. Weitere Informationen finden Sie unter Veröffentlichen in Google Play.

Weitere Informationen über das AAB-Format finden Sie unter Android App Bundles.

In beiden Fällen wird das Anwendungs-Bundle aus einer bestimmten Verzeichnisstruktur generiert, die die shared Bibliotheken Ihres Projekts und die von Ihrer Anwendung benötigten Qt-Abhängigkeiten enthält. Darüber hinaus werden alle Assets, Ressourcen, jar Dateien oder der Java-Code des Projekts kompiliert und eingebunden.

Generierung des Anwendungspakets

Es wird empfohlen, Qt Creator zu verwenden, um Qt für Android-Anwendungen bereitzustellen. Andernfalls kann dies auch über die Kommandozeile mit Hilfe von CMake oder qmake erfolgen. Weitere Informationen finden Sie unter Erstellen von Qt für Android-Projekten über die Kommandozeile.

Der Paketierungs- und Bereitstellungsprozess wird von CMake oder qmake abgewickelt, die unter der Haube das androiddeployqt-Tool verwenden, um die Besonderheiten der Erstellung und Bereitstellung einer Android-Anwendung zu verwalten. Qt Creator verwendet ebenfalls das gleiche Tool.

Erweitern von Qt mit Android-Funktionen

Standardmäßig übernimmt Qt für Android den Großteil der Arbeit, um eine Android-App zum Laufen zu bringen. Die nützlichsten APIs sind direkt in Qt verfügbar, oder es wird QJniObject verwendet, um nicht direkt verfügbare APIs aufzurufen. Dasselbe gilt für CMake, das sich um die verschiedenen Build- und Deployment-Fälle kümmert. In einigen anderen Fällen kann es jedoch erforderlich sein, die volle Leistungsfähigkeit der nativen Android-Funktionen zu nutzen, z. B. beim Schreiben von Java/Kotlin-Code oder bei der Verwendung der Android-Ressourcenverwaltung. Qt ermöglicht dies, indem es dem Benutzer erlaubt, den Satz von Vorlagen zu erweitern.

Die von Qt verwendeten Standardvorlagen befinden sich im Installationspfad von Qt für Android, zum Beispiel unter ~/Qt/<version>/android_<abi>/src/android/templates für Unix. Um diese Vorlagen zu verwenden, ist es möglich, sie von Qt Creator in Ihr Projekt zu kopieren, siehe Qt Creator: Manifestdateien bearbeiten. Oder Sie können sie manuell in den Quellcode Ihres Projekts in ein Unterverzeichnis android kopieren. Stellen Sie dann sicher, dass Sie die folgende Eigenschaft in Ihrem CMakeLists.txt definieren:

set_property(TARGET target_name PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
          "${CMAKE_CURRENT_SOURCE_DIR}/android")

Oder für qmake in Ihrer pro Datei:

android: ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android

Hinweis: Bei Verwendung von Qt Creator sind die Dateien unter diesem Pfad standardmäßig unter den Projektdateien sichtbar, wenn CMake verwendet wird. Um das gleiche Verhalten mit qmake zu erreichen, fügen Sie diese Dateipfade manuell mit DISTFILES zu Ihrem Projekt hinzu.

Der Build-Prozess kopiert die Templates in das Build-Verzeichnis <build_path>/android-build von Ihrem Projekt oder von den Standard-Templates, wenn das Projekt nicht QT_ANDROID_PACKAGE_SOURCE_DIR gesetzt hat. Danach dient das Verzeichnis <build_path>/android-build als Paketierungsverzeichnis. Das Anwendungsbündel wird von dort aus mit Gradle erstellt.

Gehen wir nun die verschiedenen Teile durch, mit denen der Benutzer arbeiten kann, nachdem er die Standardvorlagen erweitert hat.

AndroidManifest.xml

Die Datei AndroidManifest.xml enthält detaillierte Metainformationen über Ihre Anwendung. Diese Informationen werden verwendet, um Ihr Anwendungsbündel anzupassen, und sie werden vom Gerät verwendet, um zu entscheiden, welche Funktionen aktiviert werden sollen, wie zum Beispiel die Standardausrichtung der Anwendung. Darüber hinaus wird es vom Google Play Store für Informationen über den Versionscode, die Geräteunterstützung, den Paketnamen und vieles mehr verwendet. Das Android-Manifest wird auch verwendet, um Android-Dienste und benutzerdefinierte Android-Aktivitäten zu definieren.

Weitere Informationen über das AndroidManifest.xml finden Sie in der Dokumentation zur Android-Manifest-Datei und auf der Seite Qt Creator für Qt Creator: Bearbeiten von Manifest-Dateien.

Gradle Dateien

Gradle wird zum Erstellen von Android-Paketen verwendet. Qt enthält zwei Sätze von Gradle-bezogenen Dateien:

  • Gradle-Wrapper, die verwendet werden, um eine bestimmte Version von Gradle selbst herunterzuladen, und die Build-Skripte, die zum Aufrufen des Gradle-Builds verwendet werden. Diese Dateien werden mit Qt geliefert, zum Beispiel unter ~/Qt/<version>/android_<abi>/src/3rdparty/gradle.

    Hinweis: Normalerweise wird empfohlen, die gleiche Gradle-Version zu verwenden, mit der Qt geliefert wird. Wenn Sie jedoch eine andere Gradle-Version verwenden möchten, können Sie den Gradle-Wrapper gradle-wrapper.properties modifizieren und ihn auf die gewünschte Gradle-Version einstellen.

  • Die Gradle-Konfigurationsdatei build.gradle, die sich unter den Android-Vorlagen befindet. Diese Datei wird von Gradle benötigt und kann zum Anpassen des Builds verwendet werden. Sie kann verwendet werden, um das Build-Ziel oder die minimale API festzulegen oder Bibliotheksabhängigkeiten hinzuzufügen. Sie kann auch verwendet werden, um das Android-Gradle-Plugin zu setzen, das eine erforderliche Gradle-Abhängigkeit für die Erstellung von Android-Anwendungen ist. Ein Beispiel hierfür ist:
    buildscript {
        ...
        dependencies {
            classpath 'com.android.tools.build:gradle:8.6.0'
        }
    }

    Weitere Informationen finden Sie unter Android: Build Configuration Files.

Java/Kotlin Code

Um Java/Kotlin-Code einzubinden, um einige APIs anzusteuern, die Qt nicht abdeckt, oder aus anderen Gründen, platzieren Sie beliebigen Code unter dem Pfad <QT_ANDROID_PACKAGE_SOURCE_DIR>/src/. Sie können zum Beispiel Java-Methoden aus Qt-Code heraus aufrufen. Ein Beispiel dafür finden Sie unter Qt Android Notifier Example.

Ressourcen

Android erlaubt das Hinzufügen von Ressourcendateien wie Icons, Bilder, Strings, Farben und so weiter. Diese Ressourcen können direkt aus Java/Kotlin-Code oder der Manifestdatei referenziert werden. Alle diese Dateien können unter <QT_ANDROID_PACKAGE_SOURCE_DIR>/res/ zu Ihrem Projekt hinzugefügt werden. App-Symbole können zum Beispiel unter res/drawable/icon.png hinzugefügt werden.

Für weitere Informationen, siehe Android: App-Ressourcen im Überblick.

Qt-interne Ressourcen

Standardmäßig packt Qt einige Ressourcen, die für die ordnungsgemäße Ausführung der Anwendungen benötigt werden. Unter Unix sind diese Ressourcen zum Beispiel unter ~/Qt/<version>/android_<abi>/src/android/templates/res zu finden.

strings.xml

Diese Datei ist unter res/values/strings.xml zu finden. Diese Datei enthält Zeichenketten, die die Qt-Bibliothek verwendet, um Nachrichtenübersetzungen für verschiedene Sprachen zu referenzieren.

libs.xml

Diese Datei ist unter res/values/libs.xml zu finden. Sie dient lediglich zur Verwaltung der Bereitstellungsinformationen der Qt-Bibliotheken und sollte nicht manuell geändert werden.

Android-Assets

Weitere Informationen zur Verwaltung von Android-Assets finden Sie unter Hinzufügen von Ressourcen.

Android-Bibliotheken

Weitere Informationen zur Verwendung von Bibliotheken von Drittanbietern in Ihrem Qt-Projekt finden Sie unter Einbindung einer Bibliothek in ein Android-Projekt.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.