La API de ProfilingManager te permite recopilar perfiles de rendimiento de usuarios reales, como seguimientos del sistema y volcados de montón de Java, de dispositivos de producción que ejecutan Android 15 (nivel de API 35) y versiones posteriores. Admite dos mecanismos de recopilación:
perfiles controlados por la app, en los que tu app controla la recopilación de perfiles desde
el inicio hasta la detención (Android 15 y versiones posteriores), y perfiles basados en activadores, en los que el
sistema controla la captura en respuesta a los eventos en los que registras interés
en Android 16 (nivel de API 36) y versiones posteriores.
En esta guía, se abarcan los siguientes temas:
- Captura perfiles: Cómo iniciar y detener grabaciones de perfiles controladas por la app y cómo registrarse para grabaciones de perfiles basadas en activadores.
- Recupera y sube perfiles: Cómo recuperar perfiles de forma local con
adbo subirlos en segundo plano conWorkManager. - Analiza perfiles: Cómo visualizar perfiles en la IU de Perfetto, consultar perfiles con PerfettoSQL, analizar seguimientos de forma masiva y analizar perfiles con IA.
- Casos de éxito de depuración: Cómo aplicar
ProfilingManagerde extremo a extremo para depurar un error de ANR y depurar una falla de OOM. - Límite de frecuencia y comportamiento de recopilación: Cómo comprender el límite de frecuencia y el comportamiento de recopilación en producción.
- Depuración local: Cómo usar los comandos de depuración para la generación de perfiles local.
Tipos de perfiles admitidos
ProfilingManager admite la recopilación de varios tipos de perfiles para que puedas
abordar problemas de rendimiento específicos en tu app. Puedes configurar solicitudes
directamente con las APIs de la plataforma o con los compiladores de AndroidX Core:
- Registros del sistema: Se capturan con
PROFILING_TYPE_SYSTEM_TRACEoSystemTraceRequestBuilder.- Es útil para diagnosticar bloqueos, analizar la latencia y depurar el rendimiento general.
- Volcados de montón de Java: Se capturan con
PROFILING_TYPE_JAVA_HEAP_DUMPoJavaHeapDumpRequestBuilder.- Captura una instantánea del gráfico de objetos del montón de Java de tu app y los tamaños para la detección de fugas de memoria y la optimización de la memoria.
- Perfiles del montón: Se capturan con
PROFILING_TYPE_HEAP_PROFILEoHeapProfileRequestBuilder.- Realiza un seguimiento de las asignaciones de memoria nativa (o, de manera opcional, de Java) a lo largo del tiempo para ayudar a optimizar el uso de memoria.
- Muestreo de pila: Se captura con
PROFILING_TYPE_STACK_SAMPLINGoStackSamplingRequestBuilder.- Muestra las pilas de llamadas de subprocesos para ayudarte a comprender la ejecución del código y analizar el uso de CPU.
Integra ProfilingManager con un agente de IA
Puedes usar un agente de programación de IA para integrar ProfilingManager en tu app.
Por ejemplo, ejecuta la siguiente instrucción en tu agente de programación de IA para configurar
la recopilación de activadores de errores de aplicación no responde (ANR). Reemplaza
</path/to/codebase> por la ruta de acceso a tu app:
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.
Puedes adaptar esta instrucción para configurar otros activadores del sistema (como TRIGGER_TYPE_OOM) o configurar capturas de perfiles controladas por la app con la guía de generación de perfiles controlada por la app. Después de la integración, prueba tu configuración de forma local
con los comandos de depuración para la generación de perfiles local y analiza los perfiles recopilados
con un agente de IA.