Compilation de projets Qt pour Android à partir de la ligne de commande
Compilation avec CMake
Pour compiler des projets CMake avec Qt installé, par exemple sous Linux, utilisez la commande suivante avec le wrapper qt-cmake:
~/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> \
-GNinjaTout au long de cette page, nous utilisons le chemin d'accès au SDK Android pour Linux par souci de simplicité ; toutefois, lorsque vous exécutez ces commandes, veillez à utiliser le chemin d'accès correspondant à votre système.
Le SDK Android est généralement installé par Qt Creator ou Android Studio aux emplacements suivants :
- Linux :
~/Android/Sdk/ - macOS :
~/Library/Android/sdk/ - Windows :
C:\Users\<USER>\AppData\Local\Android\Sdk\
Remarque : si vous utilisez une version de Qt compilée par vos soins, vous n'avez pas besoin de fournir les arguments SDK et NDK, car les mêmes valeurs que celles utilisées pour compiler Qt sont utilisées avec qt-cmake.
Compilation de paquets multi-ABI à l’aide de CMake
Dans Qt 6.12, il existe plusieurs façons de compiler un paquet multi-ABI. Par défaut, seule l’ABI associée au script qt-cmake est sélectionnée. Définir la variable QT_ANDROID_BUILD_ALL_ABIS sur TRUE active la détection automatique des SDK Qt pour Android disponibles. Le mécanisme de détection suppose l’utilisation de la structure de répertoires par défaut fournie par Qt Online Installer:
~/Qt/<qt_version>:
android_arm64_v8a
android_armv7
android_x86
android_x86_64La commande ci-dessous illustre la méthode la plus simple pour créer un paquet Android multi-ABI à l’aide des SDK Qt pour Android fournis par Qt Online Installer:
~/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>
-GNinjaÀ l'aide de la variable QT_ANDROID_ABIS, il est possible de personnaliser la liste des ABI pour lesquelles le projet est compilé. Les kits de développement Qt pour Android correspondants doivent respecter la structure de répertoires décrite précédemment. La ligne de commande suivante configure un projet pour les ABI arm64-v8a et x86 uniquement :
~/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>
-GNinjaRemarque : l’ABI du SDK principal auquel appartient le script qt-cmake est ajouté sans condition à la liste des ABI utilisées. Il n’est pas possible de l’exclure de la compilation.
Remarque : QT_ANDROID_BUILD_ALL_ABIS a une priorité plus élevée que QT_ANDROID_ABIS.
Les chemins d’accès aux SDK Qt pour Android qui ne correspondent pas à la structure de répertoires par défaut peuvent être modifiés à l’aide des variables QT_PATH_ANDROID_ABI_<ABI> correspondantes.
L’exemple suivant active la détection automatique des SDK Qt pour Android disponibles et spécifie des chemins d’accès personnalisés vers les SDK armeabi-v7a et arm64-v8a:
<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>
-GNinjaIl est également possible de définir la propriété de cible QT_ANDROID_ABIS qui spécifie une liste d’ABI pour lesquelles la cible exécutable unique est compilée. Par exemple :
qt_add_executable(MyApp main.cpp)
set_target_properties(MyApp PROPERTIES QT_ANDROID_ABIS "arm64-v8a;x86")La cible MyApp sera compilée uniquement pour armeabi-v7a et arm64-v8a, même si la variable QT_ANDROID_BUILD_ALL_ABIS ou QT_ANDROID_ABIS est définie.
Création du bundle Android
Une fois le projet configuré, vous pouvez utiliser les cibles CMake suivantes pour créer le bundle d'application :
cmake --build . --target apkOu pour générer l’AAB :
cmake --build . --target aabEn arrière-plan, votre code Qt est compilé et copié dans le répertoire android-build, puis Gradle est utilisé pour compiler le code Java et empaqueter l'application.
Signature du paquet Android
Si un APK destiné à être publié est compilé, il doit être signé. Pour plus d’informations sur la signature du package avec Qt Creator, consultez la section « Signer des paquets Android ». Sinon, vérifiez les variables CMake QT_ANDROID_SIGN_APK et QT_ANDROID_SIGN_AAB.
Compilation d’un fichier AAR (Android Archive)
Remarque : la prise en charge de la compilationAAR a été introduite dans Qt 6.8.
Une archive Android (AAR) est un format de bibliothèque Android. Contrairement à un APK ou à un AAB, elle ne peut pas être exécutée de manière autonome ; elle est plutôt destinée à être intégrée en tant que dépendance dans une application Android native. Il s’agit de la configuration classique lorsque l’on héberge du contenu Qt Qml au sein d’une activité Android native.
Pour générer un fichier AAR, définissez votre application Qt avec `qt_add_executable ` comme d’habitude. Les cibles de compilation AAR sont créées automatiquement parallèlement aux cibles APK et AAB. Compilez tous les paquets AAR d’un projet à l’aide de la commande suivante :
cmake --build . --target aarPour compiler uniquement l'AAR pour une cible spécifique nommée « myapp » :
cmake --build . --target myapp_make_aarCompilation avec qmake
Vous pouvez continuer à utiliser qmake pour compiler des projets utilisateur comme dans Qt 5.
Remarque : la compilation de paquets multi-ABI avec « qmake » n’est pas prise en charge dans Qt 6.
Voir également QT_ANDROID_ABIS, QT_ANDROID_BUILD_ALL_ABIS, QT_PATH_ANDROID_ABI_<ABI> et 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.