Consignes fondamentales relatives à la qualité des applications

Pour fournir une base solide à une application de qualité, suivez les consignes relatives aux critères fondamentaux de qualité des applications.

Les consignes définissent le niveau de qualité minimal que toutes les applis doivent respecter.

Qualité adaptative des applications

Les applications Android s'exécutent sur une grande variété d'appareils, des téléphones compacts aux tablettes, en passant par les pliables, les ordinateurs de bureau, les écrans connectés, les systèmes d'infodivertissement des voitures, les téléviseurs et la XR. Les modes de fenêtrage, comme l'écran partagé et le fenêtrage du bureau, permettent aux applications de s'exécuter dans des parties redimensionnables d'un écran.

Suivez les consignes relatives à la qualité des applications adaptatives, ainsi que les consignes fondamentales relatives à la qualité des applications, pour :

  • Créer des applications optimisées pour tous les facteurs de forme et toutes les tailles d'écran
  • Améliorez le classement de vos applications dans les fiches et les résultats de recherche Google Play
  • Acquérir plus d'utilisateurs et améliorer la rétention des utilisateurs

Consignes

Les consignes de base suivantes vous aident à créer une application de base de haute qualité.

Expérience utilisateur

Les modèles de conception graphique et d'interaction standards d'Android offrent une expérience utilisateur cohérente et intuitive.

Si possible, utilisez des composants Material Design plutôt que les composants de la plate-forme Android pour créer l'interface utilisateur de votre application. Material Design offre une apparence Android moderne et une UI cohérente entre les différentes versions d'Android.

Facilité d'utilisation

ID Tests Description
Consistent_UX T-Consistent_UX,
T-SD_Card
L'application offre une expérience utilisateur cohérente pour tous les cas d'utilisation sur tous les facteurs de forme.
App_Switcher T-App_Switcher,
T-SD_Card
L'application passe en arrière-plan lorsque l'utilisateur bascule vers une autre application. Elle revient au premier plan lorsqu'elle est réactivée à partir du sélecteur d'applications Récents.
Sleep_Resume T-Sleep_Resume,
T-SD_Card
Lorsqu'elle est au premier plan, l'application se met en pause quand l'appareil passe en veille et reprend quand l'appareil se réactive.
Lock_Resume T-Lock_Resume,
T-SD_Card
Lorsque l'application est au premier plan, elle se met en pause quand l'appareil est verrouillé et reprend quand il est déverrouillé.

Interface utilisateur

ID Tests Description
Display_State_Parity T-Orientation_Transitions

L'appli offre globalement les mêmes fonctionnalités et les mêmes actions quelles que soient l'orientation de l'écran et l'état de pliage, et préserve la parité fonctionnelle entre les orientations et les états de pliage.

Fullscreen_Display T-Orientation_Transitions

L'application remplit la fenêtre de l'application dans les deux orientations et n'est pas au format letterbox en raison de changements de configuration, y compris le pliage et le dépliage de l'appareil.

En cas de légère variation de la géométrie de l'écran, l'utilisation du format letterbox sur une toute petite zone est tolérée.

Orientation_Transitions T-Orientation_Transitions L'application gère les transitions rapides entre les différentes orientations de l'écran et le pliage/dépliage des appareils, sans problèmes d'affichage ni perte d'état.

Qualité visuelle

ID Tests Description
Graphic_Quality T-Graphic_Quality

L'appli affiche les graphismes, textes, images et autres éléments d'interface utilisateur sans distorsion, flou ni pixélisation notable.

  • L'application utilise des drawables vectoriels quand c'est possible.
  • L'application affiche des graphismes de qualité sur l'ensemble des tailles d'écran et facteurs de forme ciblés.
  • Aucun crénelage n'est visible au bord des menus, des boutons et des autres éléments d'interface utilisateur.
Line_Length T-Line_Length L'appli garantit la lisibilité du texte et des blocs de texte en limitant la longueur des lignes à 45-75 caractères (espaces compris) pour chacune des langues compatibles.
Theme_Support T-Theme_Support Le contenu de l'appli et tous les contenus Web auxquels elle accède sont compatibles avec les thèmes clair et sombre.
ID Tests Description
Back_Button_Nav T-Back_Nav L'appli est compatible avec la navigation standard via le bouton Retour et n'affiche pas de commande personnalisée servant de bouton de retour.
Back_Gesture_Nav T-Back_Nav L'appli est compatible avec la navigation par gestes pour accéder et revenir à l'écran d'accueil.
State_Preservation T-State_Preservation,
T-Back_Nav

Elle préserve l'état de l'utilisateur ou son propre état lorsqu'elle quitte le premier plan, et empêche la perte accidentelle de données en cas de retour en arrière ou d'un autre changement d'état.

Lors du retour au premier plan, l'appli restaure l'état préservé et les éventuelles transactions avec état qui étaient en attente. Exemples : modifications effectuées dans des champs modifiables, progression dans un jeu, menus, vidéos et autres sections de l'appli.

  • Lorsque l'appli est réactivée à partir du sélecteur d'applications récentes, l'utilisateur retrouve l'état exact dans lequel elle se trouvait lors de la dernière utilisation.
  • Lorsque l'appli est réactivée suite à une sortie de veille de l'appareil (état verrouillé), l'utilisateur retrouve l'état exact dans lequel elle se trouvait lors de la dernière utilisation.
  • Lorsque l'appli est réactivée depuis Accueil ou Toutes les applis, elle doit effectuer l'une des opérations suivantes, en fonction du temps écoulé depuis sa dernière utilisation :
    • Si elle a été utilisée pour la dernière fois il y a peu de temps (quelques minutes), elle doit rétablir un état le plus proche possible de son état précédent.
    • Si elle n'a pas été utilisée depuis plus longtemps, essayez de faire en sorte que l'appli retrouve un état le plus proche possible de son état précédent, sinon démarrez-la sur l'écran d'accueil ou un autre état par défaut.

