Qt für Android-Projekte über die Befehlszeile kompilieren
Kompilieren mit CMake
Um CMake-Projekte mit einem installierten Qt zu erstellen, verwenden Sie beispielsweise unter Linux Folgendes mit dem qt-cmake- Wrapper:
~/Qt/<qt_version>/android_<abi>/bin/qt-cmake \
-DANDROID_SDK_ROOT=~/Android/Sdk \
-DANDROID_NDK_ROOT=~/Android/Sdk/ndk/27.2.12479018 \
-S <source_dir> -B <build_dir> \
-GNinjaDer Einfachheit halber verwenden wir auf dieser Seite durchgehend den Android-SDK-Pfad für Linux. Achten Sie jedoch bei der Ausführung dieser Befehle darauf, den für Ihr System zutreffenden Pfad zu verwenden.
Das Android SDK wird üblicherweise von „ Qt Creator “ oder Android Studio an folgenden Speicherorten installiert:
- Linux:
~/Android/Sdk/ - macOS:
~/Library/Android/sdk/ - Windows:
C:\Users\<USER>\AppData\Local\Android\Sdk\
Hinweis: Wenn Sie ein selbst erstelltes Qt verwenden, müssen Sie die Argumente für SDK und NDK nicht angeben, da für „qt-cmake“ dieselben Werte verwendet werden wie beim Erstellen von Qt.
Erstellen von Multi-ABI-Paketen mit CMake
In Qt 6.12 gibt es mehrere Möglichkeiten, ein Multi-ABI-Paket zu erstellen. Standardmäßig ist nur die zum qt-cmake-Skript gehörende einzelne ABI ausgewählt. Durch Setzen der Variablen `QT_ANDROID_BUILD_ALL_ABIS ` auf ` TRUE ` wird die automatische Erkennung verfügbarer Qt for Android-SDKs aktiviert. Der Erkennungsmechanismus setzt die Verwendung der von Qt Online Installer bereitgestellten Standardverzeichnisstruktur voraus:
~/Qt/<qt_version>:
android_arm64_v8a
android_armv7
android_x86
android_x86_64Der folgende Befehl zeigt den einfachsten Weg, ein Android-Multi-ABI-Paket unter Verwendung der von Qt Online Installer bereitgestellten Qt-for-Android-SDKs zu erstellen:
~/Qt/<qt_version>/android_<abi>/bin/qt-cmake \
-DQT_ANDROID_BUILD_ALL_ABIS=TRUE \
-DANDROID_SDK_ROOT=~/Android/Sdk \
-DANDROID_NDK_ROOT=~/Android/Sdk/ndk/27.2.12479018 \
-S <source_directory> -B <build_directory>
-GNinjaMithilfe der Variablen ` QT_ANDROID_ABIS ` lässt sich die Liste der ABIs, für die das Projekt erstellt wird, anpassen. Die entsprechenden Qt-für-Android-Entwicklungskits müssen der zuvor beschriebenen Verzeichnisstruktur entsprechen. Die folgende Befehlszeile konfiguriert ein Projekt ausschließlich für die ABIs von arm64-v8a und x86:
~/Qt/<qt_version>/android_<abi>/bin/qt-cmake \
-DQT_ANDROID_ABIS="arm64-v8a;x86" \
-DANDROID_SDK_ROOT=~/Android/Sdk \
-DANDROID_NDK_ROOT=~/Android/Sdk/ndk/27.2.12479018 \
-S <source_directory> -B <build_directory>
-GNinjaHinweis: Die ABI des primären SDK, zu dem das qt-cmake-Skript gehört, wird bedingungslos zur Liste der verwendeten ABIs hinzugefügt. Es ist nicht möglich, sie aus dem Build auszuschließen.
Hinweis: QT_ANDROID_BUILD_ALL_ABIS hat eine höhere Priorität als QT_ANDROID_ABIS.
Pfade zu den Qt-for-Android-SDKs, die nicht der Standardverzeichnisstruktur entsprechen, können mithilfe der entsprechenden Variablen ` QT_PATH_ANDROID_ABI_<ABI> ` geändert werden.
Das folgende Beispiel aktiviert die automatische Erkennung verfügbarer Qt-für-Android-SDKs und legt benutzerdefinierte Pfade zu den SDKs „ armeabi-v7a “ und „ arm64-v8a “ fest:
<qt_for_android_install_path>/bin/qt-cmake \
-DQT_ANDROID_BUILD_ALL_ABIS=TRUE
-DQT_PATH_ANDROID_ABI_armeabi-v7a="<Qt/for/armeabi-v7a>" \
-DQT_PATH_ANDROID_ABI_arm64-v8a="<Qt/for/arm64-v8a>" \
-DANDROID_SDK_ROOT=~/Android/Sdk \
-DANDROID_NDK_ROOT=~/Android/Sdk/ndk/27.2.12479018 \
-S <source_directory> -B <build_directory>
-GNinjaEs ist auch möglich, die Ziel-Eigenschaft ` QT_ANDROID_ABIS ` festzulegen, die eine Liste der ABIs angibt, für die das einzelne ausführbare Ziel erstellt wird. Zum Beispiel:
qt_add_executable(MyApp main.cpp)
set_target_properties(MyApp PROPERTIES QT_ANDROID_ABIS "arm64-v8a;x86")Das Ziel „ MyApp “ wird ausschließlich für „ armeabi-v7a “ und „ arm64-v8a “ erstellt, selbst wenn die Variable „ QT_ANDROID_BUILD_ALL_ABIS “ oder „ QT_ANDROID_ABIS “ gesetzt ist.
Erstellen des Android-Bundles
Sobald das Projekt konfiguriert ist, können Sie die folgenden CMake-Ziele verwenden, um das Anwendungs-Bundle zu erstellen:
cmake --build . --target apkOder um das AAB zu generieren:
cmake --build . --target aabIm Hintergrund wird Ihr Qt-Code erstellt und in das Verzeichnis „ android-build “ kopiert; anschließend wird Gradle verwendet, um den Java-Code zu erstellen und die Anwendung zu verpacken.
Signieren des Android-Pakets
Wenn eine APK für die Veröffentlichung erstellt wird, sollte sie signiert werden. Weitere Informationen zum Signieren des Pakets mit „ Qt Creator “ finden Sie unter „Signieren von Android-Paketen“. Andernfalls überprüfen Sie die CMake-Variablen ` QT_ANDROID_SIGN_APK ` und `QT_ANDROID_SIGN_AAB`.
Erstellen einer AAR-Datei (Android Archive)
Hinweis: Die Unterstützung für denAAR -Build wurde in Qt 6.8 eingeführt.
Ein Android-Archiv (AAR) ist ein Android-Bibliotheksformat. Im Gegensatz zu einer APK- oder AAB-Datei kann es nicht eigenständig ausgeführt werden; stattdessen ist es dafür vorgesehen, als Abhängigkeit in eine native Android-Anwendung eingebettet zu werden. Dies ist die typische Konfiguration, wenn Qt Qml-Inhalte innerhalb einer nativen Android-Aktivität gehostet werden.
Um eine AAR zu erstellen, definieren Sie Ihre Qt-Anwendung wie gewohnt mit `qt_add_executable`. AAR-Build-Ziele werden automatisch neben den APK- und AAB-Zielen erstellt. Erstellen Sie alle AAR-Pakete in einem Projekt mit:
cmake --build . --target aarUm nur die AAR für ein bestimmtes Ziel namens „ myapp “ zu erstellen:
cmake --build . --target myapp_make_aarErstellen mit qmake
Sie können weiterhin „ qmake “ verwenden, um Benutzerprojekte wie in Qt 5 zu erstellen.
Hinweis: Das Erstellen von Multi-ABI-Paketen mit „ qmake “ wird in Qt 6 nicht unterstützt.
Siehe auch QT_ANDROID_ABIS, QT_ANDROID_BUILD_ALL_ABIS, QT_PATH_ANDROID_ABI_<ABI> und QT_ANDROID_ABIS.
© 2026 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.