Consignes fondamentales relatives à la qualité des applications

Pour fournir une base solide à une application de qualité, suivez les consignes relatives à la qualité des applications.

Ces consignes définissent le niveau de qualité minimal que toutes les applications 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 appareils pliables, les ordinateurs de bureau, les écrans connectés, les systèmes d'info-divertissement pour voiture, les téléviseurs et les appareils XR. Les modes de fenêtrage tels que 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, en plus des 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éliorer le classement de vos applications dans les fiches et la recherche Google Play
  • Acquérir plus d'utilisateurs et améliorer la rétention

Consignes

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

Expérience utilisateur

Les modèles de conception graphique et d'interaction Android standards 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 cohérence de l'UI 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 et sur tous les facteurs de forme.
App_Switcher T-App_Switcher,
T-SD_Card
L'application passe en arrière-plan lorsque le focus bascule vers une autre application. L'application 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
Lorsque l'application est au premier plan, elle se met en pause lorsque l'appareil se met en veille et reprend lorsque 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 lorsque l'appareil est verrouillé et reprend lorsque l'appareil est déverrouillé.

Interface utilisateur

ID Tests Description
Display_State_Parity T-Orientation_Transitions

Les orientations d'affichage et les états de pliage offrent globalement les mêmes fonctionnalités et les mêmes actions, et préservent la parité fonctionnelle.

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 des 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'appli 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 de l'interface utilisateur sans distorsion, flou ni pixélisation notable.

  • L'appli utilise des drawables vectoriels lorsque cela est possible.
  • L'application utilise des graphismes de haute qualité pour toutes les tailles d'écran et tous les facteurs de forme ciblés.
  • Aucun crénelage n'est visible au bord des menus, des boutons et des autres éléments de l'interface utilisateur.
Line_Length T-Line_Length L'application 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 prises en charge par l'application.
Theme_Support T-Theme_Support Le contenu de l'application 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'application 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'application 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 en attente. Exemples : modifications apportées à des champs modifiables, progression dans un jeu, menus, vidéos et autres sections de l'application.

  • Lorsque l'appli est réactivée à partir du sélecteur d'applis Récents, 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, si 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 mise en page et typographie pour le Material Design.
Visual_Contrast T-Visual_Contrast

Le texte et les contenus de premier plan de l'application présentent les rapports de contraste suivants avec l'arrière-plan de l'application :

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

Fonctionnement

Votre application 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'appli 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 dismissible dans la barre d'état ou sur l'écran de verrouillage pour informer l'utilisateur que l'application 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 le son est en pause, le son est réactivé 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'UI système (par exemple, la barre de notifications ou l'écran d'accueil/de verrouillage)
  • Hors de l'écran de bureau visible

Partage

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

Services en arrière-plan

ID Tests Description
Background_Service_Optimization T-Background_Service_Optimization

L'appli évite d'exécuter des services inutilement longs en arrière-plan pour assurer le bon fonctionnement de l'appareil de l'utilisateur.

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

Voici quelques exemples d'utilisations incorrectes 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 la 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 frames toutes les 16 millisecondes (ou moins) pour afficher au moins 60 frames par seconde. Pour obtenir de l'aide concernant les problèmes d'affichage, consultez Lenteurs d'affichage.
StrictMode_Compliance T-StrictMode_Compliance Si StrictMode est activé (consultez la section sur les tests StrictMode), aucun clignotement rouge (avertissement StrictMode lié aux performances) n'est visible lorsque vous testez l'application.

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'application 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 concernant la stabilité, la compatibilité ou la sécurité doivent être disponibles rapidement pour les utilisateurs.

Pour les SDK Google, utilisez les 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'application 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'application 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'appli gère correctement les fonctionnalités de gestion de l'alimentation Sommeil et Mise en veille des applications.

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

Confidentialité et sécurité

L'appli 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 de Google Play concernant les données utilisateur 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 si possible une spécification approximative plutôt que précise. Consultez Réduire le nombre de demandes d'autorisation.
Sensitive_Permissions T-Sensitive_Permissions

L'application ne demande l'autorisation d'accéder à des données sensibles (comme les groupes d'autorisations SMS ou Journal d'appels ou la position) 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 scénario d'utilisation de votre application sans devoir accéder à 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 des autorisations sont nécessaires.
Graceful_Degradation T-Graceful_Degradation L'appli 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'application n'utilise aucun identifiant de matériel non réinitialisable (code IMEI, par exemple), à des fins d'identification.

Identité

ID Tests Description
Autofill_Hints T-Autofill_Hints L'application 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 Credential Manager pour Android afin de proposer 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'application 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'application définit explicitement l'attribut android:exported pour toutes les activités, services, broadcast receivers et en particulier pour les fournisseurs de contenu.

Seuls les composants d'appli qui partagent des données avec d'autres applis ou qui doivent être appelés par d'autres applis 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 applications 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 applications 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'application utilise les services Google Play, le fournisseur de sécurité est initialisé au démarrage de l'application.

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 WebViews 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'application ne charge pas dynamiquement du code extérieur à son APK. Utilisez les Android App Bundles, qui incluent Play Feature Delivery et Play Asset Delivery.

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

Cryptographie

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

Google Play

Activez la publication de votre application sur Google Play.

Règles