Notifications

ID Tests Description
Notification_Quality T-Notification_Quality

Les notifications fournissent des informations pertinentes sur votre application.

  • N'utilisez pas les notifications pour faire de la promotion croisée ou de la publicité pour un autre produit, car cette pratique est strictement interdite sur le Play Store.
  • Les canaux de notification sont définis selon les bonnes pratiques au lieu de diffuser toutes les notifications à partir d'un seul canal.
  • Il convient de sélectionner la priorité de notification adéquate.
  • Empilez plusieurs notifications dans un seul groupe de notifications lorsque cela est possible.
  • Définissez des délais d'expiration pour les notifications si c'est judicieux.
  • Les notifications ne sont permanentes que si elles sont liées à des événements en cours, comme la lecture de musique ou un appel téléphonique. Pour en savoir plus, consultez la section Fonctionnalité.
Conversation_Quality T-Notification_Quality

Pour les applis de chat, les applis de réseau social et les conversations :

Accessibilité

ID Tests Description
Touch_Target_Size T-Touch_Target_Size Les cibles tactiles font au moins 48 dp. Consultez les consignes de Material Design concernant les tailles de cible.
Visual_Contrast T-Visual_Contrast

Le texte et les contenus de premier plan de l'application respectent les rapports de contraste suivants par rapport à l'arrière-plan :

  • Rapport de 3:1 pour le texte et les graphismes de grande taille
  • Rapport de 4,5:1 pour le texte de petite taille (moins de 18 pt, ou moins de 14 pt s'il est en gras)

En savoir plus sur les couleurs et le contraste

Content_Description T-Content_Description Décrivez chaque élément d'interface utilisateur sauf TextView, avec contentDescription.

Fonctionnalité

Votre appli doit implémenter le comportement fonctionnel suivant.

Audio

ID Tests Description
Audio_Playback_Start T-Audio_Playback_Start

Lorsque l'utilisateur lance la lecture audio, l'appli doit effectuer l'une des opérations suivantes dans un délai d'une seconde :

  • Lancer la lecture de l'audio
  • Afficher un indicateur visuel signalant que les données audio sont en cours de préparation
Audio_Focus_Request T-Audio_Focus_Request L'application doit demander la priorité audio quand la lecture audio commence, et abandonner la priorité audio quand la lecture s'arrête.
Audio_Focus_Change T-Audio_Focus_Change L'appli doit savoir gérer les demandes de priorité audio provenant d'autres applis. Par exemple, elle peut baisser le volume de lecture lorsqu'une autre appli lit un contenu vocal.
Audio_Playback_Background T-Audio_Playback_Background

L'application doit prendre en charge la lecture en arrière-plan.

L'application doit utiliser un service de premier plan pour empêcher le système d'arrêter le processus de l'application une fois qu'elle n'est plus visible. L'application doit également afficher une notification persistante et non masquable dans la barre d'état ou sur l'écran de verrouillage pour informer l'utilisateur qu'elle est en cours d'exécution.

Les utilisateurs doivent pouvoir contrôler la lecture à l'aide des commandes de notification ou de l'écran de verrouillage, ou des commandes d'un accessoire connecté.

Audio_Notification_Style T-Audio_Notification_Style Lorsque l'application lit un contenu audio en arrière-plan, elle doit créer une notification stylisée avec MediaStyle.
Audio_Playback_Resume T-Audio_Playback_Resume Si l'application est en arrière-plan et que l'audio est mis en pause, l'audio reprend lorsque l'application revient au premier plan, ou l'application doit indiquer à l'utilisateur que la lecture est en pause.

Vidéo

ID Tests Description
Video_PiP T-Video_PiP Si l'appli lit de la vidéo, elle doit gérer la lecture Picture-in-picture.
Video_Encoding T-Video_Encoding Si l'appli encode de la vidéo, elle doit utiliser la norme de compression vidéo HEVC.
Video_Playback_Background T-Video_Playback_Background

L'application prend en charge la lecture de vidéos en arrière-plan lorsqu'elle n'est pas au premier plan, y compris lorsque la fenêtre de l'application est :

  • Minimisé
  • Derrière d'autres fenêtres ou l'interface utilisateur du système (par exemple, le volet de notification ou l'écran d'accueil/de verrouillage)
  • En dehors de l'écran visible du bureau

Partage

ID Tests Description
System_Sharesheet T-System_Sharesheet L'appli doit utiliser Android Sharesheet pour partager des contenus. L'application peut suggérer des cibles qui ne sont pas disponibles pour les solutions personnalisées.

Services d'arrière-plan

ID Tests Description
Background_Service_Optimization T-Background_Service_Optimization

L'application évite d'exécuter des services inutilement longs en arrière-plan pour assurer la fluidité de l'appareil de l'utilisateur.

Remarque : Le système applique différentes restrictions aux services d'arrière-plan.

Les pratiques suivantes sont considérées comme des usages incorrects des services d'arrière-plan :

  • Maintien d'une connexion réseau pour les notifications
  • Maintien d'une connexion Bluetooth
  • Maintien du GPS allumé

Pour en savoir plus, consultez Présentation des tâches en arrière-plan.

Performances et stabilité

Votre application doit offrir des performances, une stabilité, une compatibilité et une réactivité optimales.

Performances

ID Tests Description
App_Startup_Time T-App_Startup_Time L'appli se charge rapidement, ou affiche un indicateur de progression ou un autre signal similaire si le chargement prend plus de deux secondes.
Rendering_Performance T-Rendering_Performance L'application effectue un rendu des images toutes les 16 millisecondes (ou moins) pour afficher au moins 60 images par seconde. Pour obtenir de l'aide sur les problèmes d'affichage, consultez Affichage lent.
StrictMode_Compliance T-StrictMode_Compliance Si StrictMode est activé (consultez la section Tests avec StrictMode), aucun clignotement rouge (avertissement StrictMode lié aux performances) n'est visible lorsque vous testez l'appli.

Stabilité

ID Tests Description
Stability_ANR T-Stability_ANR L'application ne plante pas et ne bloque pas le thread UI, ce qui entraînerait des erreurs ANR (Android Not Responding). Utilisez le rapport pré-lancement de Google Play pour identifier les problèmes de stabilité potentiels. Après le déploiement, surveillez la page Android Vitals dans la Google Play Console.

SDK

ID Tests Description
Android_Platform_Compatibility T-Android_Platform_Compatibility L'appli s'exécute sur la dernière version publique de la plate-forme Android sans planter ni nuire gravement aux fonctionnalités de base.
Target_SDK_Version T-Target_SDK_Version L'appli cible le dernier SDK Android nécessaire pour répondre aux exigences de Google Play, en définissant la valeur targetSdk dans le fichier build.gradle du module de l'appli.
Compile_SDK_Version T-Target_SDK_Version L'application est conçue avec le dernier SDK Android en définissant la valeur compileSdk dans le fichier build.gradle du module de l'application.
SDK_Maintenance T-SDK_Maintenance,
T-Non_SDK_Interfaces

Tous les SDK Google ou tiers utilisés sont à jour. Toutes les améliorations apportées à ces SDK, par exemple pour la stabilité, la compatibilité ou la sécurité, doivent être disponibles rapidement pour les utilisateurs.

Pour les SDK Google, utilisez des SDK fournis par les services Google Play, s'ils sont disponibles. Ces SDK sont rétrocompatibles, reçoivent des mises à jour automatiques, réduisent la taille de votre package d'appli et utilisent efficacement les ressources sur l'appareil.

Non_SDK_Interfaces T-Non_SDK_Interfaces L'appli n'utilise pas d'interfaces autres que les SDK.
Production_Build_Quality T-Production_Build_Quality Aucune bibliothèque de débogage n'est incluse dans l'appli de production, car cela pourrait entraîner des problèmes de performances et de sécurité.

Batterie

ID Tests Description
Power_Management T-Power_Management

L'application gère correctement les fonctionnalités de gestion de l'alimentation Sommeil et Mise en veille des applications.

Les applications peuvent demander une exception de maintenance de l'alimentation. Consultez Prise en charge d'autres cas d'utilisation dans Adapter votre application aux fonctionnalités Sommeil et Mise en veille des applications.

Confidentialité et sécurité

L'application traite les données utilisateur et les informations personnelles de manière sécurisée, et fournit les niveaux d'autorisation appropriés.

Les applications publiées sur le Google Play Store doivent également respecter les Règles sur les données utilisateur de Google Play afin de protéger la confidentialité des utilisateurs.

Autorisations

ID Tests Description
Minimize_Permissions T-Minimize_Permissions L'application ne demande que le nombre minimum absolu d'autorisations nécessaires pour prendre en charge le cas d'utilisation actuel. Pour certaines autorisations, comme la position, l'application utilise une spécification approximative au lieu d'une spécification précise, si possible. Consultez Réduire le nombre de demandes d'autorisation.
Sensitive_Permissions T-Sensitive_Permissions

L'appli ne demande l'autorisation d'accéder à des données sensibles (groupes d'autorisations SMS ou Journal d'appels ou position, par exemple) ou à des services payants (comme Téléphone ou SMS) que lorsque ces données ou services sont directement liés à ses principaux scénarios d'utilisation. Les implications liées à ces autorisations doivent être communiquées de façon visible à l'utilisateur.

Selon la façon dont votre application utilise les autorisations, il existe peut-être une autre manière de traiter le cas d'utilisation de votre application sans dépendre de l'accès à des informations sensibles. Par exemple, plutôt que de demander des autorisations liées aux contacts d'un utilisateur, utilisez un intent implicite pour demander l'accès.

Runtime_Permissions T-Runtime_Permissions L'application demande des autorisations d'exécution lorsque la fonctionnalité est demandée, plutôt qu'au démarrage de l'application.
Permission_Rationale T-Permission_Rationale L'application explique clairement pourquoi les autorisations sont nécessaires.
Graceful_Degradation T-Graceful_Degradation L'application effectue une dégradation élégante si les utilisateurs refusent ou révoquent une autorisation. L'application ne doit pas bloquer l'accès à l'utilisateur.

Données et fichiers

ID Tests Description
Sensitive_Data_Storage T-Sensitive_Data_Storage,
T-Sensitive_Data_Handling
Toutes les données sensibles sont stockées dans la mémoire de stockage interne de l'appli.
Sensitive_Data_Logging T-Sensitive_Data_Logging Aucune donnée utilisateur personnelle ou sensible n'est enregistrée dans le journal système ou dans un journal propre à l'appli.
Hardware_IDs T-Hardware_IDs L'appli n'utilise aucun identifiant de matériel non réinitialisable (code IMEI, par exemple), à des fins d'identification.

Sauvegarde et restauration des données

ID Tests Description
App_Data_Backup T-App_Data_Backup

L'application conserve les données utilisateur, les paramètres et l'état de l'application lors des sauvegardes dans le cloud et des transferts d'appareil à appareil.

Implémentez la sauvegarde automatique et configurez android:dataExtractionRules pour assurer une restauration fluide des données lors de la configuration d'un nouvel appareil ou de la réinstallation de l'application.

App_Logins_Restoration T-App_Logins_Restoration

L'application restaure automatiquement les comptes utilisateur et l'état de connexion lorsqu'un utilisateur configure un nouvel appareil.

Implémentez la restauration d'identifiants à l'aide de Credential Manager pour réauthentifier automatiquement les utilisateurs sans les forcer à se connecter manuellement ni à suivre des procédures de récupération de compte.

Identité

ID Tests Description
Autofill_Hints T-Autofill_Hints L'appli fournit des suggestions de saisie automatique pour les identifiants de compte et d'autres informations sensibles (informations de carte de crédit, adresses physiques, numéros de téléphone, etc.).
Credential_Manager T-Credential_Manager L'application intègre le Gestionnaire d'identifiants pour Android afin d'offrir une expérience de connexion fluide qui unifie la prise en charge des clés d'accès, de l'identité fédérée et des mots de passe.
Biometric_Authentication T-Biometric_Authentication L'appli accepte l'authentification biométrique pour protéger les transactions financières ou les informations sensibles (documents importants de l'utilisateur, par exemple).

Composants de l'application

ID Tests Description
Component_Export T-Component_Export

L'appli définit le paramètreandroid:exported pour l'ensemble des activités, services, broadcast receivers et en particulier pour les fournisseurs de contenu.

Seuls les composants d'application qui partagent des données avec d'autres applications ou qui doivent être appelés par d'autres applications sont exportés.

Component_Permissions T-Component_Permissions

L'ensemble des intents et des diffusions respectent les bonnes pratiques :

Component_Protection T-Component_Protection

Tous les composants qui partagent des contenus entre les applis utilisent android:protectionLevel="signature" pour les autorisations personnalisées. C'est le cas pour les activités, les services, les broadcast receivers et en particulier pour les fournisseurs de contenu.

Les applis ne doivent pas dépendre de l'accès à une liste de packages installés.

Mise en réseau

ID Tests Description
Network_Security_Traffic T-Network_Security_Traffic Le trafic réseau est intégralement envoyé via le protocole SSL.
Network_Security_Configuration T-Network_Security_Configuration L'appli déclare une configuration de sécurité réseau.
Security_Provider_Initialization T-Security_Provider_Initialization Si l'appli utilise les services Google Play, le fournisseur de sécurité est initialisé quand elle démarre.

WebViews

ID Tests Description
WebView_Asset_Loader T-WebView_Asset_Loader,
T-WebView_Navigation
N'utilisez pas setAllowUniversalAccessFromFileURLs() pour accéder au contenu local. Utilisez plutôt WebViewAssetLoader.
WebView_JavaScript T-WebView_JavaScript,
T-WebView_Navigation

Les vues Web n'utilisent pas addJavaScriptInterface() avec du contenu non approuvé.

Sur Android 6.0 (niveau d'API 23 et versions ultérieures), utilisez plutôt les canaux de message HTML.

Exécution

ID Tests Description
App_Bundles T-App_Bundles

L'appli ne charge pas dynamiquement du code extérieur à son APK. Utilisez le format Android App Bundle, qui inclut Play Feature Delivery et Play Asset Delivery.

Depuis août 2021, l'utilisation d'Android App Bundle est obligatoire pour toutes les nouvelles applis du Google Play Store.

Cryptographie

ID Tests Description
Cryptographic_Algorithms T-Cryptographic_Algorithms L'appli utilise de puissants algorithmes cryptographiques fournis par la plate-forme et un générateur de nombres aléatoires. Elle n'implémente pas d'algorithmes personnalisés.

Google Play

Autorisez la publication de votre application sur Google Play.

Règles

ID Tests Description
Play_Content_Policies T-Play_Content_Policies L'appli respecte à la lettre le Règlement relatif au contenu Google Play pour les développeurs. Elle ne propose pas de contenus inappropriés, et elle n'utilise pas la propriété intellectuelle ni la marque d'autres personnes.
Play_Content_Rating T-Play_Content_Policies La classification d'âge de l'appli est adéquate, en fonction des Consignes de classification du contenu.

Page d'informations sur l'appli

ID Tests Description
Play_Feature_Graphic T-Play_Feature_Graphic,
T-Play_Graphic_Assets

L'image de présentation de l'appli respecte les consignes décrites dans cet article d'aide. Faites les vérifications suivantes :

  • La fiche de l'appli contient une image de présentation de haute qualité.
  • L'image de présentation ne contient pas de photos d'appareil, de capture d'écran ni de petits caractères qui sont illisibles lorsqu'ils sont affichés en taille réduite sur la plus petite taille d'écran ciblée par votre appli.
  • L'image de présentation ne ressemble pas à une publicité.
Play_Device_References T-Play_Graphic_Assets Les captures d'écran et vidéos de l'appli ne montrent et ne mentionnent pas d'appareils autres que des appareils Android.
Play_Misleading_Content T-Play_Graphic_Assets Les captures d'écran ou vidéos de l'appli ne représentent pas ses contenus ni son expérience utilisateur de manière trompeuse.

Assistance utilisateur

ID Tests Description
Play_User_Reviews T-Play_Content_Policies Les bugs courants signalés par les utilisateurs dans l'onglet Avis de la page Google Play sont résolus s'ils sont reproductibles et surviennent sur de nombreux appareils différents. Si un bug ne survient que sur quelques appareils, vous devez quand même le résoudre si ces appareils sont particulièrement populaires ou récents.

Environnement de test

Configurez un environnement de test comme suit :

  • Tests avec un émulateur : Android Emulator est un excellent moyen pour tester votre appli sous différentes versions d'Android et résolutions d'écran. Configurez les appareils émulés (AVD) de façon à représenter les facteurs de forme et les combinaisons matériel/logiciels les plus utilisés par votre base d'utilisateurs cible. Testez différents facteurs de forme à l'aide des émulateurs suivants (au minimum) :

    • Appareils pliables : appareil de 7,6 pouces avec écran pliable (classé avec les téléphones dans AVD Manager)
    • Tablette : Pixel C 9,94 pouces (2 560 x 1 800 px)
    • Test des notifications des applis mobiles : associez un appareil mobile / émulateur à un émulateur Wear OS (Wear OS de forme ronde 1,84 pouce).
  • Matériel : votre environnement de test doit inclure quelques périphériques physiques représentant les principaux facteurs de forme et combinaisons matériel/logiciels disponibles pour le grand public. Il n'est pas nécessaire d'effectuer des tests pour tous les appareils disponibles sur le marché. Concentrez-vous sur quelques appareils représentatifs, voire un ou deux appareils par facteur de forme.

  • Bancs de test d'appareils : vous pouvez également utiliser des services tiers comme Firebase Test Lab pour tester votre appli sur un plus large éventail d'appareils.

  • Faites vos tests avec la dernière version d'Android : en plus de tester votre appli avec des versions d'Android représentatives de votre base d'utilisateurs cible, vous devez toujours la tester sur la dernière version d'Android pour vous assurer que les derniers changements de comportement n'ont pas d'incidence négative sur l'expérience utilisateur de votre appli.

Pour obtenir des conseils supplémentaires sur les tests, y compris les tests unitaires, les tests d'intégration et les tests d'UI, consultez Principes fondamentaux des tests des applications Android.

StrictMode

Pour tester les performances, activez StrictMode dans votre application. Utilisez StrictMode pour détecter les opérations susceptibles de nuire aux performances, aux accès réseau, ainsi qu'aux opérations de lecture et d'écriture de fichiers. Recherchez les opérations susceptibles de poser problème, aussi bien sur le thread principal que sur d'autres threads.

Configurez une règle de surveillance par thread avec StrictMode.ThreadPolicy.Builder et activez tous les dispositifs de surveillance compatibles dans ThreadPolicy avec detectAll().

Activez la notification visuelle des cas de non-respect des règles pour ThreadPolicy avec penaltyFlashScreen().

Tests

Les tests fondamentaux de qualité des applications vous aident à évaluer la qualité de base de votre application. Vous pouvez combiner les tests ou intégrer des groupes de tests dans votre plan de test.

Expérience utilisateur

Testez l'expérience utilisateur pour vous assurer qu'elle est cohérente et intuitive.

Facilité d'utilisation

ID Fonctionnalité Description
T-Consistent_UX Consistent_UX

Accédez à l'ensemble des sections de l'appli (intégralité des écrans, boîtes de dialogue, paramètres et parcours utilisateur).

Procédez comme suit :
  • Si l'appli permet de modifier ou créer des contenus, de jouer ou de lire des contenus multimédias, pensez à tester ces procédures.
  • Quand vous testez votre appli, introduisez des interruptions provenant d'autres applis, par exemple des notifications ou des appels téléphoniques. Appliquez des changements temporaires aux attributs de l'appareil (connectivité réseau, fonctionnement de la batterie, disponibilité du GPS, charge système, etc.).
  • Accédez à tous les parcours d'achat via une appli et testez-les.
T-App_Switcher App_Switcher Depuis chaque écran de l'appli, passez à une autre appli en cours d'exécution, puis revenez à l'appli à tester à l'aide du sélecteur d'applications récentes.
T-Sleep_Resume Sleep_Resume Appuyez sur le bouton Marche/Arrêt pour mettre l'appareil en veille, puis appuyez à nouveau dessus pour réactiver l'écran.
T-Lock_Resume Lock_Resume Configurez le verrouillage de l'écran de l'appareil. Appuyez sur le bouton Marche/Arrêt pour mettre l'appareil en veille afin de le verrouiller. Appuyez de nouveau sur le bouton Marche/Arrêt pour réactiver l'écran et déverrouiller l'appareil.

Carte SD

ID Fonctionnalité Description
T-SD_Card Consistent_UX

Effectuez des tests de fonctionnalité de base avec l'appli installée sur la carte SD d'un appareil (si l'appli est compatible avec cette méthode d'installation).

Pour déplacer l'application sur une carte SD, consultez les paramètres de l'application.

Interface utilisateur

ID Fonctionnalité Description
T-Orientation_Transitions Display_State_Parity,
Fullscreen_Display,
Orientation_Transitions

À partir de chaque écran de l'appli, faites pivoter l'appareil entre les modes paysage et portrait, et pliez et dépliez-le au moins trois fois.

Vérifiez que l'application effectue les opérations suivantes :
  • Offre une parité des fonctions dans toutes les orientations d'affichage et tous les états de pliage
  • Remplit la fenêtre de l'application dans toutes les orientations d'affichage et tous les états de pliage, et n'est pas au format letterbox
  • Conserve l'état et ne présente aucun problème d'affichage lors des transitions rapides entre les orientations et le pliage/dépliage de l'appareil

Qualité visuelle

ID Fonctionnalité Description
T-Graphic_Quality Graphic_Quality Utilisez toutes les fonctionnalités de votre application. Vérifiez que tous les éléments visuels, y compris les graphismes, le texte, les images et les autres éléments d'interface utilisateur, ne présentent aucune distorsion, aucun flou ni aucune pixélisation.
T-Line_Length Line_Length

Examinez tous les blocs de texte de l'application. Vérifiez que la longueur des lignes de texte et des blocs de texte est limitée à 45-75 caractères (espaces compris) pour une meilleure lisibilité.

Effectuez les vérifications suivantes :
  • La composition est acceptée dans tous les facteurs de forme compatibles.
  • Pas de lettres ni de mots tronqués
  • Aucun retour à la ligne inapproprié sur les boutons ou les icônes
  • Espacement suffisant entre le texte et les éléments situés autour
T-Theme_Support Theme_Support Vérifiez que tout le texte est lisible dans les thèmes clair et sombre. Vérifiez que tous les éléments visuels sont clairement discernables et esthétiques dans les thèmes clair et sombre.
ID Fonctionnalité Description
T-Back_Nav Back_Button_Nav,
Back_Gesture_Nav

Accédez à l'ensemble des sections de l'appli (intégralité des écrans, boîtes de dialogue, paramètres et parcours utilisateur).

Sur chaque écran de l'appli, appuyez sur le bouton Retour ou faites un geste de retour en arrière. L'application doit revenir à l'écran précédent ou à l'écran d'accueil.

T-State_Preservation State_Preservation Depuis chaque écran de l'appli, appuyez sur le bouton Accueil de l'appareil ou balayez l'écran vers le haut dans la navigation par gestes, puis relancez l'appli depuis l'écran Toutes les applis.

Notifications

ID Fonctionnalité Description
T-Notification_Quality Notification_Quality,
Conversation_Quality
Déclenchez tous les types de notifications que l'appli peut afficher et examinez-les dans le panneau des notifications. Développez les notifications le cas échéant (Android 4.1 et versions ultérieures), puis appuyez sur toutes les actions disponibles.

Accessibilité

ID Fonctionnalité Description
T-Touch_Target_Size Touch_Target_Size Vérifiez que la taille et la position des cibles tactiles restent cohérentes et accessibles dans toutes les tailles d'écran et quelles que soient les configurations. Pour en savoir plus sur l'accessibilité, consultez Accessibility Scanner.
T-Visual_Contrast Visual_Contrast Vérifiez le contraste de tous les éléments visuels.
T-Content_Description Content_Description Vérifiez que tous les éléments d'interface utilisateur autres que TextView ont des descriptions de contenu.

Fonctionnalité

Vérifiez que votre application implémente le comportement fonctionnel suivant.

Audio

ID Fonctionnalité Description
T-Audio_Playback_Start Audio_Playback_Start Lancer la lecture audio Vérifiez que l'application commence à lire l'audio dans un délai d'une seconde ou qu'elle affiche un indicateur visuel signalant que les données audio sont en cours de préparation pour la lecture.
T-Audio_Focus_Request Audio_Focus_Request Lancer la lecture audio L'application doit demander la priorité audio. Lorsque la lecture audio s'arrête, l'application doit abandonner la sélection audio (ce qui se produit automatiquement pour les applications ciblant Android 12 (niveau d'API 31) ou version ultérieure).
T-Audio_Focus_Change Audio_Focus_Change Lancer la lecture audio Lancez la lecture audio dans une autre application. Votre application doit répondre au changement de priorité audio et arrêter la lecture audio ou réduire le volume de lecture.
T-Audio_Playback_Background Audio_Playback_Background

Lancer la lecture audio Interagissez avec une autre application non audio au premier plan. L'application doit continuer à lire l'audio en arrière-plan et afficher une notification dans la barre d'état. Vérifiez que vous pouvez gérer la lecture à l'aide des commandes affichées dans la notification.

Verrouillez l'écran de l'appareil. L'application doit continuer à lire l'audio en arrière-plan et afficher une notification sur l'écran de verrouillage. Vérifiez que vous pouvez gérer la lecture à l'aide des commandes affichées dans la notification.

T-Audio_Notification_Style Audio_Notification_Style Lancer la lecture audio Interagissez avec une autre application non audio au premier plan. Vérifiez que votre application continue de lire l'audio en arrière-plan et qu'elle a créé une notification stylisée avec MediaStyle. Consultez Playing nicely with media controls (Utiliser correctement les commandes multimédias).
T-Audio_Playback_Resume Audio_Playback_Resume Lancer la lecture audio Interagissez avec une autre application non audio en tant qu'application au premier plan. Interagissez avec votre application pour la mettre au premier plan. L'audio devrait reprendre ou le volume devrait être rétabli. Sinon, l'application doit indiquer à l'utilisateur que la lecture est en pause.

Vidéo

ID Fonctionnalité Description
T-Video_PiP Video_PiP Activez la lecture vidéo de l'application en mode Picture-in-picture.
T-Video_Encoding Video_Encoding Vérifiez que l'application encode la vidéo à l'aide de la norme de compression vidéo HEVC.
T-Video_Playback_Background Video_Playback_Background Lancez la lecture de la vidéo. Réduisez la fenêtre de l'application, puis ouvrez une autre application pour déplacer la fenêtre de l'application en arrière-plan. Sur les appareils compatibles avec le mode ordinateur, déplacez la fenêtre de l'application hors de l'écran visible. Vérifiez que la lecture de la vidéo se poursuit sans interruption dans tous les cas.

Partage

ID Fonctionnalité Description
T-System_Sharesheet System_Sharesheet Créez un intent et démarrez une activité en appelant startActivity() avec l'intent comme argument. Consultez Utiliser Android Sharesheet. Votre application doit afficher Android Sharesheet.

Services d'arrière-plan

ID Fonctionnalité Description
T-Background_Service_Optimization Background_Service_Optimization

Utilisez toutes les fonctionnalités principales de votre application. Vérifiez qu'aucun service d'arrière-plan de longue durée n'est démarré.

Passez à une autre application pour envoyer votre application en arrière-plan. Accédez aux paramètres et regardez si votre application exécute des services en arrière-plan. Sur Android 4.0 ou version ultérieure, accédez à l'écran Applis, puis recherchez l'appli dans l'onglet En cours.

Performances et stabilité

Vérifiez les performances, la stabilité et la qualité visuelle.

Performances

ID Fonctionnalité Description
T-App_Startup_Time App_Startup_Time Démarrez votre application. Vérifiez qu'elle se charge rapidement ou qu'elle affiche un indicateur de progression ou un signal similaire si le chargement prend plus de deux secondes.
T-Rendering_Performance Rendering_Performance Utilisez toutes les fonctionnalités principales de votre application. Vérifiez que l'application affiche au moins 60 images par seconde. Utilisez l'option Rendu HWUI du profil pour tester votre application.
T-StrictMode_Compliance StrictMode_Compliance

Activez StrictMode dans votre application. Utilisez toutes les fonctionnalités principales. Vérifiez que l'application ne génère pas d'avertissements de performances StrictMode, c'est-à-dire qu'aucun clignotement rouge n'est visible lorsque vous testez l'application. Les clignotements rouges indiquent un comportement insatisfaisant concernant le stockage, l'accès au réseau ou la gestion de la mémoire (comme les fuites de mémoire).

Soyez particulièrement attentif à la récupération de mémoire et à son impact sur l'expérience utilisateur.

Stabilité

ID Fonctionnalité Description
T-Stability_ANR Stability_ANR Utilisez toutes les fonctionnalités principales de votre application. Vérifiez que l'application ne plante pas et ne bloque pas le thread UI, ce qui entraînerait des erreurs ANR (Android Not Responding). Consultez le rapport pré-lancement de Google Play pour identifier les problèmes de stabilité potentiels.

SDK

ID Fonctionnalité Description
T-Android_Platform_Compatibility Android_Platform_Compatibility Exécutez votre application sur la dernière version publique de la plate-forme Android. Utilisez toutes les fonctionnalités principales. Vérifiez que l'application ne plante pas et qu'elle s'exécute sans perte de fonctionnalités de base.
T-Target_SDK_Version Target_SDK_Version,
Compile_SDK_Version
Examinez le fichier manifeste Android et la configuration de compilation pour vous assurer que l'appli est compilée avec le dernier SDK disponible (targetSdk et compileSdk).
T-SDK_Maintenance SDK_Maintenance Examinez le fichier build.gradle de votre application pour identifier d'éventuelles dépendances obsolètes.
T-Non_SDK_Interfaces Non_SDK_Interfaces Utilisez l'outil lint d'Android Studio afin de détecter l'utilisation d'interfaces autres que les SDK. Consultez Restrictions concernant les interfaces non SDK pour découvrir d'autres méthodes de test.
T-Production_Build_Quality Production_Build_Quality Examinez le fichier build.gradle de votre application pour vérifier s'il contient des bibliothèques de débogage.

Batterie

ID Fonctionnalité Description
T-Power_Management Power_Management

Utilisez toutes les fonctionnalités principales de l'application dans les modes Sommeil et Mise en veille des applications. Vérifiez que les alarmes, les minuteurs, les notifications et les synchronisations fonctionnent correctement pendant l'intervalle de maintenance du mode Sommeil et lorsque l'application quitte le mode Mise en veille des applications.

Testez le comportement des fonctionnalités Sommeil et Mise en veille des applications à l'aide de commandes ADB (pour connaître les conditions requises et les consignes, consultez Tester avec les fonctionnalités Sommeil et Mise en veille des applications).

Pour diagnostiquer une décharge inattendue de la batterie, utilisez le profileur d'énergie d'Android Studio ou l'outil Battery Historian ainsi que des tâches programmées en arrière-plan.

Confidentialité et sécurité

Testez les protections de la confidentialité et de la sécurité attendues par les utilisateurs.

Autorisations

ID Fonctionnalité Description
T-Minimize_Permissions Minimize_Permissions Sur l'appareil, passez en revue les autorisations requises par votre appli dans le fichier manifeste, au moment de l'exécution et dans les paramètres de l'appli (Paramètres > Infos sur l'appli).
T-Sensitive_Permissions Sensitive_Permissions Utilisez toutes les fonctionnalités de votre application qui demandent des autorisations. Vérifiez que l'application ne demande l'autorisation d'accéder à des données ou services sensibles que pour ses principaux cas d'utilisation. Vérifiez que les implications de l'octroi d'autorisations pour les données et services sensibles sont clairement communiquées à l'utilisateur.
T-Runtime_Permissions Runtime_Permissions Utilisez toutes les fonctionnalités de votre application qui nécessitent des autorisations. Vérifiez que les autorisations sont demandées de manière différée, c'est-à-dire uniquement lorsque l'utilisateur accède aux fonctionnalités, plutôt qu'au démarrage de l'application.
T-Permission_Rationale Permission_Rationale Utilisez toutes les fonctionnalités de votre application qui nécessitent des autorisations. Vérifiez que l'application explique à l'utilisateur pourquoi les autorisations sont nécessaires.
T-Graceful_Degradation Graceful_Degradation Utilisez toutes les fonctionnalités de votre application qui nécessitent des autorisations. Refusez ou révoquez les autorisations. Vérifiez que l'application propose un cas d'utilisation alternatif et continue de fonctionner.

