Profiler les performances de votre application

Une application est considérée comme peu performante si elle répond lentement, présente des animations saccadées, se fige ou consomme trop d'énergie. Pour résoudre les problèmes de performances, identifiez les domaines dans lesquels votre application fait un usage inefficace des ressources telles que le CPU, la mémoire, le processeur graphique, le réseau ou la batterie de l'appareil.

Pour identifier et résoudre ces problèmes, utilisez les outils et techniques de profilage et d'analyse comparative décrits dans cette rubrique. Pour découvrir les techniques qui permettent de mesurer les performances et voir comment les utiliser pour résoudre des problèmes spécifiques, consultez Mesurer les performances.

Android Studio propose plusieurs outils de profilage pour vous aider à identifier et à visualiser les problèmes potentiels :

  • Le Profileur de processeur, qui permet de suivre les problèmes de performances d'exécution.
  • Le Profileur de mémoire, qui permet de suivre les allocations de mémoire.
  • Le Profileur d'énergie, qui permet de suivre la consommation d'énergie. Il peut contribuer à décharger la batterie.

Ces outils sont compatibles avec Android 5.0 (niveau d'API 21) ou version ultérieure. Pour en savoir plus sur ces outils, consultez les autres pages de cette section du guide de l'utilisateur.

Les bibliothèques Jetpack Benchmark permettent à votre application de mesurer plusieurs opérations importantes :

  • Macrobenchmark : mesurez les performances pour des cas d'utilisation importants, par exemple lorsque l'application démarre ou que l'UI doit être redessinée pour afficher une animation ou faire défiler un écran.
  • Microbenchmark : mesurez la charge de fonctions spécifiques sur le processeur.

Pour en savoir plus sur ces bibliothèques, consultez la page Effectuer une analyse comparative de votre application.

Applications profilables

Profileable est une configuration du fichier manifeste introduite dans Android Q. Elle peut spécifier si l'utilisateur de l'appareil peut profiler une application via des outils tels qu'Android Studio, Simpleperf et Perfetto.

Avant profileable, la plupart des développeurs ne pouvaient profiler que des applications débogables sur Android, ce qui avait pour effet de générer d'importants coûts de performances supplémentaires. Ces coûts de performances pouvaient invalider les résultats du profilage, en particulier s'ils découlaient de facteurs temporels. Le tableau 1 résume les différences entre les applications débogables et profilables.

Tableau 1. Résumé des principales différences entre les applications débogables et profilables.
Fonctionnalité Débogable Profilable
Profileur de mémoire Profilage complet

Oui :

Non :

Profileur de processeur Profilage complet

Oui :

Non :

Profileur de réseau Oui Non
Profileur d'énergie Oui Non
Profileur d'alimentation Oui Oui
Contrôle des événements Oui Non

L'attribut Profileable a été introduit pour que les développeurs puissent autoriser leurs applications à exposer des informations à des outils de profilage tout en encourant des coûts de performances très faibles. Pour l'essentiel, un APK profilable est un APK de build pour lequel une ligne <profileable android:shell="true"/> a été ajoutée à la section <application> du fichier manifeste.

Créer et exécuter automatiquement une application profilable

Vous pouvez configurer, compiler et exécuter une application profilable en un clic. Cette fonctionnalité nécessite un appareil de test virtuel ou physique exécutant le niveau d'API 29 ou supérieur, et doté de Google Play. Pour utiliser cette fonctionnalité, cliquez sur la flèche à côté de l'icône Profiler l'application et sélectionnez l'une des deux options suivantes :

Menu pour créer une application profilable en un clic
  • Profile 'app' with low overhead (Profiler l'application avec peu de ressources) démarre les profileurs de processeur et de mémoire. Dans le Profileur de mémoire, seule l'option Record Native Allocations (Enregistrer les allocations natives) est activée.

    Profilage avec peu de ressources
  • L'option Profile 'app' with complete data (Profiler l'application avec des données complètes) démarre les profileurs de processeur, de mémoire et d'énergie.

    Profilage avec des données complètes

Créer et exécuter manuellement une application profilable

Pour créer une application profilable manuellement, vous devez d'abord créer un build de l'application, puis mettre à jour son fichier manifeste, ce qui transformera ce build en application profilable. Une fois l'application profilable configurée, lancez-la et sélectionnez un processus profilable à analyser.

Créer le build d'une application

Pour créer le build d'une application afin de la profiler :

  1. Signez votre application avec la clé de débogage en ajoutant les lignes suivantes au fichier build.gradle de votre application. Si vous disposez déjà d'une variante de compilation qui fonctionne, vous pouvez passer à l'étape suivante.

            buildTypes {
              release {
                signingConfig signingConfigs.debug
              }
            }
          
  2. Dans Android Studio, sélectionnez Build > Select Build Variant... (Compiler > Sélectionner une variante de compilation), puis choisissez la variante.

Transformer le build en application profilable

  1. Convertissez le build sélectionné ci-dessus en application profilable en ouvrant le fichier AndroidManifest.xml et en ajoutant ce qui suit dans <application>. Pour en savoir plus, consultez Compiler une application en vue de sa publication.

    <profileable android:shell="true"/>

  2. Selon la version du SDK, vous devrez peut-être ajouter les lignes suivantes au fichier build.gradle de l'application.

          aaptOptions {
            additionalParameters =["--warn-manifest-validation"]
          }
        

Profiler une application profilable

Pour profiler une application profilable :

  1. Depuis l'émulateur ou l'appareil de développement, démarrez l'application.

  2. Dans Android Studio, lancez le profileur en sélectionnant View > Tool Windows > Profiler (Vue > Fenêtres d'outils > Profileur).

  3. Une fois l'application lancée, cliquez sur le bouton Bouton Plus du profileur dans le profileur pour afficher le menu déroulant. Sélectionnez votre appareil, puis sélectionnez l'entrée de l'application sous Other profileable processes (Autres processus profilables).

    Menu de profilage
  4. Le profileur doit être joint à l'application. Seuls les profileurs de processeur et de mémoire sont disponibles, avec des capacités limitées pour les seconds.

    Vue de la session de profilage
    Menu de profilage
    Menu de profilage

Sessions

Vous pouvez enregistrer les données du Profileur en tant que sessions, qui sont conservées jusqu'à ce que vous quittiez Android Studio. Vous pouvez comparer l'utilisation des ressources dans différents scénarios en enregistrant les informations de profilage dans plusieurs sessions et en basculant entre elles.

  • Pour démarrer une nouvelle session, cliquez sur le bouton Start a new profiling session (Démarrer une nouvelle session de profilage) , puis sélectionnez un processus d'application dans le menu déroulant.
  • Lorsque vous enregistrez une trace ou capturez une empreinte de la mémoire, Android Studio ajoute ces données (ainsi que l'activité réseau de votre application) comme une entrée distincte de la session actuelle.
  • Pour arrêter d'ajouter des données à la session en cours, cliquez sur Stop the current profiling session (Arrêter la session de profilage en cours) .
  • Pour importer une trace exportée à partir d'une exécution précédente d'Android Studio, cliquez sur Start new profiler session (Démarrer une nouvelle session du profileur) , puis sélectionnez Load from file (Charger à partir du fichier).

Activer la prise en supplémentaire des appareils plus anciens (niveau d'API < 26)

Pour afficher des données de profilage supplémentaires lors de l'exécution d'un appareil équipé d'Android 7.1 ou version antérieure, Android Studio doit injecter une logique de surveillance dans votre application compilée. Ces données de profilage supplémentaires sont les suivantes :

  • Chronologie des événements sur toutes les fenêtres du profileur
  • Nombre d'objets alloués dans le Profileur de mémoire
  • Événements de récupération de mémoire dans le Profileur de mémoire
  • Détails sur tous les fichiers transmis dans le Profileur de réseau

Pour activer la prise en charge supplémentaire des appareils plus anciens :

  1. Sélectionnez Run > Edit Configurations (Exécuter > Modifier les configurations).
  2. Sélectionnez votre module d'application dans le volet de gauche.
  3. Cliquez sur l'onglet Profiling (Profilage), puis cochez la case Enable additional support for older devices (API level < 26) (Activer la prise en charge supplémentaire des appareils plus anciens (niveau d'API < 26)).
  4. Compilez et exécutez à nouveau votre application.

L'activation de la prise en charge supplémentaire des appareils plus anciens ralentit le processus de compilation. Vous ne devez donc l'activer que lorsque vous souhaitez commencer à profiler votre application.

Exécuter des profileurs autonomes

Les profileurs Android Studio autonomes vous permettent de profiler votre application sans exécuter l'intégralité de l'IDE Android Studio.

Pour exécuter les profileurs autonomes :

  1. Vérifiez que le profileur n'est pas en cours d'exécution dans Android Studio.
  2. Accédez au répertoire d'installation, puis au répertoire bin :

    Windows/Linux : studio-installation-folder/bin

    macOS : l'utilisation de profileurs autonomes n'est pas prise en charge par macOS.

  3. Exécutez profiler.exe ou profiler.sh en fonction de l'OS utilisé. L'écran de démarrage d'Android Studio s'affiche. Lorsque l'écran de démarrage disparaît, une fenêtre de profileur s'ouvre.