Sur cette page

Configuration du fichier manifeste Qt pour Android

Le manifeste Android est un fichier XML indispensable à toute application Android. Il contient la configuration de l'application pour différents paramètres et fonctionnalités utilisés par celle-ci, ainsi que des informations sur l'application elle-même, telles que le nom du paquet, le nom de l'application, la version, etc. Les autorisations et les fonctionnalités matérielles peuvent également être définies à partir du manifeste.

Qt pour Android fournit une version du fichier ` AndroidManifest.xml ` avec une configuration par défaut comprenant les fonctionnalités, les autorisations et d’autres paramètres utilisés par le système de compilation, qui sont nécessaires à la compilation et à l’exécution d’applications Qt sur Android.

Configuration du projet Qt vers le manifeste

Qt définit certaines métadonnées qui sont transmises depuis les systèmes de compilation vers androiddeployqt, lequel remplit le manifeste avec les valeurs correctes sans qu'il soit nécessaire de les définir explicitement dans le fichier manifeste. À ces métadonnées est attribuée une valeur sous la forme "-- %%INSERT_VALUE%% --", par exemple :

<manifest ...
    android:versionCode="-- %%INSERT_VERSION_CODE%% --"
    ...
</manifest>

Ce champ serait renseigné avec le code de version défini, par exemple, dans CMake.

Configuration par défaut de Qt

Qt définit par défaut la configuration suivante dans le manifeste :

SectionOptionDescription
<manifest>packageDéfinit le nom du package. La valeur par défaut est org.qtproject.example.app_name.

Avertissement : ce champ est obsolète et a été déplacé vers build.gradle. Il sera supprimé dans une prochaine version.

android:installLocationDéfinit l'emplacement d'installation de l'application, qu'il s'agisse de la mémoire interne ou externe. La valeur par défaut est auto.
android:versionCodeDéfinit le code de version interne. Rempli à partir de ANDROID_VERSION_CODE (qmake) et QT_ANDROID_VERSION_CODE (CMake). La valeur par défaut est 1.
android:versionNameDéfinit le nom public de la version. Rempli à partir de ANDROID_VERSION_NAME (qmake) et QT_ANDROID_VERSION_NAME (CMake). La valeur par défaut est 1.0.
<supports-screens>Définit les tailles d'écran prises en charge par l'application ; les valeurs par défaut sont anyDensity, largeScreens, normalScreens et smallScreens.
<application>android:nameNom de la classe de l’application. La valeur par défaut est org.qtproject.qt.android.bindings.QtApplication.
android:labelÉtiquette du nom de l'application. La valeur par défaut est le nom de la cible du projet Qt. Elle peut être définie à l'aide de QT_ANDROID_APP_NAME.
android:iconL'icône de l'application sous forme de référence à une ressource « drawable » ou « mipmap ». Cette balise n'est utilisée que si elle est définie via QT_ANDROID_APP_ICON ou manuellement dans le fichier AndroidManifest.xml.
android:hardwareAcceleratedDéfinit la préférence d'accélération matérielle. La valeur par défaut est « true ».
<activity>android:nameNom de la classe d’activité. La valeur par défaut est org.qtproject.qt.android.bindings.QtActivity.
android:configChangesRépertorie les changements de configuration gérés par l'activité. La valeur par défaut est orientation, uiMode, screenLayout, screenSize, smallestScreenSize, layoutDirection, locale, fontScale, keyboard, keyboardHidden, navigation, mcc, mnc, density.
android:launchModeMéthode utilisée pour lancer l'activité. La valeur par défaut est « singleTop ».
android:screenOrientationL'orientation de l'affichage de l'activité sur l'appareil. La valeur par défaut est « unspecified ».
<intent-filter>Spécifie les types d'intents auxquels l'activité peut répondre. La valeur par défaut est
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
android:exportedDétermine si l'activité peut être lancée par des composants d'autres applications. La valeur par défaut est « true ».

Métadonnées spécifiques à Qt

Outre la configuration par défaut du manifeste définie par Qt, Qt définit certaines métadonnées qui ne s'appliquent qu'aux applications Qt. Ces métadonnées se trouvent généralement dans la section <activity> sous la forme suivante :

<meta-data
    android:name="meta-data-name"
    android:value="meta-data-value" />

Voici une liste de ces métadonnées définies par Qt :

Nom de la métadonnéeDescription
android.app.lib_name Nom de fichier de la bibliothèque C++ native utilisée par l'activité.

Remarque : cet attribut est obligatoire et ne doit pas être supprimé. La valeur par défaut est le nom de la cible du projet Qt.

android.app.extract_android_styleMéthode utilisée pour extraire les informations de style Android natif. Pour plus d’informations, consultez la section Extraction de style. La valeur par défaut est « minimal ».
android.app.background_running Détermine si l'application continue d'exécuter des tâches en arrière-plan. Définir cette valeur sur true revient à définir la variable d'environnement QT_BLOCK_EVENT_LOOPS_WHEN_SUSPENDED sur 0. La valeur par défaut est false.

Avertissement : définir cette valeur sur « true » peut entraîner un plantage inattendu si l'application tente d'afficher un élément après l'envoi du signal « QGuiApplication::applicationStateChanged() » alors que l'état est « Qt::ApplicationSuspended ».

