API ProfilingManager позволяет собирать профили производительности реальных пользователей, например трассировки системы и дампы кучи Java, с рабочих устройств под управлением Android 15 (уровень API 35) и более поздних версий. Поддерживаются два механизма сбора данных:
профили, управляемые приложением, в которых приложение контролирует сбор данных от начала до конца (Android 15 и более поздние версии), и профили на основе триггеров, в которых система обрабатывает сбор данных в ответ на события, которые вы регистрируете в Android 16 (уровень API 36) и более поздних версиях.
В этом руководстве рассматриваются следующие темы:
- Запись профилей. Как запускать и останавливать запись профилей на основе приложения и как регистрировать запись профилей на основе триггеров.
- Получение и загрузка профилей. Как получать профили локально с помощью
adbили загружать их в фоновом режиме с помощьюWorkManager. - Анализ профилей. Как визуализировать профили в Perfetto UI, запрашивать профили с помощью PerfettoSQL, анализировать трассировки в пакетном режиме и анализировать профили с помощью ИИ.
- Примеры отладки. Как использовать
ProfilingManagerдля отладки ошибок ANR и сбоев из-за нехватки памяти. - Ограничение частоты запросов и сбор данных. Как работают ограничение частоты запросов и сбор данных в рабочей среде.
- Локальная отладка. Как использовать команды отладки для локального профилирования.
Поддерживаемые типы профилей
ProfilingManager поддерживает сбор профилей нескольких типов, чтобы вы могли устранять конкретные проблемы с производительностью в своем приложении. Вы можете настраивать запросы напрямую с помощью API платформы или конструкторов AndroidX Core:
- Трассировка системы. Записывается с помощью
PROFILING_TYPE_SYSTEM_TRACEилиSystemTraceRequestBuilder.- Полезно для диагностики задержек, анализа задержек и общей отладки производительности.
- Дампы кучи Java. Получены с помощью
PROFILING_TYPE_JAVA_HEAP_DUMPилиJavaHeapDumpRequestBuilder.- Создает снимок графа объектов кучи Java и размеров приложения, чтобы выявлять утечки памяти и оптимизировать ее использование.
- Профили кучи. Получаются с помощью
PROFILING_TYPE_HEAP_PROFILEилиHeapProfileRequestBuilder.- Отслеживает выделение памяти для нативного кода (или кода Java) с течением времени, чтобы помочь оптимизировать использование памяти.
- Выборка стека. Записывается с помощью
PROFILING_TYPE_STACK_SAMPLINGилиStackSamplingRequestBuilder.- Выборка стеков вызовов потоков, которая помогает понять, как выполняется код, и проанализировать использование ЦП.
Как интегрировать ProfilingManager с ИИ-агентом
Вы можете использовать ИИ-агента для программирования, чтобы интегрировать ProfilingManager в свое приложение.
Например, выполните следующий запрос в ИИ-агенте для программирования, чтобы настроить сбор триггеров ошибок "Приложение не отвечает", заменив </path/to/codebase> на путь к вашему приложению:
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.
Вы можете адаптировать этот запрос, чтобы настроить другие системные триггеры (например, TRIGGER_TYPE_OOM), или настроить сбор профилей, управляемый приложением, с помощью руководства по профилированию, управляемому приложением. После интеграции протестируйте настройки локально, используя команды отладки для локального профилирования, и проанализируйте собранные профили с помощью ИИ-агента.