Sur cette page

Remarques sur la plateforme Android

Cette page contient des informations spécifiques à la compilation et à l'exécution d'applications Qt sur Android. Consultez la section « Versions Android prises en charge » pour connaître les versions Android et les niveaux d'API pris en charge.

Considérations particulières concernant les plugins et les importations

Si une application utilise des plugins qui dépendent d’autres modules, ces modules doivent être répertoriés dans les dépendances de l’application. Pour plus d’informations, consultez la section Détection des dépendances.

Qt GUI Dépendance

Étant donné que les applications Android incluent généralement des éléments d’interface graphique, le plugin Qt pour Android est principalement conçu pour fournir une interface graphique ; il implémente donc les différentes abstractions QPA. Par conséquent, le déploiement d’une application Qt pour Android devrait impliquer une dépendance vis-à-vis de Qt GUI. De plus, il convient de noter que Qt Creator ne prend en charge que les builds et les déploiements Gradle, ce qui signifie que les exécutions en ligne de commande ou via le shell ne sont pas prises en charge par défaut.

Touche « Retour » et geste de retour

Sur Android, le geste de retour (Android 13 et versions ultérieures) et l’appui sur la touche « Retour » du système constituent une demande de navigation, et non une fermeture de fenêtre. S’il n’y a aucun élément gérant l’appui sur la touche « Retour », celui-ci envoie l’application en arrière-plan. L’application conserve son état et reprend là où elle s’était arrêtée, au lieu de se fermer.

Depuis Qt 6.12, une pression sur la touche « Retour » envoie l’application en arrière-plan à l’aide de ` Activity.moveTaskToBack() ` et ne génère plus d’événement de fermeture. Cela signifie que les signaux ` QWidget::closeEvent() ` et ` Window.onClosing ` ne se déclenchent pas lorsqu’un utilisateur appuie sur la touche « Retour ». Si votre application s’appuie sur ces signaux pour intercepter la pression sur la touche « Retour », elle doit adopter l’approche ` Shortcut ` illustrée ci-dessous.

Pour naviguer au sein de l’application, par exemple pour faire apparaître une page à partir d’un StackView, gérez la touche « Retour » et acceptez l’événement. L’acceptation de l’événement empêche Qt d’envoyer l’application en arrière-plan. La méthode recommandée consiste à utiliser un raccourci au niveau de la fenêtre lié à la séquence de touches Back, qui se déclenche quel que soit l’élément ayant le focus actif :

Shortcut {
    sequences: ["Back"]
    enabled: Qt.platform.os === "android" && stack.depth > 1
    onActivated: stack.pop()
}

Sous Android, utilisez la séquence « "Back" » plutôt que « StandardKey.Back ». La touche standard associe également les combinaisons « Backspace » et « Alt+Left », qui seraient déclenchées par un clavier physique.

À la racine de la pile, enabled devient false; ainsi, la pression sur le bouton « Retour » est ignorée et Qt envoie l’application en arrière-plan. Pour avertir au préalable de la présence de modifications non enregistrées, activez le raccourci tant que des modifications sont en attente et affichez une invite via onActivated. Une fois les modifications traitées, le raccourci est désactivé et la pression suivante sur le bouton « Retour » envoie l’application en arrière-plan.

Un élément actif peut également gérer l'Qt::Key_Back e via Keys.onBackPressed, mais uniquement tant qu'il conserve le focus. Une interface tactile ne laisse souvent aucun élément actif, de sorte que l'appui sur le bouton « Retour » ne l'atteint jamais. Le raccourci au niveau de la fenêtre fonctionne quel que soit le focus, c'est donc le choix le plus sûr.

Considérations particulières concernant OpenGL

Les appareils modernes prennent souvent en charge OpenGL ES 3.0 ou 3.1 en plus de la version 2.0. Pour obtenir un contexte OpenGL adapté, définissez la version souhaitée via ` QSurfaceFormat::setVersion()`.

Remarque : l’utilisation des fonctionnalités d’OpenGL ES 3.x entraînera un dysfonctionnement de l’application sur les anciens appareils qui ne prennent en charge que la version 2.0.

Problèmes connus

Qt Creator Problèmes de débogage

Pour plus d’informations, consultez la section « Problèmes connus » deQt Creator .

Saisie prédictive

En raison d'un bug sur certains appareils, lorsque vous désactivez la saisie prédictive avec ` ImhNoPredictiveText`, cette propriété est ignorée et la saisie prédictive reste activée. Pour contourner ce problème, définissez la variable d'environnement ` QT_ANDROID_ENABLE_WORKAROUND_TO_DISABLE_PREDICTIVE_TEXT ` sur ` 1`. Cependant, cela peut entraîner des problèmes avec d'autres claviers, tels que Gboard. Si vous utilisez une langue comme le japonais avec Gboard, seul un clavier QWERTY s'affiche. Cette variable d'environnement est interrogée à chaque fois que le clavier s'affiche ; il est donc possible d'activer ou de désactiver cette solution de contournement selon vos besoins.

Mise en cache des glyphes de texte

En raison d’un bug présent dans certains pilotes OpenGL, le mécanisme utilisé par Qt pour mettre en cache les glyphes de texte ne fonctionne pas comme prévu sur tous les appareils Android, ce qui entraîne un affichage brouillé du texte. Pour y remédier, une solution de contournement a été mise en place, mais elle peut augmenter la consommation de mémoire et affecter les performances de rendu du texte. Cette solution de contournement est désormais utilisée par défaut sur tous les appareils.

Vous pouvez désactiver cette solution de contournement en définissant la variable d’environnement « QT_ANDROID_DISABLE_GLYPH_CACHE_WORKAROUND » sur 1 ou « true ». Cependant, ne procédez ainsi qu’après avoir vérifié que le texte s’affiche correctement sur tous les appareils ciblés.

Limitations

Certains modules ou outils Qt peuvent comporter des fonctionnalités non prises en charge sur Android ou présentant des limitations. Consultez la documentation du module concerné pour connaître les limitations spécifiques à chaque plateforme.

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