android.app.arguments Définit une liste d’arguments à transmettre à l’application "arg1 arg2". Remplie à partir de ANDROID_APPLICATION_ARGUMENTS (qmake) et QT_ANDROID_APPLICATION_ARGUMENTS (CMake). Aucune valeur par défaut n’est définie.
android.app.splash_screen_drawable_portraitDéfinit un élément graphique pour un écran de démarrage spécifique au mode portrait. Par exemple : android:resource="@drawable/splash_portrait". Aucune valeur par défaut n’est définie.
android.app.splash_screen_drawable_landscapeDéfinit un élément « drawable » pour un écran de démarrage spécifique au mode paysage. Par exemple : android:resource="@drawable/splash_landscape". Aucune valeur n'est définie par défaut.
android.app.splash_screen_drawableDéfinit un élément graphique pour l'écran de démarrage au lancement de l'application.

Remarque : les écrans de démarrage spécifiquesà une orientation sont vérifiés en premier ; s’ils ne sont pas définis, celui-ci est utilisé à la place. Par exemple : android:resource="@drawable/splash". La valeur par défaut n’est pas définie.

android.app.splash_screen_stickyDétermine si l'écran de démarrage reste visible jusqu'à ce qu'il soit explicitement masqué par l'application. Pour plus d'informations, consultez QAndroidApplication::hideSplashScreen().
android.app.trace_locationSpécifie un emplacement sur l’appareil où l’application peut enregistrer les fichiers de traçage. Par exemple : /storage/emulated/0/Android/data/<app_package_name>/files/. Ceci est nécessaire lors de l’utilisation du backend de traçage Common Trace Format (CTF).

Remarque : l'application a besoin d'une autorisation de stockage pour cet emplacement. Par défaut : non défini.

Métadonnées spécifiques à l'application

Certains attributs de métadonnées s'appliquent à l'ensemble de l'application et doivent être placés dans la section « <application> » :

Nom de la métadonnéeDescription
android.app.system_libs_prefix Spécifie un chemin d'accès personnalisé aux bibliothèques système à utiliser pour la recherche lors du chargement des bibliothèques. Ceci est nécessaire lorsque l'on utilise des bibliothèques Qt installées en dehors du répertoire par défaut des bibliothèques natives (JNI) d'une application. La valeur par défaut est /system/lib/.

Métadonnées dans les services

Certains attributs de métadonnées peuvent également être utilisés dans les services. Les principaux sont les suivants :

Autorisations et fonctionnalités Qt

Certains modules Qt peuvent nécessiter des autorisations ou des fonctionnalités Android pour fonctionner correctement, par exemple l'autorisation d'accès à l'appareil photo dans QtMultimedia. L'outil androiddeployqt se charge d'intégrer ces exigences dans le manifeste Android lors de la compilation. Qt définit les lignes suivantes dans le manifeste, qui sont ensuite remplacées par les valeurs réelles :

<manifest ...
    <!-- %%INSERT_PERMISSIONS -->
    <!-- %%INSERT_FEATURES -->
    ...
</manifest>

Remarque : si ces lignes sont supprimées du manifeste du projet, Qt ne pourra pas inclure les autorisations correctes. Certaines fonctionnalités risquent donc de ne pas fonctionner correctement.

Personnalisation des autorisations

Depuis Qt 6.8.1, il est possible de remplacer les autorisations par défaut définies par les modules Qt. Cela s'avère utile si vous devez définir les mêmes autorisations que celles utilisées par un module Qt, mais avec des attributs supplémentaires ou différents.

Il existe deux façons d'y parvenir. La première consiste à utiliser la fonction CMake `qt_add_android_permission ` dans le fichier ` CMakeLists.txt` de l'application. Les autorisations définies de cette manière ont priorité sur les autorisations identiques définies par les modules Qt, ce qui évite les doublons.

La deuxième méthode consiste à définir manuellement ces autorisations dans le fichier manifeste Android. Les autorisations définies de cette manière ont priorité sur celles définies par les modules Qt ou via `qt_add_android_permission`.

Extraction de styles

Qt utilise différentes méthodes pour déterminer comment les éléments Qt Widgets et Qt Quick Controls doivent être stylisés :

  • full: lors de l'utilisation de Qt Widgets ou Qt Quick Controls 1.

    Remarque : cette méthode est obsolète car elle utilise certaines interfaces Android non-SDK, qui ont été restreintes par Google à partir d’Android 9.0 (API 28). Vous devez utiliser l’une des autres méthodes.

  • default ou minimal: lorsque vous utilisez Qt Quick Controls 2 et que vous n’utilisez ni Qt Widgets ni Qt Quick Controls 1. Cette méthode est plus rapide que l’utilisation des options par défaut ou « full ».
  • none: aucune extraction de style.

Manifeste Qt avant la version 6.2

Les versions de Qt antérieures à la version 6.2 comportaient un ensemble supplémentaire de métadonnées définies par Qt. Ces attributs servaient à gérer les dépendances et certains étaient utilisés par le service Ministro, désormais abandonné. Avec Qt 6.2, ils doivent être supprimés. Voici la liste de ces attributs :

  • android.app.qt_sources_resource_id
  • android.app.repository
  • android.app.bundled_libs_resource_id
  • android.app.bundle_local_qt_libs
  • android.app.use_local_qt_libs
  • android.app.libs_prefix
  • android.app.load_local_libs_resource_id
  • android.app.load_local_jars
  • android.app.static_init_classes
  • android.app.qt_libs_resource_id
  • android.app.ministro_not_found_msg
  • android.app.ministro_nécessaire_msg
  • android.app.fatal_error_msg

Pour plus d'informations sur le manifeste Android, consultez la page Manifeste d'application Android.

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