Données et fichiers

ID Fonctionnalité Description
T-Sensitive_Data_Storage Sensitive_Data_Storage Examinez toutes les données stockées dans l'espace de stockage interne. Vérifiez que les données stockées en externe ne sont pas des données sensibles.
T-Sensitive_Data_Handling Sensitive_Data_Storage Examinez comment les données chargées depuis l'espace de stockage externe sont gérées et traitées.
T-Sensitive_Data_Logging Sensitive_Data_Logging Utilisez toutes les fonctionnalités principales de l'application tout en surveillant le journal de l'appareil. Vérifiez qu'aucune information privée sur l'utilisateur n'est enregistrée.
T-Hardware_IDs Hardware_IDs Utilisez toutes les fonctionnalités principales de l'application. Vérifiez que l'application n'utilise aucun identifiant matériel (code IMEI, par exemple) à des fins d'identification.

Sauvegarde et restauration des données

ID Fonctionnalité Description
T-App_Data_Backup App_Data_Backup

Configurez les préférences locales, les bases de données et les paramètres d'application sur un appareil principal. Effectuez une sauvegarde cloud ou un transfert d'appareil à appareil (D2D) vers un nouvel appareil.

Lancez l'application sur l'appareil cible après le transfert et vérifiez que les préférences locales, l'état de la base de données et les paramètres utilisateur sont correctement restaurés conformément à vos règles de sauvegarde automatique. Pour connaître les procédures de test détaillées, consultez Tester la sauvegarde et la restauration.

