Dernière mise à jour : 20/03/2026
Pour créer 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 de base de haute qualité.
Expérience utilisateur
Les modèles de conception graphique et d'interaction de votre appli doivent respecter les standards d'Android, pour 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.
| ID | Tests | Description |
|---|---|---|
| Facilité d'utilisation | ||
| Usability:UX | T-Usability:Core, 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. |
| Facilité d'utilisation : Switcher | T-Usability: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. |
| Facilité d'utilisation : sommeil | T-Usability:Sleep, 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. |
| Facilité d'utilisation : verrouillage | T-Usability:Lock, 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 | ||
| UI:Parity | T-UI: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. |
| UI:Fullscreen | T-UI: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. |
| UI:Transitions | T-UI: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 | ||
| Visuel : display | T-Visual:Display |
L'appli affiche les graphismes, textes, images et autres éléments de l'interface utilisateur sans distorsion, flou ni pixélisation notable.
|
| Visuel : lisibilité | T-Visual:Readability | 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. |
| Visuel : Thèmes | T-Visual:Themes | Le contenu de l'application et tous les contenus Web auxquels elle accède sont compatibles avec les thèmes clair et sombre. |
| Navigation | ||
| Nav:BackButton | T-Nav:Back | 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. |
| Nav:BackGesture | T-Nav:Back | L'application est compatible avec la navigation par gestes pour accéder et revenir à l'écran d'accueil. |
| Nav:State | T-Nav:State, T-Nav:Back |
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.
|
| Notifications | ||
| Notify:Info | T-Notify : info |
Les notifications fournissent des informations pertinentes sur votre application.
|
| Notification : Messagerie | T-Notify : info |
Pour les applis de chat, les applis de réseau social et les conversations :
|
| Accessibilité | ||
| Accès : cibles | T-Access:Targets | Les cibles tactiles font au moins 48 dp. Consultez les consignes de mise en page et typographie pour le Material Design. |
| Access:Contrast | T-Access: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 :
|
| Accès : description | T-Access : description | Décrivez chaque élément d'interface utilisateur, sauf TextView, avec contentDescription. |
Fonctionnement
Votre application doit implémenter le comportement fonctionnel suivant.
| ID | Tests | Description |
|---|---|---|
| Audio | ||
| Audio : Init | T-Audio:Init |
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 | T-Audio:Focus | L'appli doit demander la priorité audio quand la lecture audio commence, et abandonner la priorité audio quand la lecture s'arrête. |
| Audio : interruption | T-Audio:Interrupt | 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 : arrière-plan | T-Audio:Background | L'application doit prendre en charge la lecture en arrière-plan. |
| Audio : notification | T-Audio:Notification | Lorsque l'application lit un contenu audio en arrière-plan, elle doit créer une notification stylisée avec MediaStyle. |
| Audio : reprendre | T-Audio: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 | ||
| Vidéo : PIP | T-Video:PiP | Si l'appli lit de la vidéo, elle doit gérer la lecture Picture-in-picture. |
| Vidéo : encodage | T-Video:Encoding | Si l'appli encode de la vidéo, elle doit utiliser la norme de compression vidéo HEVC. |
| Partage | ||
| Sharing:Sheet | T-Sharing:Sheet | 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 | ||
| Background:Services | T-Background:Services |
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 :
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.
| ID | Tests | Description |
|---|---|---|
| Performances | ||
| Performance : démarrage | T-Performance:Startup | L'appli se charge rapidement, ou affiche un indicateur de progression ou un autre signal similaire si le chargement prend plus de deux secondes. |
| Performances : FPS | T-Performance:FPS | 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. |
| Performances : strict | T-Performance : strict | 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é | ||
| Stabilité : 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 | ||
| SDK:Platform | T-SDK:Platform | 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. |
| SDK:Target | T-SDK:Latest | 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. |
| SDK:Compile | T-SDK:Latest | 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:3P | T-SDK:3P, T-SDK:Non |
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. |
| SDK:Non | T-SDK : Non | L'application n'utilise pas d'interfaces autres que les SDK. |
| SDK:Debug | T-SDK:Debug | 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 | ||
| Batterie : gérer | T-Battery : gérer |
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.
| ID | Tests | Description |
|---|---|---|
| Autorisations | ||
| Autorisations : min | T-Permissions:Min | 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. |
| Autorisations : sensibles | T-Permissions:Sensitive |
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. |
| Autorisations : exécution | T-Permissions:Runtime | L'application demande des autorisations d'exécution lorsque la fonctionnalité est demandée, plutôt qu'au démarrage de l'application. |
| Autorisations : expliquer | T-Permissions:Explain | L'application explique clairement pourquoi des autorisations sont nécessaires. |
| Autorisations : dégradation | T-Permissions : dégradation | 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 | ||
| Data:Sensitive | T-Data:Sensitive, T-Data:Handling |
Toutes les données sensibles sont stockées dans la mémoire de stockage interne de l'appli. |
| Données : journal | T-Data:Log | Aucune donnée utilisateur personnelle ou sensible n'est enregistrée dans le journal système ou dans un journal propre à l'appli. |
| Données : ID | T-Data:IDs | L'application n'utilise aucun identifiant de matériel non réinitialisable (code IMEI, par exemple), à des fins d'identification. |
| Identité | ||
| Identity:Hints | T-Identity: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.). |
| Identity:CredMan | T-Identity:CredMan | 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. |
| Identité : bio | T-Identity:Bio | 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'appli | ||
| Composants : exportation | T-Components:Export |
L'application définit explicitement l'attribut 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. |
| Composants : autorisations | T-Components : autorisations |
L'ensemble des intents et des diffusions respectent les bonnes pratiques :
|
| Composants : protection | T-Components:Protection |
Tous les composants qui partagent des contenus entre les applications utilisent Les applications ne doivent pas dépendre de l'accès à une liste de packages installés. |
| Mise en réseau | ||
| Réseau : trafic | T-Network:Traffic | Le trafic réseau est intégralement envoyé via le protocole SSL. |
| Network:Config | T-Network:Config | L'appli déclare une configuration de sécurité réseau. |
| Réseau : Play | T-Network:Play | Si l'application utilise les services Google Play, le fournisseur de sécurité est initialisé au démarrage de l'application. |
| WebViews | ||
| WebViews:Config | T-WebViews:Config, T-WebViews:Nav |
N'utilisez pas setAllowUniversalAccessFromFileURLs() pour accéder au contenu local. Utilisez plutôt WebViewAssetLoader. |
| WebViews:JavaScript | T-WebViews:JavaScript, T-WebViews:Nav |
Les WebViews 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 | ||
| Exécution : groupes | T-Execution: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 | ||
| Crypto:Algorithms | T-Crypto: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.
| ID | Tests | Description |
|---|---|---|
| Règles | ||
| Play:Policies | T-Play : règles | 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:Maturity | T-Play : règles | 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 | ||
| Play : graphismes | T-Play:Graphics, T-Play:Assets |
L'image de présentation de l'application respecte les consignes décrites dans cet article d'aide. Vérifiez les points suivants :
|
| Play:NonAndroid | T-Play:Assets | Les captures d'écran et vidéos de l'application ne montrent ni ne mentionnent d'appareils autres qu'Android. |
| Play:Misleading | T-Play: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 | ||
| Play:Bugs | T-Play : règles | 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 physiques : 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
| ID | Fonctionnalité | Description |
|---|---|---|
| Facilité d'utilisation | ||
| T-Usability:Core | Usability: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-Usability:Switcher | Usability: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-Usability:Sleep | Facilité d'utilisation : Sommeil | Appuyez sur le bouton Marche/Arrêt pour mettre l'appareil en veille, puis appuyez à nouveau dessus pour réactiver l'écran. |
| T-Usability:Lock | Usability:Lock | 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 | ||
| T-SD-Card | Usability: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 | ||
| T-UI:Transitions | UI:Parity, UI:Fullscreen, UI: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 | ||
| T-Visual:Display | Visuel : écran | 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-Visual:Readability | Visuel : lisibilité |
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 :
|
| T-Visual:Themes | Visuel : thèmes | 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 | ||
| T-Nav:Back | Nav:BackButton, Nav:BackGesture |
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-Nav:State | Nav:State | 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 | ||
| T-Notify:Info | Notify:Info, Notify:Messaging |
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é | ||
| T-Access:Targets | Accès : cibles | 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-Access:Contrast | Access:Contrast | Vérifiez le contraste de tous les éléments visuels. |
| T-Access:Description | Access:Description | Vérifiez que tous les éléments d'interface utilisateur autres que TextView comportent des descriptions de contenu. |
Fonctionnement
| ID | Fonctionnalité | Description |
|---|---|---|
| Audio | ||
| T-Audio:Init | Audio : Init | Lancer la lecture audio Vérifiez que l'application commence à lire le contenu audio dans un délai d'une seconde ou fournit un indicateur visuel signalant que les données audio sont en cours de préparation pour la lecture. |
| T-Audio:Focus | Audio : se concentrer | 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:Interrupt | Audio : interruption | 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:Background | Audio : arrière-plan | Lancer la lecture audio Interagissez avec une autre application non audio en tant qu'application au premier plan. L'application doit continuer à lire l'audio en arrière-plan. |
| T-Audio:Notification | Audio : notification | 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:Resume | Audio : reprendre | 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. |
| T-Video:PiP | Vidéo : PiP | Activez la lecture de vidéos en mode Picture-in-picture dans l'application. |
| T-Video:Encoding | Vidéo : Encodage | Vérifiez que l'application encode la vidéo à l'aide de la norme de compression vidéo HEVC. |
| Partage | ||
| T-Sharing:Sheet | Partage : feuille | 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 | ||
| T-Background:Services | Contexte : Services | 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é
| ID | Fonctionnalité | Description |
|---|---|---|
| Performances | ||
| T-Performance:Startup | Performances : démarrage | 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-Performance:FPS | Performances : FPS | 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-Performance:Strict | Performances : strictes |
Activez Soyez particulièrement attentif à la récupération de mémoire et à son impact sur l'expérience utilisateur. |
| Stabilité | ||
| T-Stability:ANR | Stabilité : 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 | ||
| T-SDK:Platform | SDK:Platform | 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-SDK:Latest | SDK:Target, SDK:Compile |
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:3P | SDK:3P | Examinez le fichier build.gradle de votre application pour identifier d'éventuelles dépendances obsolètes. |
| T-SDK:Non | SDK : Non | 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-SDK:Debug | SDK:Debug | Consultez le fichier build.gradle de votre application pour vérifier si des bibliothèques de débogage sont incluses. |
| Batterie | ||
| T-Battery:Manage | Batterie : gérer |
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é
| ID | Fonctionnalité | Description |
|---|---|---|
| Autorisations | ||
| T-Permissions:Min | Autorisations : Min | 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-Permissions:Sensitive | Autorisations : sensibles | 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-Permissions:Runtime | Autorisations : exécution | 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-Permissions:Explain | Autorisations : expliquer | 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-Permissions:Degrade | Autorisations : dégradation | 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 | ||
| T-Data:Sensitive | Data:Sensitive | 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-Data:Handling | Data:Sensitive | Examinez comment les données chargées depuis l'espace de stockage externe sont gérées et traitées. |
| T-Data:Log | Données : journal | 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-Data:IDs | Données : ID | 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é | ||
| T-Identity:Hints | Identity: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-Identity:CredMan | Identity:CredMan | 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-Identity:Bio | Identity:Bio | 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'appli | ||
| T-Components:Export | Composants : exporter | 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-Components:Permissions | Composants : autorisations | 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-Components:Protection | Composants : 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 | ||
| T-Network:Traffic | Réseau : trafic | Déclarez une configuration de sécurité réseau qui désactive le trafic en texte clair, puis testez l'application. |
| T-Network:Config | Network:Config | 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-Network:Play | Réseau : Play | Vérifiez que le fournisseur de sécurité est initialisé au démarrage de l'application pour les services Google Play. |
| WebViews | ||
| T-WebViews:Config | WebViews:Config | 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-WebViews:JavaScript | WebViews:JavaScript | Pour chaque WebView, accédez à une page nécessitant JavaScript. |
| T-WebViews:Nav | WebViews:Config, WebViews: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 | ||
| T-Execution:Bundles | Exécution : bundles | Vérifiez que l'application utilise des Android App Bundles et ne charge pas dynamiquement du code extérieur à son APK. |
| Cryptographie | ||
| T-Crypto:Algorithms | Crypto: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
| ID | Fonctionnalité | Description |
|---|---|---|
| Règles | ||
| T-Play:Policies | Play:Policies, Play:Maturity, Play:Bugs |
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 | ||
| T-Play:Graphics | Play:Graphics | 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:Assets | Play:Graphics, Play:NonAndroid, Play:Misleading |
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 :