Interfejs API ProfilingManager umożliwia zbieranie profili wydajności rzeczywistych użytkowników, takich jak ślady systemu i zrzuty sterty Javy, z urządzeń produkcyjnych z Androidem 15 (API na poziomie 35) lub nowszym. Obsługuje 2 mechanizmy zbierania danych:
profile oparte na aplikacji, w których aplikacja kontroluje zbieranie danych od początku do końca (Android 15 i nowsze), oraz profile oparte na aktywatorach, w których system obsługuje przechwytywanie w odpowiedzi na zdarzenia, które Cię interesują, na Androidzie 16 (API na poziomie 36) i nowszych.
W tym przewodniku znajdziesz te tematy:
- Przechwytywanie profili: jak rozpoczynać i zatrzymywać nagrywanie profili sterowane przez aplikację oraz jak rejestrować nagrywanie profili na podstawie aktywatorów.
- Pobieranie i przesyłanie profili: jak pobrać profile lokalnie za pomocą
adblub przesłać je w tle za pomocąWorkManager. - Analizowanie profili: jak wizualizować profile w interfejsie Perfetto, wykonywać zapytania dotyczące profili za pomocą PerfettoSQL, analizować ślady zbiorczo i analizować profile za pomocą AI.
- Studia przypadków debugowania: jak zastosować
ProfilingManagerod początku do końca, aby zdebugować błąd ANR i zdebugować awarię OOM. - Ograniczanie liczby żądań i zachowanie kolekcji: jak zrozumieć ograniczanie liczby żądań i zachowanie kolekcji w środowisku produkcyjnym.
- Debugowanie lokalne: jak używać poleceń debugowania do lokalnego profilowania.
Obsługiwane typy profili
ProfilingManager obsługuje zbieranie kilku typów profili, dzięki czemu możesz kierować reklamy na konkretne problemy z wydajnością w aplikacji. Żądania możesz konfigurować bezpośrednio za pomocą interfejsów API platformy lub kreatorów AndroidX Core:
- Śledzenie systemu: przechwytywane za pomocą
PROFILING_TYPE_SYSTEM_TRACElubSystemTraceRequestBuilder.- Przydatne do diagnozowania zacinania się, analizowania opóźnień i ogólnego debugowania wydajności.
- Zrzuty sterty Java: przechwytywane za pomocą
PROFILING_TYPE_JAVA_HEAP_DUMPlubJavaHeapDumpRequestBuilder.- Przechwytuje zrzut wykresu i rozmiarów obiektów sterty Java aplikacji, aby wykrywać wycieki pamięci i optymalizować jej wykorzystanie.
- Profile sterty: przechwytywane za pomocą
PROFILING_TYPE_HEAP_PROFILElubHeapProfileRequestBuilder.- Śledzi alokacje pamięci natywnej (lub opcjonalnie Javy) w czasie, aby pomóc w optymalizacji wykorzystania pamięci.
- Próbkowanie stosu: przechwytywane za pomocą
PROFILING_TYPE_STACK_SAMPLINGlubStackSamplingRequestBuilder.- Próbkuje stosy wywołań wątków, aby pomóc Ci zrozumieć wykonywanie kodu i przeanalizować wykorzystanie procesora.
Integracja ProfilingManager z agentem AI
Możesz użyć agenta AI kodowania, aby zintegrować ProfilingManager z aplikacją.
Na przykład uruchom w agencie AI kodowania ten prompt, aby skonfigurować zbieranie danych o błędach „Aplikacja nie odpowiada” (ANR). Zastąp </path/to/codebase> ścieżką do aplikacji:
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.
Możesz dostosować ten prompt, aby skonfigurować inne wyzwalacze systemowe (takie jak TRIGGER_TYPE_OOM), lub skonfigurować przechwytywanie profili sterowane przez aplikację, korzystając z przewodnika po profilowaniu sterowanym przez aplikację. Po integracji przetestuj konfigurację lokalnie, używając poleceń debugowania do lokalnego profilowania, i przeanalizuj zebrane profile za pomocą agenta AI.