T-App_Logins_Restoration App_Logins_Restoration

Configurez une session connectée sur un appareil principal à l'aide de clés d'accès, de mots de passe ou de Google Sign-In. Effectuez une sauvegarde cloud ou un transfert d'appareil à appareil (D2D) vers un nouvel appareil.

Lancez l'application sur l'appareil cible après le transfert et vérifiez que l'authentification est restaurée automatiquement à l'aide de Restore Credentials, sans afficher d'écrans de connexion ni nécessiter de récupération de compte. Pour connaître les procédures de test détaillées, consultez Tester les identifiants de restauration.

Identité

ID Fonctionnalité Description
T-Autofill_Hints Autofill_Hints Utilisez toutes les fonctionnalités de l'application qui nécessitent une entrée utilisateur. Vérifiez que l'application fournit des suggestions de saisie automatique pour les champs de saisie de données telles que les identifiants de compte et d'autres informations sensibles.
T-Credential_Manager Credential_Manager Connectez-vous à votre application. Vérifiez que l'application intègre Credential Manager pour Android pour une expérience de connexion qui unifie la prise en charge des clés d'accès, de l'identité fédérée et des mots de passe.
T-Biometric_Authentication Biometric_Authentication Utiliser toutes les fonctionnalités de l'application qui nécessitent une authentification. Vérifiez que l'application protège les transactions financières ou les informations sensibles (documents importants de l'utilisateur, par exemple) avec l'authentification biométrique.

Composants de l'application

ID Fonctionnalité Description
T-Component_Export Component_Export Vérifiez tous les composants d'appli définis dans le fichier manifeste Android pour contrôler que l'état d'exportation est correct. La propriété exportée doit être définie explicitement pour tous les composants.
T-Component_Permissions Component_Permissions Sur l'appareil, passez en revue les autorisations requises par votre appli dans le fichier manifeste, au moment de l'exécution et dans les paramètres de l'appli (Paramètres > Infos sur l'appli).
T-Component_Protection Component_Protection Examinez tous les fournisseurs de contenu définis dans le fichier manifeste Android. Assurez-vous que chaque fournisseur dispose d'un protectionLevel approprié.

