Sur cette page

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> \
    -GNinja

Tout 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_64

La 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>
    -GNinja

Remarque : 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>
    -GNinja

Il 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 apk

Ou pour générer l’AAB :

cmake --build . --target aab

En 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 aar

Pour compiler uniquement l'AAR pour une cible spécifique nommée « myapp » :

cmake --build . --target myapp_make_aar

Compilation 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.