ProfilingManager API를 사용하면 Android 15(API 수준 35) 이상을 실행하는 프로덕션 기기에서 시스템 트레이스 및 자바 힙 덤프와 같은 실제 사용자 성능 프로필을 수집할 수 있습니다. 이 API는 두 가지 수집 메커니즘을 지원합니다. 앱이 프로필 수집을 시작부터 중지까지 제어하는 앱 기반 프로필(Android 15 이상)과 Android 16(API 수준 36) 이상에서 관심을 등록한 이벤트에 대한 응답으로 시스템이 캡처를 처리하는 트리거 기반 프로필입니다.
이 가이드에는 다음 주제가 포함되어 있습니다.
- 프로필 캡처: 앱 기반 프로필 기록을 시작하고 중지하는 방법과 트리거 기반 프로필 기록을 등록하는 방법
- 프로필 검색 및 업로드:
adb를 사용하여 로컬에서 프로필을 검색하거나WorkManager를 사용하여 백그라운드에서 업로드하는 방법 - 프로필 분석: Perfetto UI에서 프로필을 시각화하고, PerfettoSQL로 프로필을 쿼리하고, 트레이스를 일괄 분석하고, AI로 프로필을 분석하는 방법입니다.
- 디버깅 우수사례:
ProfilingManager를 엔드 투 엔드로 적용하여 ANR을 디버그하고 OOM 비정상 종료를 디버그하는 방법 - 비율 제한 및 수집 동작: 프로덕션에서 비율 제한 및 수집 동작을 이해하는 방법
- 로컬 디버깅: 로컬 프로파일링에 디버그 명령어를 사용하는 방법
지원되는 프로필 유형
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를 사용하여 캡처됩니다.- 스레드 호출 스택을 샘플링하여 코드 실행을 이해하고 CPU 사용량을 분석하는 데 도움이 됩니다.
AI 에이전트와 ProfilingManager 통합
AI 코딩 에이전트를 사용하여 ProfilingManager를 앱에 통합할 수 있습니다. 예를 들어 AI 코딩 에이전트에서 다음 프롬프트를 실행하여 애플리케이션 응답 없음(ANR) 트리거 수집을 설정하고 </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)를 설정하거나 앱 기반 프로파일링 가이드를 사용하여 앱 기반 프로필 캡처를 구성할 수 있습니다. 통합 후에는 로컬 프로파일링을 위한 디버그 명령어를 사용하여 로컬에서 설정을 테스트하고 AI 에이전트로 수집된 프로필을 분석합니다.