Erstellen von Qt für Android-Projekten von der Kommandozeile aus
Bauen mit CMake
Um CMake-Projekte mit einem installierten Qt zu erstellen, verwenden Sie z.B. für Linux die folgenden Befehle mit dem Wrapper qt-cmake:
~/Qt/<qt_version>/android_<abi>/bin/qt-cmake \ -DANDROID_SDK_ROOT=~/Android/Sdk \ -DANDROID_NDK_ROOT=~/Android/Sdk/ndk/26.1.10909125 \ -S <source_dir> -B <build_dir> \ -GNinja
Auf dieser Seite verwenden wir der Einfachheit halber den Android-SDK-Pfad für Linux. Stellen Sie jedoch sicher, dass Sie beim Ausführen dieser Befehle den entsprechenden Pfad Ihres Systems verwenden.
Das Android SDK wird üblicherweise von Qt Creator oder Android Studio an den folgenden Stellen installiert:
- Linux: ~/Android/Sdk/
- macOS: ~/Library/Android/sdk/
- Windows: C:\Benutzer\<BENUTZER>\AppData\Local\Android\Sdk\
Hinweis: Wenn Sie ein selbst erstelltes Qt verwenden, müssen Sie die SDK- und NDK-Argumente nicht angeben, da die gleichen Werte, die für die Erstellung von Qt verwendet werden, auch mit qt-cmake verwendet werden.
Erstellen von Multi-ABI-Paketen mit CMake
In Qt 6.8 gibt es mehrere Möglichkeiten, ein Multi-ABI-Paket zu erstellen. Standardmäßig wird nur die einzelne ABI ausgewählt, die zum qt-cmake Skript gehört. Das Setzen der Variable QT_ANDROID_BUILD_ALL_ABIS auf TRUE
ermöglicht die automatische Erkennung der verfügbaren Qt for Android SDKs. Der Erkennungsmechanismus geht von der Verwendung der Standardverzeichnisstruktur aus, die von Qt Online Installer bereitgestellt wird:
~/Qt/<qt_version>: android_arm64_v8a android_armv7 android_x86 android_x86_64
Der 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/26.1.10909125 \ -S <source_directory> -B <build_directory> -GNinja
Mit der Variable QT_ANDROID_ABIS ist es möglich, die Liste der ABIs, für die das Projekt erstellt wird, anzupassen. Die entsprechenden Qt for Android Development Kits müssen der zuvor beschriebenen Verzeichnisstruktur folgen. Die folgende Befehlszeile konfiguriert ein Projekt nur für arm64-v8a
und x86
ABIs:
~/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/26.1.10909125 \ -S <source_directory> -B <build_directory> -GNinja
Hinweis: Die ABI des primären SDK, zu dem das qt-cmake Skript gehört, wird der Liste der verwendeten ABIs bedingungslos hinzugefügt. Es ist nicht möglich, sie vom 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 mit der Standardverzeichnisstruktur übereinstimmen, können mit den entsprechenden QT_PATH_ANDROID_ABI_<ABI> Variablen geändert werden.
Das folgende Beispiel aktiviert die automatische Erkennung der verfügbaren Qt für Android SDKs und gibt benutzerdefinierte Pfade zu armeabi-v7a
und arm64-v8a
SDKs an:
<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/26.1.10909125 \ -S <source_directory> -B <build_directory> -GNinja
Es ist auch möglich, die Eigenschaft QT_ANDROID_ABIS target zu setzen, die eine Liste von 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 nur für armeabi-v7a
und arm64-v8a
erstellt, auch 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-Targets verwenden, um das Anwendungs-Bundle zu erstellen:
cmake --build . --target apk
Oder um das AAB zu erzeugen:
cmake --build . --target aab
Unter der Haube wird Ihr Qt-Code erstellt und in das Verzeichnis android-build
kopiert, dann wird Gradle verwendet, um den Java-Code zu erstellen und die Anwendung zu verpacken.
Signieren des Android-Pakets
Wenn ein APK für die Veröffentlichung erstellt wird, sollte es signiert werden. Weitere Informationen zum Signieren des Pakets mit Qt Creator finden Sie unter Signieren von Android-Paketen. Ansonsten überprüfen Sie die CMake-Variablen QT_ANDROID_SIGN_APK und QT_ANDROID_SIGN_AAB.
Erstellen einer AAR (Android Archiv) Datei
cmake --build . --target aar
Bauen mit qmake
Sie können weiterhin qmake
verwenden, um Benutzerprojekte wie in Qt 5 zu erstellen.
Hinweis: Die Erstellung 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.
© 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.