L'API ProfilingManager vous permet de collecter des profils de performances d'utilisateurs réels, tels que des traces système et des empreintes de la mémoire Java, à partir d'appareils de production exécutant Android 15 (niveau d'API 35) ou version ultérieure. Il accepte deux mécanismes de collecte : les profils basés sur l'application, où votre application contrôle la collecte de profils du début à la fin (Android 15 ou version ultérieure), et les profils basés sur des déclencheurs, où le système gère la capture en réponse aux événements pour lesquels vous vous êtes inscrit sur Android 16 (niveau d'API 36) ou version ultérieure.
Ce guide couvre les sujets suivants :
- Capturer des profils : comment démarrer et arrêter les enregistrements de profils pilotés par l'application et comment s'inscrire aux enregistrements de profils basés sur des déclencheurs.
- Récupérer et importer des profils : comment récupérer des profils localement avec
adbou les importer en arrière-plan avecWorkManager. - Analyser les profils : découvrez comment visualiser les profils dans l'UI Perfetto, interroger les profils avec PerfettoSQL, analyser les traces de manière groupée et analyser les profils avec l'IA.
- Études de cas de débogage : comment appliquer
ProfilingManagerde bout en bout pour déboguer une erreur ANR et déboguer un plantage OOM. - Limitation du débit et comportement de collecte : comprendre la limitation du débit et le comportement de collecte en production.
- Débogage local : comment utiliser les commandes de débogage pour le profilage local.
Types de profils compatibles
ProfilingManager permet de collecter plusieurs types de profils afin de cibler des problèmes de performances spécifiques dans votre application. Vous pouvez configurer les requêtes directement à l'aide des API de la plate-forme ou des compilateurs AndroidX Core :
- Traces système : capturées à l'aide de
PROFILING_TYPE_SYSTEM_TRACEou deSystemTraceRequestBuilder.- Utile pour diagnostiquer les à-coups, analyser la latence et déboguer les performances générales.
- Empreintes de la mémoire Java : capturées à l'aide de
PROFILING_TYPE_JAVA_HEAP_DUMPou deJavaHeapDumpRequestBuilder.- Capture un instantané du graphique et des tailles des objets du tas Java de votre application pour détecter les fuites de mémoire et optimiser la mémoire.
- Profils du tas : capturés à l'aide de
PROFILING_TYPE_HEAP_PROFILEouHeapProfileRequestBuilder.- Suivre les allocations de mémoire native (ou Java, si vous le souhaitez) au fil du temps pour optimiser l'utilisation de la mémoire.
- Échantillonnage de la pile : capturé à l'aide de
PROFILING_TYPE_STACK_SAMPLINGouStackSamplingRequestBuilder.- Échantillonne les piles d'appels de threads pour vous aider à comprendre l'exécution de code et à analyser l'utilisation du processeur.
Intégrer ProfilingManager à un agent IA
Vous pouvez utiliser un agent de codage IA pour intégrer ProfilingManager à votre application. Par exemple, exécutez le prompt suivant dans votre agent de codage IA pour configurer la collecte des déclencheurs d'erreurs "L'application ne répond pas" (ANR), en remplaçant </path/to/codebase> par le chemin d'accès à votre application :
Read https://developer.android.com/topic/performance/tracing/profiling-manager/trigger-based-capture
and https://developer.android.com/topic/performance/tracing/profiling-manager/upload-worker
and integrate ProfilingManager ANR trigger collection (TRIGGER_TYPE_ANR) into my
app at </path/to/codebase>, including registering the result listener after app
startup completes and scheduling a WorkManager upload job when a profile is
received.
Vous pouvez adapter cette requête pour configurer d'autres déclencheurs système (tels que TRIGGER_TYPE_OOM) ou configurer des captures de profils basées sur l'application à l'aide du guide de profilage basé sur l'application. Après l'intégration, testez votre configuration localement à l'aide des commandes de débogage pour le profilage local, puis analysez les profils collectés avec un agent IA.