Mise en réseau

ID Fonctionnalité Description
T-Network_Security_Traffic Network_Security_Traffic Déclarez une configuration de sécurité réseau qui désactive le trafic en texte clair, puis testez l'appli.
T-Network_Security_Configuration Network_Security_Configuration Examinez la configuration de la sécurité réseau de l'appli. Vérifiez qu'aucune vérification lint n'échoue sur la configuration.
T-Security_Provider_Initialization Security_Provider_Initialization Vérifiez que le fournisseur de sécurité est initialisé au démarrage de l'application pour les services Google Play.

WebViews

ID Fonctionnalité Description
T-WebView_Asset_Loader WebView_Asset_Loader Examinez la configuration de la sécurité réseau de l'appli. Vérifiez qu'aucune vérification lint n'échoue sur la configuration.
T-WebView_JavaScript WebView_JavaScript Pour chaque WebView, accédez à une page nécessitant JavaScript.
T-WebView_Navigation WebView_Asset_Loader,
WebView_JavaScript
Dans chaque WebView, essayez d'accéder à des sites et à des contenus qui ne sont pas chargés directement par votre appli.

Exécution

ID Fonctionnalité Description
T-App_Bundles App_Bundles Vérifiez que l'application utilise des Android App Bundles et qu'elle ne charge pas dynamiquement du code extérieur à son APK.

