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.
|
| 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. |
Navigation
| 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.
|
Notifications
| ID | Tests | Description |
|---|---|---|
| Notification_Quality | T-Notification_Quality |
Les notifications fournissent des informations pertinentes sur votre application.
|
| 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 :
|
| 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 :
|
| 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 :
|
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 :
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 |
| 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ètre 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 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 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 :
|
| 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 :
|
| 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 :
|
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 :
|
| 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. |
Navigation
| 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 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 :