Configuration du fichier manifeste de Qt pour Android
Le manifeste Android est un fichier XML nécessaire à toute application Android. Il contient la configuration de l'application pour les différents paramètres et fonctionnalités qu'elle utilise, ainsi que des détails sur l'application elle-même, tels que le nom du paquet, le nom de l'application, la version, etc. Les autorisations et les caractéristiques matérielles peuvent également être définies à partir du manifeste.
Qt for Android maintient une version de AndroidManifest.xml avec une configuration par défaut qui inclut les fonctionnalités, les permissions et d'autres configurations utilisées par le système de construction qui sont nécessaires pour la construction et l'exécution des applications Qt sur Android.
Configuration du projet Qt par rapport au manifeste
Qt définit certaines méta-données qui sont transmises par les systèmes de construction à androiddeployqt qui remplit le manifeste avec les valeurs correctes sans les définir explicitement dans le fichier manifeste. Ces métadonnées se voient attribuer une valeur sous la forme "-- %%INSERT_VALUE%% --", par exemple :
<manifest ...
android:versionCode="-- %%INSERT_VERSION_CODE%% --"
...
</manifest>Cette valeur serait remplie 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 du manifeste :
| Section | Option | Description |
|---|---|---|
| <manifest> | paquetage | Définit le nom du paquet. La valeur par défaut est org.qtproject.example.app_name.Attention : Ce champ est obsolète et déplacé vers |
| android:installLocation | Définit l'emplacement d'installation de l'application, qu'il s'agisse d'un stockage interne ou externe. La valeur par défaut est auto. | |
| android:versionCode | Définit le code de la version interne. Il est alimenté par ANDROID_VERSION_CODE (qmake) et QT_ANDROID_VERSION_CODE (CMake). La valeur par défaut est 1. | |
| android:versionName | Définit le nom de la version publique. Tiré 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 étant anyDensity, largeScreens, normalScreens, et smallScreens. | |
| <application> | android:name | Nom de la classe de l'application. La valeur par défaut est org.qtproject.qt.android.bindings.QtApplication. |
| android:label | Le nom de l'application. La valeur par défaut est le nom de la cible du projet Qt. Il peut être défini à l'aide de QT_ANDROID_APP_NAME. | |
| android:icon | L'icône de l'application en tant que référence à une ressource drawable ou mipmap. Cette balise n'est pas utilisée sauf si elle est définie à l'aide de QT_ANDROID_APP_ICON ou si elle est définie manuellement à l'adresse AndroidManifest.xml. | |
| android:hardwareAccelerated | Définit les préférences en matière d'accélération matérielle. La valeur par défaut est true. | |
| android:requestLegacyExternalStorage | Indique s'il faut utiliser le stockage Android. La valeur par défaut est true. | |
| android:allowBackup | Autorise ou non l'application à participer à l'infrastructure de sauvegarde et de restauration. Si la valeur est false, aucune sauvegarde ou restauration de l'application ne sera jamais effectuée. La valeur par défaut est true. | |
| android:fullBackupOnly | Utiliser ou non la sauvegarde automatique sur les appareils où elle est disponible. La valeur par défaut est false. | |
| <activity> | android:name | Nom de la classe d'activité. La valeur par défaut est org.qtproject.qt.android.bindings.QtActivity. |
| android:configChanges | Liste des 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:launchMode | La méthode utilisée pour lancer l'activité. La valeur par défaut est singleTop. | |
| android:screenOrientation | L'orientation de l'affichage de l'activité sur l'appareil. La valeur par défaut est unspecified. | |
| <intent-filter> | Spécifie les types d'intentions 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:exported | Définit si l'activité peut être lancée par des composants d'autres applications. La valeur par défaut est true. |
Méta-données spécifiques à Qt
En plus de la configuration du manifeste par défaut définie par Qt, Qt définit certaines méta-données qui ne sont valables que pour les applications Qt. Ces méta-données se trouvent généralement dans la section <activity> sous la forme :
<meta-data
android:name="meta-data-name"
android:value="meta-data-value" />Voici une liste de ces méta-données définies par Qt :
| Méta-données Nom | Description |
|---|---|
| Nom_de_la_librairie_de_l'application_de_l'android | Nom de fichier de la bibliothèque C++ native utilisée par l'activité. Note : 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_style | La méthode utilisée pour extraire les informations de style natif d'Android. Pour plus d'informations, voir Extraction de style. La valeur par défaut est minimal. |
| android.app.background_running | Définit si l'application continue à exécuter des tâches en arrière-plan. Définir cette valeur sur true équivaut à définir la variable d'environnement QT_BLOCK_EVENT_LOOPS_WHEN_SUSPENDED sur 0. La valeur par défaut est false.Attention : La valeur |
| android.app.arguments | Définit une liste d'arguments à passer à l'application "arg1 arg2". Elle est alimentée par ANDROID_APPLICATION_ARGUMENTS (qmake) et QT_ANDROID_APPLICATION_ARGUMENTS (CMake). La valeur par défaut n'est pas définie. |
| android.app.splash_screen_drawable_portrait | Définit un objet à dessiner pour un écran d'accueil spécifique au mode portrait. Par exemple : android:resource="@drawable/splash_portrait". La valeur par défaut n'est pas définie. |
| android.app.splash_screen_drawable_landscape | Définit une table à dessin pour un écran d'accueil spécifique au mode paysage. Par exemple : android:resource="@drawable/splash_landscape". La valeur par défaut n'est pas définie. |
| android.app.splash_screen_drawable | Définit une table à dessin pour un écran de démarrage au début de l'application. Remarque : les écrans d'accueil spécifiques à l'orientation sont vérifiés en premier, s'ils ne sont pas définis, ils sont utilisés à la place. Par exemple : |
| android.app.splash_screen_sticky | Définit si l'écran de démarrage reste visible jusqu'à ce qu'il soit explicitement caché par l'application. Pour plus d'informations, voir QAndroidApplication::hideSplashScreen(). |
| android.app.trace_location | Spécifie un emplacement sur l'appareil où l'application peut enregistrer des 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 doit disposer d'une autorisation de stockage pour l'emplacement. Valeur par défaut : non définie. |
Méta-données spécifiques à l'application
Certains attributs de métadonnées sont spécifiques à une application et doivent être placés dans la section <application>:
| Méta-données Nom | Description de l'attribut |
|---|---|
| android.app.system_libs_prefix | Spécifie un chemin de bibliothèque système personnalisé à utiliser pour la recherche de chargement de bibliothèque. Ceci est nécessaire lors de l'utilisation de bibliothèques Qt installées en dehors du répertoire de bibliothèques natives (JNI) par défaut de l'application. La valeur par défaut est /system/lib/. |
Méta-données dans les services
Certains attributs de métadonnées peuvent également être utilisés dans les services. Les principaux sont les suivants :
Permissions et fonctionnalités de Qt
Différents modules Qt peuvent nécessiter certaines autorisations ou fonctionnalités Android pour fonctionner correctement, par exemple, l'autorisation Camera dans QtMultimedia. L'outil androiddeployqt se charge d'inclure ces exigences dans le manifeste Android pendant la construction. Qt définit les lignes suivantes dans le manifeste, qui sont remplacées par les valeurs réelles :
<manifest ...
<!-- %%INSERT_PERMISSIONS -->
<!-- %%INSERT_FEATURES -->
...
</manifest>Note : Si ces lignes sont supprimées du manifeste du projet, Qt ne sera pas en mesure d'inclure les permissions correctes. Certaines fonctionnalités peuvent donc ne pas fonctionner correctement.
Personnaliser les permissions
Depuis Qt 6.8.1, il est possible de remplacer les permissions par défaut définies par les modules Qt. Ceci est utile si vous avez besoin de définir les mêmes permissions que celles utilisées par un module Qt, mais avec des attributs supplémentaires ou différents.
Il y a deux façons d'y parvenir. La première consiste à utiliser la fonction CMake qt_add_android_permission dans l'application CMakeLists.txt. Les permissions ainsi définies ont la priorité sur les mêmes permissions définies par les modules Qt, ce qui évite les doublons.
La deuxième méthode consiste à définir manuellement ces permissions dans le fichier manifeste Android. Les permissions ainsi définies ont la priorité sur les permissions définies par les modules Qt, ou définies avec qt_add_android_permission.
Extraction de style
Qt utilise différentes méthodes pour déterminer comment les contrôles Qt Widgets et Qt Quick doivent être stylisés :
fullpour l'utilisation des contrôles Qt Widgets ou Qt Quick 1.Note : 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 devriez utiliser l'une des autres méthodes.
defaultouminimal: lorsque vous utilisez Qt Quick Controls 2 et pas Qt Widgets ou Qt Quick Controls 1. Cette méthode est plus rapide que l'utilisation des options par défaut ou complètes.noneLes options par défaut ou complètes ne sont pas utilisées : pas d'extraction de style.
Manifeste Qt avant la version 6.2
Les versions de Qt antérieures à la version 6.2 avaient un ensemble supplémentaire de méta-données définies par Qt. Ces attributs permettaient de gérer les dépendances et certains étaient utilisés par le service Ministro qui a été abandonné. Avec Qt 6.2, ils devraient être supprimés. Voici une 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_need_msg
- android.app.fatal_error_msg
Pour plus d'informations sur le manifeste Android, voir Manifeste des applications 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.