Cryptographie

ID Fonctionnalité Description
T-Cryptographic_Algorithms Cryptographic_Algorithms Vérifiez que l'application utilise de puissants algorithmes cryptographiques fournis par la plate-forme et un générateur de nombres aléatoires. Vérifiez également que l'application n'implémente pas d'algorithmes personnalisés.

Google Play

Vérifiez que votre application est prête pour Google Play.

Règles

ID Fonctionnalité Description
T-Play_Content_Policies Play_Content_Policies,
Play_Content_Rating,
Play_User_Reviews
Connectez-vous à la Google Play Console pour consulter votre profil de développeur, la description de l'appli, les captures d'écran, l'image de présentation, la classification du contenu et les commentaires des utilisateurs.

Page d'informations sur l'appli

ID Fonctionnalité Description
T-Play_Feature_Graphic Play_Feature_Graphic Téléchargez votre image de présentation et vos captures d'écran, puis réduisez leur taille pour qu'elle corresponde à la taille d'affichage sur les appareils et facteurs de forme que vous ciblez.
T-Play_Graphic_Assets Play_Feature_Graphic,
Play_Device_References,
Play_Misleading_Content
Examinez l'ensemble des assets graphiques, contenus multimédias, textes, bibliothèques de code et autres contenus inclus dans l'appli ou le fichier d'appli téléchargeable.

Archiver

Versions précédentes des consignes fondamentales relatives à la qualité des applications :