Leitfaden zur Leistungssteigerung
Willkommen zum vierten Tag der Performance Spotlight Week. Nachdem Sie nun einige der großartigen Tools und Best Practices kennengelernt haben, die wir vor Kurzem eingeführt haben, wie den R8-Optimizer und die profilgesteuerte Optimierung mit Baseline-Profilen und Startprofilen, fragen Sie sich vielleicht, wo Sie mit der Leistungssteigerung beginnen sollen.
Wir haben einen Schritt-für-Schritt-Leitfaden zur Leistungssteigerung entwickelt, der auf das Niveau Ihres mobilen Entwicklungsteams zugeschnitten ist. Egal, ob Sie ein einzelner Entwickler mit einer App sind, der mit der Leistungssteigerung beginnen möchte, oder ein ganzes Team haben, das sich der Verbesserung der Android-Leistung widmet.
Der Leitfaden zur Leistungssteigerung umfasst fünf Stufen. Wir beginnen mit Stufe 1, in der Tools zur Leistungssteigerung mit minimalem Einführungsaufwand vorgestellt werden, und gehen bis zu Stufe 5, die sich ideal für Apps eignet, die über die Ressourcen verfügen, um ein maßgeschneidertes Leistungsframework zu verwalten.
Springen Sie einfach zu der Stufe, die am besten zu Ihnen passt:
- Stufe 1: Feldüberwachung in der Play Console verwenden
- Stufe 2: Maßnahmen für den App-Leistungswert umsetzen
- Stufe 3: Lokale Frameworks für Leistungstests nutzen
- Stufe 4: Tools zur Trace-Analyse wie Perfetto verwenden
- Stufe 5: Eigenes Framework zur Leistungsüberwachung erstellen
Stufe 1: Feldüberwachung in der Play Console verwenden
Wir empfehlen, zuerst Android Vitals in der Play Console zu nutzen, um automatisch erhobene Feldüberwachungsdaten anzusehen. So erhalten Sie mit minimalem Aufwand Einblicke in Ihre Anwendung.
Android Vitals ist eine Initiative von Google, um diese Felddaten automatisch zu erheben und Ihnen zur Verfügung zu stellen.
So stellen wir diese Daten bereit:
- Daten erheben : Wenn ein Nutzer zustimmt, werden auf seinem Android-Gerät automatisch wichtige Leistungs- und Stabilitätsereignisse aus allen Apps protokolliert, einschließlich Ihrer.
- Daten aggregieren:Google Play erhebt und anonymisiert diese Daten von den Nutzern Ihrer App.
- Einblicke liefern: Die Daten werden Ihnen im Android Vitals-Dashboard in der Google Play Console präsentiert.
Im Android Vitals-Dashboard werden viele Messwerte erfasst, einige davon sind als Vitalparameter gekennzeichnet. Diese sind am wichtigsten, da sie sich auf die Sichtbarkeit und das Ranking Ihrer App im Google Play Store auswirken können.
Vitalparameter
WICHTIGSTE MESSWERTE FÜR DIE TECHNISCHE QUALITÄT VON GOOGLE PLAY Wenn Sie die Sichtbarkeit Ihrer App bei Google Play maximieren möchten, sollten Sie darauf achten, dass die Grenzwerte für unerwünschtes Verhalten für diese Messwerte nicht überschritten werden. | |
| Rate der vom Nutzer wahrgenommenen Abstürze | Prozentsatz der aktiven Nutzer pro Tag, bei denen mindestens ein Absturz aufgetreten ist, der wahrscheinlich bemerkt wurde |
| Rate der vom Nutzer wahrgenommenen ANR‑Fehler | Prozentsatz der aktiven Nutzer pro Tag, bei denen mindestens ein ANR-Fehler aufgetreten ist, der wahrscheinlich bemerkt wurde |
| Übermäßige Akkunutzung | Prozentsatz der Zifferblattsitzungen, bei denen die Akkunutzung über 4,44% pro Stunde liegt |
| Neu: Übermäßige Teil-Wakelocks | Prozentsatz der Nutzersitzungen, bei denen die kumulative, nicht ausgenommene Wakelock-Nutzung 2 Stunden übersteigt |
Zu den Vitalparametern gehören die Rate der vom Nutzer wahrgenommenen Abstürze, die Rate der vom Nutzer wahrgenommenen ANR‑Fehler, die übermäßige Akkunutzung und der neu eingeführte Messwert für übermäßige Teil-Wakelocks.
Rate der vom Nutzer wahrgenommenen ANR‑Fehler
Im Android Vitals-Dashboard für ANR-Fehler können Sie Stack-Traces von Problemen sehen, die im Feld auftreten, und Einblicke und Empfehlungen zur Behebung des Problems erhalten.
Sie können sich einen bestimmten ANR-Fehler genauer ansehen, um den Stack-Trace und Einblicke in die mögliche Ursache des Problems zu erhalten.
Außerdem finden Sie in unserem Leitfaden zu ANR-Fehlern Informationen zur Diagnose und Behebung häufiger Szenarien, in denen ANR-Fehler auftreten können.
Rate der vom Nutzer wahrgenommenen Abstürze
Im Android Vitals-Dashboard für Abstürze können Sie weitere Fehlerbehebungen für Abstürze vornehmen und eine Stichprobe von Stack-Traces ansehen, die in Ihrer App auftreten.
In unserer Dokumentation finden Sie auch Anleitungen zur Fehlerbehebung bei bestimmten Abstürzen. Im Leitfaden zur Fehlerbehebung bei Vordergrunddiensten werden beispielsweise Möglichkeiten zur Identifizierung und Behebung häufiger Szenarien beschrieben, in denen Abstürze auftreten.
Übermäßige Akkunutzung
Wenn Sie die Anzahl der Zifferblattsitzungen mit übermäßiger Akkunutzung auf Wear OS reduzieren möchten, lesen Sie den Wear-Leitfaden zur Verbesserung und Schonung des Akkus.
[Neu] Übermäßige Teil-Wakelocks
Wir haben vor Kurzem angekündigt, dass für Apps, die den Grenzwert für übermäßige Teil-Wakelocks überschreiten, ab dem 1. März 2026 zusätzliche Maßnahmen ergriffen werden können.
Bei Mobilgeräten gilt der Android Vitals-Messwert für nicht ausgenommene Wakelocks, die erworben werden, während der Bildschirm ausgeschaltet ist und die App im Hintergrund ausgeführt wird oder ein Vordergrunddienst ausgeführt wird. Android Vitals betrachtet die Nutzung von Teil-Wakelocks als übermäßig, wenn Wakelocks innerhalb von 24 Stunden mindestens zwei Stunden lang gehalten werden und dies sich auf mehr als 5% der Sitzungen Ihrer App auswirkt (Durchschnitt über 28 Tage).
Informationen zur Fehlerbehebung bei Problemen mit übermäßigen Wakelocks finden Sie in unserem technischen Blogpost.
Lesen Sie unsere Android Vitals-Dokumentation und erfahren Sie, wie Sie Android Vitals noch besser nutzen können.
Stufe 2: Maßnahmen für den App-Leistungswert umsetzen
Als Nächstes können Sie den App-Leistungswert verwenden, um die Maßnahmen mit dem größten Potenzial zur Verbesserung der App-Leistung zu finden.
Der Android-App-Leistungswert ist ein standardisiertes Framework zur Messung der technischen Leistung Ihrer App. Sie erhalten einen Wert zwischen 0 und 100, wobei eine niedrigere Zahl auf mehr Verbesserungspotenzial hinweist.
Um schnell Erfolge zu erzielen, sollten Sie zuerst mit dem statischen Leistungswert beginnen. Dabei handelt es sich oft um Konfigurationsänderungen oder Tool-Updates, die zu erheblichen Leistungssteigerungen führen.
Schritt 1: Statische Bewertung durchführen
Bei der statischen Bewertung werden die Konfiguration Ihres Projekts und die Einführung von Tools bewertet. Dies sind oft die schnellsten Möglichkeiten, die Leistung zu verbessern.
Rufen Sie auf der Seite mit der Rangliste den Abschnitt „Statischer Wert“ auf und gehen Sie so vor:
- Android Gradle-Plug-in (AGP)-Version bewerten
- R8-Minifizierung schrittweise einführen oder idealerweise R8 im Vollmodus verwenden, um den App-Code zu minimieren und zu optimieren
- Baseline-Profile einführen, die die Codeausführungsgeschwindigkeit ab dem ersten Start verbessern und so die Leistung bei jeder neuen App-Installation und jedem App-Update steigern
- Startprofile einführen, um das DEX-Layout zu verbessern Startprofile werden vom Build-System verwendet, um die darin enthaltenen Klassen und Methoden weiter zu optimieren, indem das Layout des Codes in den DEX-Dateien Ihrer APK verbessert wird.
- Auf die neueste Version von Jetpack Compose upgraden
Schritt 2: Dynamische Bewertung durchführen
Nachdem Sie die einfachen statischen Verbesserungen vorgenommen haben, können Sie die dynamische Bewertung verwenden, um die Verbesserungen auf einem echten Gerät zu validieren. Sie können dies zuerst manuell mit einem physischen Gerät und einer Stoppuhr tun.
Rufen Sie auf der Seite mit der Rangliste den Abschnitt „Dynamischer Wert“ auf und gehen Sie so vor:
- Testumgebung mit einem physischen Gerät einrichten Verwenden Sie ein Gerät der unteren Preisklasse, um Leistungsprobleme zu verstärken und sie so leichter zu erkennen.
- Startzeit über den Launcher messen Starten Sie Ihre App über das Launcher-Symbol und messen Sie die Zeit, bis sie interaktiv ist.
- App-Startzeit über eine Benachrichtigung messen, um die Startzeit von Benachrichtigungen auf unter einige Sekunden zu reduzieren
- Rendering-Leistung messen, indem Sie durch die wichtigsten Bildschirme und Animationen scrollen
Nachdem Sie diese Schritte ausgeführt haben, erhalten Sie einen Wert zwischen 1 und 100 für die statischen und dynamischen Werte. So können Sie die Leistung Ihrer App besser einschätzen und wissen, worauf Sie sich konzentrieren sollten.
Stufe 3: Lokale Frameworks für Leistungstests nutzen
Sobald Sie die dynamische Leistung bewerten, ist es möglicherweise zu mühsam, die Leistung manuell zu messen. Sie können Leistungstests mit Frameworks wie Macrobenchmark und UiAutomator automatisieren.
Macrobenchmark 💚 UiAutomator
Macrobenchmark und UiAutomator sind zwei Tools, die zusammenarbeiten: Macrobenchmark ist das Messinstrument. Es ist wie eine Stoppuhr und ein Zähler für die Framerate, der außerhalb Ihrer App ausgeführt wird. Es ist dafür verantwortlich, Ihre App zu starten, Messwerte (z. B. Startzeit oder verworfene Frames) zu erfassen und die App zu beenden. UiAutomator ist der Roboter-Nutzer. Mit der Bibliothek können Sie Code schreiben, um mit dem Bildschirm des Geräts zu interagieren. Sie kann ein Symbol finden, auf eine Schaltfläche tippen, in einer Liste scrollen und vieles mehr.
Test schreiben
Wenn Sie einen Test schreiben, umschließen Sie Ihren UiAutomator-Code mit einem Macrobenchmark-Block.
- Test definieren:Verwenden Sie
@MacrobenchmarkRule. - Messung starten:Rufen Sie
benchmarkRule.measureRepeatedauf. - UI steuern:Verwenden Sie in diesem Block UiAutomator-Code, um Ihre App zu starten, UI-Elemente zu finden und mit ihnen zu interagieren.
Hier ist ein Beispiel für ein Code-Snippet, mit dem Sie eine Compose-Liste auf Ruckeln beim Scrollen testen können.
benchmarkRule.measureRepeated(
// ...
metrics = listOf(
FrameTimingMetric(),
),
startupMode = StartupMode.COLD,
iterations = 10,
) {
// 1. Launch the app's main activity
startApp()
// 2. Find the list using its resource ID and scroll down
onElement { viewIdResourceName == "$packageName.my_list" }
.fling(Direction.DOWN)
}4. Ergebnisse überprüfen: Jeder Testlauf liefert Ihnen präzise gemessene Informationen, damit Sie die besten Daten zur Leistung Ihrer App erhalten.
timeToInitialDisplayMs min 1894.4, median 2847.4, max 3355.6 frameOverrunMs P50 -3.2, P90 6.2, P95 10.4, P99 119.5
Häufige Anwendungsfälle
Macrobenchmark bietet mehrere sofort einsatzbereite Vitalparameter. Mit StartupTimingMetric können Sie den App-Start genau messen. Mit FrameTimingMetric können Sie die Rendering-Leistung einer App während des Tests analysieren.
Wir haben einen detaillierten und vollständigen Leitfaden zur Verwendung von Macrobenchmark und UiAutomator sowie Codebeispiele für Sie zusammengestellt, damit Sie weiterlernen können.
Stufe 4: Tools zur Trace-Analyse wie Perfetto verwenden
Tools zur Trace-Analyse wie Perfetto werden verwendet, wenn Sie mehr als nur Ihren eigenen Anwendungscode sehen müssen. Im Gegensatz zu Standard-Debuggern oder -Profilern, die nur Ihren Prozess sehen, erfasst Perfetto den gesamten Gerätestatus – Kernel-Scheduling, CPU-Frequenz, andere Prozesse und Systemdienste – und liefert Ihnen so den vollständigen Kontext für Leistungsprobleme.
In unserer YouTube-Playlist zur Fehlerbehebung bei der Leistung finden Sie Videoanleitungen zur Fehlerbehebung bei der Leistung mit System-Traces, Android Studio Profiler und Perfetto.
Leistung mit Perfetto debuggen
Der allgemeine Workflow für die Fehlerbehebung bei der Leistung mit Tools zur Trace-Analyse besteht darin, den Trace aufzuzeichnen, zu laden und zu analysieren.
Schritt 1: Trace aufzeichnen
Sie können einen System-Trace mit verschiedenen Methoden aufzeichnen:
- Trace manuell auf dem Gerät direkt über die Entwickleroptionen aufzeichnen.
- Android Studio CPU Profiler verwenden
- Perfetto-UI verwenden
Schritt 2: Trace laden
Sobald Sie die Trace-Datei haben, müssen Sie sie in das Analysetool laden.
- Öffnen Sie Chrome und rufen Sie ui.perfetto.dev auf.
- Ziehen Sie die Datei
.perfetto-trace(oder.pftrace) per Drag-and-drop direkt in das Browserfenster. - Die UI verarbeitet die Datei und zeigt die Zeitachse an.
Schritt 3: Trace analysieren
Sie können die Perfetto-UI oder Android Studio Profiler verwenden, um Leistungsprobleme zu untersuchen. In dieser Folge der MAD Skills-Reihe zum Thema Leistung spricht unsere Performance-Ingenieurin Carmen Jackson über den Perfetto-Trace-Viewer.
Szenarien für die Überprüfung von System-Traces mit Perfetto
Perfetto ist ein Tool für Experten und kann Informationen zu allem liefern, was auf dem Android-Gerät passiert ist, während ein Trace erfasst wurde. Das ist besonders hilfreich, wenn Sie die Ursache einer Verlangsamung nicht mit Standardprotokollen oder einfachen Profilern ermitteln können.
Fehlerbehebung bei Ruckeln (verworfenen Frames)
Wenn Ihre App beim Scrollen ruckelt, kann Perfetto Ihnen genau zeigen, warum ein bestimmter Frame die Frist verpasst hat.
Wenn das Problem an der App liegt, sehen Sie möglicherweise, dass Ihr Hauptthread lange Zeit mit aufwendigem Parsing beschäftigt ist. In diesen Szenarien sollten Sie die Arbeit in die asynchrone Verarbeitung verlagern.
Wenn das Problem am System liegt, ist Ihr Hauptthread möglicherweise bereit zur Ausführung, aber der CPU-Kernel-Scheduler hat einem anderen Systemdienst Priorität eingeräumt, sodass Ihre App warten muss (CPU-Konflikt). In diesen Szenarien müssen Sie möglicherweise die Nutzung von Plattform-APIs optimieren.
Langsamer App-Start analysieren
Der Start ist komplex und umfasst die Systeminitialisierung, das Forking von Prozessen und das Laden von Ressourcen. Perfetto visualisiert diese Zeitachse genau.
Sie können sehen, ob Sie auf Binder-Aufrufe (Interprozesskommunikation) warten. Wenn onCreate lange auf eine Antwort vom System PackageManager wartet, zeigt Perfetto diesen blockierten Zustand deutlich an.
Sie können auch sehen, ob Ihre App während des App-Starts mehr Arbeit als nötig verrichtet. Wenn Sie beispielsweise mehr Ansichten erstellen und layouten, als die App anzeigen muss, können Sie diese Vorgänge im Trace sehen.
Akkuleistung und CPU-Nutzung untersuchen
Da Perfetto das gesamte System sieht, ist es ideal, um unsichtbare Akkuverbraucher zu finden.
Unter den Tracks „Gerätestatus“ können Sie sehen, welche Prozesse Wakelocks halten und so verhindern, dass das Gerät in den Ruhemodus wechselt. Weitere Informationen finden Sie in unserem Blogpost zu Wakelocks. Mit Perfetto können Sie auch sehen, ob Ihre Hintergrundjobs zu häufig ausgeführt werden oder die CPU unnötig aktivieren.
Stufe 5: Eigenes Framework zur Leistungsüberwachung erstellen
Die letzte Stufe ist für Apps mit Teams, die über die Ressourcen verfügen, um ein Framework zur Leistungsüberwachung zu verwalten.
Um ein benutzerdefiniertes Framework zur Leistungsüberwachung unter Android zu erstellen, müssen Sie mehrere System-APIs nutzen, um Daten während des gesamten Anwendungslebenszyklus zu erfassen, vom Start bis zum Beenden und in bestimmten Szenarien mit hoher Last.
Mit ApplicationStartInfo, ProfilingManager und ApplicationExitInfo können Sie ein robustes Telemetriesystem erstellen, das Informationen zum Start Ihrer App, detaillierte Informationen zu den Vorgängen während der Ausführung und die Gründe für das Beenden liefert.
ApplicationStartInfo: Start der App verfolgen
ApplicationStartInfo ist ab Android 15 (API 35) verfügbar und bietet detaillierte Messwerte zum App-Start im Feld. Die Daten umfassen Informationen dazu, ob es sich um einen Kalt-, Warm- oder Heißstart gehandelt hat, und die Dauer der verschiedenen Startphasen.
So können Sie einen Baseline-Messwert für den Start anhand von Produktionsdaten entwickeln, um die Leistung weiter zu optimieren. Das ist lokal möglicherweise schwer zu reproduzieren. Mit diesen Messwerten können Sie A/B-Tests durchführen, um den Startablauf zu optimieren.
Ziel ist es, Startmesswerte genau zu erfassen, ohne jede Initialisierungsphase manuell zu instrumentieren.
Sie können diese Daten einige Zeit nach dem Start der Anwendung verzögert abfragen.
ProfilingManager: Ursachen für langsame Leistung erfassen
ProfilingManager (API 35) ermöglicht Ihrer App, System-Traces auf Nutzergeräten programmatisch auszulösen. Das ist hilfreich, um vorübergehende Leistungsprobleme zu erkennen, die Sie lokal nicht reproduzieren können.
Ziel ist es, automatisch einen Trace aufzuzeichnen, wenn erkannt wird, dass ein bestimmter kritischer Nutzerablauf langsam ausgeführt wird oder Leistungsprobleme auftreten.
Sie können einen Listener registrieren, der ausgelöst wird, wenn bestimmte Bedingungen erfüllt sind, oder ihn manuell auslösen, wenn Sie ein Leistungsproblem wie Ruckeln, übermäßige Arbeitsspeichernutzung oder Akkuverbrauch feststellen.
In unserer Dokumentation erfahren Sie, wie Sie ein Profil erfassen, Profiling-Daten abrufen und analysieren und Debugging-Befehle verwenden.
ApplicationExitInfo: Gründe für das Beenden der App verfolgen
ApplicationExitInfo (API 30) informiert Sie darüber, warum der vorherige Prozess beendet wurde. Das ist entscheidend, um native Abstürze, ANR-Fehler oder Systembeendigungen aufgrund übermäßiger Arbeitsspeichernutzung (OOM) zu finden. Mit der API getTraceInputStream können Sie auch einen detaillierten Tombstone-Trace abrufen.
Ziel der API ist es, Stabilitätsprobleme zu erkennen, die keine Standard-Java-Absturzberichte auslösen (z. B. Beendigungen aufgrund von wenig Arbeitsspeicher).
Sie sollten diese API beim nächsten App-Start auslösen.
Nächste Schritte
Die Verbesserung der Android-Leistung ist ein schrittweiser Prozess. Wir sind gespannt, wie Sie mit diesen Tools die Leistung Ihrer App steigern.
Morgen: Ask Android
Sie haben Ihre App mit R8 verkleinert und die Laufzeit mit der profilgesteuerten Optimierung optimiert. Außerdem haben Sie die Leistung Ihrer App gemessen.
Seien Sie morgen bei der Live-Sitzung von Ask Android dabei. Stellen Sie Ihre Fragen jetzt mit #AskAndroid und lassen Sie sie von den Experten beantworten.
Weiterlesen
-
Anleitungen
Da ein übermäßiger Akkuverbrauch für Android-Nutzer ein wichtiges Thema ist, hat Google erhebliche Schritte unternommen, um Entwicklern dabei zu helfen, energieeffizientere Apps zu entwickeln.
Alice Yuan • Lesezeit: 8 Minuten
-
Anleitungen
Wir möchten Ihnen Beispiele für KI-basierte Funktionen mit On-Device- und Cloud-Modellen zeigen und Sie dazu inspirieren, Ihren Nutzern ein ansprechendes Nutzererlebnis zu bieten.
Thomas Ezan, Ivy Knight • Lesezeit: 2 Minuten
-
Anleitungen
Wir behandeln die profilgesteuerte Optimierung, Leistungsverbesserungen in Jetpack Compose und Überlegungen zur Arbeit im Hintergrund.
Ben Weiss, Breana Tate, Jossi Wolf • Lesezeit: 8 Minuten
Auf dem Laufenden bleiben
Lassen Sie sich Woche für Woche die neuesten Informationen zur Android-Entwicklung zusenden.