ID Tests Description
Play_Content_Policies T-Play_Content_Policies L'application respecte à la lettre le Règlement relatif au contenu Google Play pour les développeurs. Elle ne propose pas de contenus inappropriés et n'utilise pas la propriété intellectuelle ni la marque d'autres personnes.
Play_Content_Rating T-Play_Content_Policies La classification par âge de l'application est définie de manière appropriée, 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'application respecte les consignes décrites dans cet article d'aide. Vérifiez les points suivants :

  • La fiche de l'application contient une image de présentation de haute qualité.
  • L'image de présentation ne contient pas de photos d'appareil, de captures 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 application.
  • 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'application ne montrent ni ne mentionnent d'appareils autres qu'Android.
Play_Misleading_Content T-Play_Graphic_Assets Les captures d'écran ou vidéos de l'application 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 application sous différentes versions d'Android et résolutions d'écran. Configurez des appareils émulés (AVD) pour représenter les facteurs de forme et les combinaisons matériel/logiciel les plus courants pour 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 d'applis mobiles : associez un appareil mobile / émulateur à un émulateur Wear OS (Wear OS de forme ronde 1,84 pouces).
  • Appareils : votre environnement de test doit inclure quelques appareils physiques représentant les principaux facteurs de forme et combinaisons matériel/logiciels disponibles pour les consommateurs. Il n'est pas nécessaire d'effectuer des tests sur 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 application sur un 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 nouveaux comportements n'ont pas d'incidence sur l'expérience utilisateur de votre appli.

Pour obtenir d'autres conseils 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 à l'aide de StrictMode.ThreadPolicy.Builder et activez tous les dispositifs de surveillance compatibles dans ThreadPolicy à l'aide de detectAll().

Activez la notification visuelle des cas de non-respect des règles pour ThreadPolicy à l'aide de 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 programme 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'applis Récents.
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'application installée sur la carte SD d'un appareil (si l'application 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 :
  • Parité de fonctionnalité 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
  • Maintient 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 graphiques, le texte, les images et les autres éléments de l'interface utilisateur, ne sont pas déformés, flous ni pixélisés.
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é.

Vérifiez les points suivants :
  • La composition est acceptée dans tous les facteurs de forme compatibles.
  • Aucune lettre ni aucun mot tronqué
  • Aucun retour à la ligne inapproprié n'est visible 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'application, 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 comportent des descriptions de contenu.

Fonctionnement

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 le contenu audio dans la seconde qui suit ou fournit 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 priorité audio (ce qui se produit automatiquement pour les applications qui ciblent Android 12 (niveau d'API 31) et les versions ultérieures).
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 en tant qu'application de 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 le contenu 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 en tant qu'application 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 Utiliser les commandes multimédias de manière appropriée.
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 doit reprendre ou le volume doit ê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 de vidéos en mode Picture-in-picture dans l'application.
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 et ouvrez-en une autre pour la mettre en arrière-plan. Sur les appareils compatibles avec le mode Bureau, déplacez la fenêtre de l'application hors du bureau 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 la feuille de partage Android.

Services en 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 à Paramètres et vérifiez si votre application exécute des services en arrière-plan. Sur Android 4.0 ou version ultérieure, accédez à l'écran Applications, puis recherchez l'application dans l'onglet En cours d'exécution.

Performances et stabilité

Vérifiez les performances, la stabilité et la précision 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 fournit 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 et utilisez toutes les fonctionnalités principales. Vérifiez que l'application ne génère aucun avertissement de performances StrictMode, c'est-à-dire qu'aucun clignotement rouge n'est visible lorsque vous testez l'application. Les clignotements rouges signalent les comportements insatisfaisants 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é 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'application 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. Pour découvrir d'autres méthodes de test, consultez Restrictions concernant les interfaces non SDK.
T-Production_Build_Quality Production_Build_Quality Consultez le fichier build.gradle de votre application pour vérifier si des bibliothèques de débogage sont incluses.

Batterie

ID Fonctionnalité Description
T-Power_Management Power_Management

Utilisez toutes les fonctionnalités principales de l'application en mode Sommeil et Mise en veille des applications. Vérifiez que les alarmes, les minuteurs, les notifications et les synchronisations fonctionnent correctement dans la période 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 des commandes ADB (pour connaître les exigences 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 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 sur l'appareil (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'appli 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 les fonctionnalités sont utilisées, et non 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 autre cas d'utilisation 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 la mémoire de stockage interne. Vérifiez que les données stockées en externe ne sont pas 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 principales fonctionnalités de l'application. Vérifiez que l'application n'utilise aucun identifiant matériel (code IMEI, par exemple) à des fins d'identification.

Identité

ID Fonctionnalité Description
T-Autofill_Hints Autofill_Hints Utilisez toutes les fonctionnalités de l'application qui nécessitent une saisie de l'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 afin d'unifier la prise en charge des clés d'accès, de l'identité fédérée et des mots de passe pour la connexion.
T-Biometric_Authentication Biometric_Authentication Utilisez 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 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 sur l'appareil (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'application.
T-Network_Security_Configuration Network_Security_Configuration Examinez la configuration de la sécurité réseau de l'application. 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'application. 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 application.

Exécution

ID Fonctionnalité Description
T-App_Bundles App_Bundles Vérifiez que l'application utilise des Android App Bundles et 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 et un générateur de nombres aléatoires fournis par la plate-forme. 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'extension téléchargeable.

Archiver

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