Mit der ProfilingManager API können Sie Leistungsprofile von echten Nutzern, z. B. System-Traces und Java-Heap-Dumps, von Produktionsgeräten mit Android 15 (API-Level 35) und höher erfassen. Es werden zwei Erfassungsmechanismen unterstützt: App-gesteuerte Profile, bei denen Ihre App die Profilerfassung von Anfang bis Ende steuert (Android 15 und höher), und triggerbasierte Profile, bei denen das System die Erfassung als Reaktion auf Ereignisse übernimmt, für die Sie sich unter Android 16 (API-Level 36) und höher registriert haben.
In dieser Anleitung werden folgende Themen behandelt:
- Profile erfassen: Hier erfahren Sie, wie Sie appgesteuerte Profilaufzeichnungen starten und beenden und wie Sie sich für triggerbasierte Profilaufzeichnungen registrieren.
- Profile abrufen und hochladen: Profile lokal
mit
adbabrufen oder im Hintergrund mitWorkManagerhochladen. - Profile analysieren: Hier erfahren Sie, wie Sie Profile in der Perfetto-Benutzeroberfläche visualisieren, Profile mit PerfettoSQL abfragen, Traces im Bulk analysieren und Profile mit KI analysieren.
- Fallstudien zur Fehlerbehebung: Hier erfahren Sie, wie Sie
ProfilingManagerdurchgängig anwenden, um einen ANR-Fehler zu beheben und einen OOM-Absturz zu beheben. - Ratenbegrenzung und Erfassungsverhalten: Informationen zur Ratenbegrenzung und zum Erfassungsverhalten in der Produktion.
- Lokale Fehlerbehebung: Fehlerbehebungsbefehle für die lokale Profilerstellung verwenden.
Unterstützte Profiltypen
ProfilingManager unterstützt die Erfassung verschiedener Profiltypen, sodass Sie bestimmte Leistungsprobleme in Ihrer App gezielt angehen können. Sie können Anfragen direkt über Plattform-APIs oder über die AndroidX Core-Builder konfigurieren:
- System-Traces: Werden mit
PROFILING_TYPE_SYSTEM_TRACEoderSystemTraceRequestBuildererfasst.- Nützlich für die Diagnose von Rucklern, die Analyse der Latenz und das allgemeine Leistungs-Debugging.
- Java-Heap-Dumps: Erfasst mit
PROFILING_TYPE_JAVA_HEAP_DUMPoderJavaHeapDumpRequestBuilder.- Erstellt einen Snapshot des Java-Heap-Objektgraphen und der Größen Ihrer App, um Speicherlecks zu erkennen und den Arbeitsspeicher zu optimieren.
- Heap-Profile: Werden mit
PROFILING_TYPE_HEAP_PROFILEoderHeapProfileRequestBuildererfasst.- Verfolgt die native (oder optional Java-)Arbeitsspeicherzuweisung im Zeitverlauf, um die Arbeitsspeichernutzung zu optimieren.
- Stack-Stichprobenerhebung: Erfasst mit
PROFILING_TYPE_STACK_SAMPLINGoderStackSamplingRequestBuilder.- Erstellt Stichproben von Thread-Aufrufstacks, um die Codeausführung zu verstehen und die CPU-Auslastung zu analysieren.
ProfilingManager in einen KI-Agenten einbinden
Sie können einen KI-Agenten zum Programmieren verwenden, um ProfilingManager in Ihre App einzubinden. Führen Sie beispielsweise den folgenden Prompt in Ihrem KI-Agenten zum Programmieren aus, um die Erfassung von „App antwortet nicht“-Triggern (ANR) einzurichten. Ersetzen Sie dabei </path/to/codebase> durch den Pfad zu Ihrer 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.
Sie können diesen Prompt anpassen, um andere Systemtrigger (z. B. TRIGGER_TYPE_OOM) einzurichten, oder appgesteuerte Profilerfassungen mithilfe des Leitfadens zur appgesteuerten Profilerstellung konfigurieren. Nach der Integration können Sie Ihre Einrichtung lokal mit den Debugging-Befehlen für die lokale Profilerstellung testen und die erfassten Profile mit einem KI-Agenten analysieren.