Leitfaden für die Leistungssteigerung
Willkommen zum vierten Tag der Performance Spotlight Week. Sie haben jetzt einige der tollen Tools und Best Practices kennengelernt, die wir in letzter Zeit eingeführt haben, z. B. den R8-Optimierer und die profilgesteuerte Optimierung mit Baseline Profiles und Startup Profiles. Vielleicht fragen Sie sich, wo Sie mit der Leistungsoptimierung beginnen sollen.
Wir haben eine detaillierte Anleitung zur Leistungsoptimierung erstellt, die sich an Ihr mobiles Entwicklungsteam richtet – egal, ob Sie eine App mit einem einzelnen Entwickler haben, der mit der Leistungsoptimierung beginnen möchte, oder ob Sie ein ganzes Team haben, das sich der Verbesserung der Android-Leistung widmet.
Der Leitfaden zur Leistungsabstufung umfasst fünf Stufen. Wir beginnen mit Stufe 1, die minimalen Aufwand für die Einführung von Leistungstools erfordert, 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 pflegen.
Sie können direkt zu der Ebene springen, die für Sie am relevantesten ist:
- Stufe 1: Von der Play Console bereitgestellte Feldüberwachung verwenden
- Stufe 2: Aufgaben für den App-Leistungswert ausführen
- Stufe 3: Lokale Leistungstest-Frameworks nutzen
- Stufe 4: Tools zur Ablaufverfolgungsanalyse wie Perfetto verwenden
- Stufe 5: Eigenes Framework zur Leistungsmessung erstellen
Stufe 1: Von der Play Console bereitgestellte Feldüberwachung verwenden
Wir empfehlen, zuerst Android Vitals in der Play Console zu nutzen, um automatisch erfasste Daten zur Feldüberwachung anzusehen. So erhalten Sie mit minimalem Aufwand Statistiken zu Ihrer Anwendung.
Android Vitals ist eine Initiative von Google, mit der diese Felddaten automatisch für Sie erhoben und angezeigt werden.
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, einschließlich Ihrer, protokolliert.
- Zusammengefasste Daten:Google Play erhebt und anonymisiert diese Daten von den Nutzern Ihrer App.
- Insights präsentieren:Die Daten werden Ihnen in der Google Play Console im Android Vitals-Dashboard präsentiert.
Im Android Vitals-Dashboard werden viele Messwerte erfasst, einige davon sind jedoch als Core Vitals gekennzeichnet. Diese sind am wichtigsten, da sie sich auf die Sichtbarkeit und das Ranking Ihrer App im Google Play Store auswirken können.
Vitalparameter
TECHNISCHE QUALITÄTS-KERNMETRIKEN VON GOOGLE PLAY Damit Ihre App bei Google Play möglichst gut sichtbar ist, sollten Sie die Grenzwerte zu unerwünschtem Verhalten für diese Messwerte nicht überschreiten. | |
| 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 | Der Prozentsatz der Zifferblattsitzungen, bei denen die Akkunutzung über 4,44% pro Stunde liegt. |
| Neu: Übermäßige Teil-Wakelocks | Der Prozentsatz der Nutzersitzungen, in denen die kumulative, nicht ausgenommene Wakelock-Nutzung 2 Stunden überschreitet. |
Zu den wichtigsten Vitalparametern gehören die vom Nutzer wahrgenommene Absturzrate, die ANR-Rate, übermäßiger Akkuverbrauch und der neu eingeführte Messwert zu übermäßigen partiellen Wakelocks.
Rate der vom Nutzer wahrgenommenen ANR-Fehler
Im Android Vitals-ANR-Dashboard können Sie Stacktraces von Problemen sehen, die im Feld auftreten, und erhalten Informationen und Empfehlungen zur Fehlerbehebung.
Sie können einen bestimmten ANR-Fehler aufschlüsseln, um den Stacktrace sowie Informationen zur möglichen Ursache des Problems zu sehen.
Hier finden Sie eine Anleitung zur Diagnose und Behebung häufiger ANR-Szenarien.
Rate der vom Nutzer wahrgenommenen Abstürze
Mit dem Dashboard für Abstürze in Android Vitals können Sie Abstürze weiter debuggen und eine Stichprobe von Stacktraces ansehen, die in Ihrer App auftreten.
In unserer Dokumentation finden Sie auch Informationen zur Fehlerbehebung bei bestimmten Abstürzen. In der Anleitung 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-Geräten verringern 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 Apps, die den Grenzwert für übermäßige Teil-Wakelocks überschreiten, ab dem 1. März 2026 möglicherweise zusätzlich eingeschränkt werden.
Bei Mobilgeräten gilt die Android Vitals-Messwert für nicht ausgenommene Wakelocks, die abgerufen werden, während der Bildschirm ausgeschaltet ist und die App im Hintergrund ausgeführt wird oder einen Vordergrunddienst ausführt. In Android Vitals gilt die Verwendung von Teil-Wakelocks als übermäßig, wenn Wakelocks innerhalb eines Zeitraums von 24 Stunden mindestens zwei Stunden lang gehalten werden und dies im Durchschnitt über 28 Tage mehr als 5% der Sitzungen Ihrer App betrifft.
Informationen zum Debuggen und Beheben von Problemen mit übermäßigem Wakelock findest du in unserem technischen Blogpost.
Stufe 2: Aufgaben für den App-Leistungswert ausführen
Als Nächstes können Sie den App Performance Score verwenden, um die wichtigsten Maßnahmen zur Steigerung der App-Leistung zu ermitteln.
Der Android App Performance Score ist ein standardisiertes Framework zur Messung der technischen Leistung Ihrer App. Sie erhalten einen Wert zwischen 0 und 100. Je niedriger der Wert, desto mehr Optimierungspotenzial besteht.
Um schnell Erfolge zu erzielen, sollten Sie zuerst den statischen Leistungsindex optimieren. Dabei handelt es sich oft um Konfigurationsänderungen oder Tool-Updates, die die Leistung erheblich steigern.
Schritt 1: Statische Bewertung durchführen
Bei der statischen Bewertung werden die Konfiguration und die Verwendung von Tools in Ihrem Projekt geprüft. Das sind oft die schnellsten Möglichkeiten, die Leistung zu verbessern.
Rufen Sie auf der Seite „Rangliste“ den Abschnitt „Statische Punktzahl“ auf und gehen Sie so vor:
- Android-Gradle-Plug-in-Version (AGP) prüfen
- Führen Sie die R8-Minifizierung schrittweise ein oder verwenden Sie idealerweise R8 im Vollmodus, um den App-Code zu minimieren und zu optimieren.
- Verwenden Sie Baseline-Profile, um die Ausführungsgeschwindigkeit von Code ab dem ersten Start zu verbessern. So wird die Leistung für jede neue App-Installation und jedes App-Update verbessert.
- Verwenden Sie Startprofile, 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 Ihres APKs verbessert wird.
- Auf die neueste Version von Jetpack Compose aktualisieren
Schritt 2: Dynamische Bewertung durchführen
Nachdem Sie die statischen Easy Wins angewendet haben, können Sie die Verbesserungen mit der dynamischen Analyse auf einem echten Gerät überprüfen. Sie können dies zuerst manuell mit einem physischen Gerät und einer Stoppuhr tun.
Rufen Sie auf der Seite „Ergebnisse“ den Abschnitt „Dynamische Punktzahl“ auf und gehen Sie so vor:
- Richten Sie Ihre Testumgebung mit einem physischen Gerät ein. Verwenden Sie ein Low-End-Gerät, um Leistungsprobleme zu verstärken und so leichter zu erkennen.
- Startzeit über den Launcher messen Kaltstarten Sie Ihre App über das Launcher-Symbol und messen Sie die Zeit, bis sie interaktiv ist.
- Messen Sie die Startzeit der App über eine Benachrichtigung. Ziel ist es, die Startzeit der Benachrichtigung auf unter einige Sekunden zu reduzieren.
- Messen Sie die Rendering-Leistung, indem Sie durch Ihre wichtigsten Bildschirme und Animationen scrollen.
Nachdem Sie diese Schritte ausgeführt haben, erhalten Sie für die statischen und dynamischen Werte eine Punktzahl zwischen 1 und 100. So können Sie die Leistung Ihrer App besser nachvollziehen und wissen, worauf Sie sich konzentrieren sollten.
Stufe 3: Lokale Leistungstest-Frameworks nutzen
Wenn Sie die dynamische Leistung bewerten, kann es zu mühsam sein, die Leistung manuell zu messen. Erwägen Sie, Ihre Leistungstests mit Leistungstest-Frameworks wie Macrobenchmarks und UiAutomator zu automatisieren.
Macrobenchmark 💚 UiAutomator
Stellen Sie sich Macrobenchmark und UiAutomator als zwei Tools vor, 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. Er ist dafür verantwortlich, Ihre App zu starten, Messwerte wie die Startzeit oder verworfene Frames aufzuzeichnen und die App zu beenden. UiAutomator ist der Roboter-Nutzer. Mit der Bibliothek können Sie Code schreiben, um mit dem Display des Geräts zu interagieren. Es 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 die
@MacrobenchmarkRule. -
Messung starten:Rufen Sie
benchmarkRule.measureRepeatedauf. - Benutzeroberfläche 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 eine Compose-Liste auf Ruckeln beim Scrollen getestet wird.
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 ansehen: Jeder Testlauf liefert präzise gemessene Informationen, mit denen Sie die Leistung Ihrer App am besten nachvollziehen können.
timeToInitialDisplayMs min 1894.4, median 2847.4, max 3355.6 frameOverrunMs P50 -3.2, P90 6.2, P95 10.4, P99 119.5
Gängige Anwendungsfälle
Macrobenchmark bietet mehrere wichtige Messwerte. Mit StartupTimingMetric können Sie den App-Start genau messen. Mit dem FrameTimingMetric können Sie die Rendering-Leistung einer App während des Tests nachvollziehen.
Wir haben einen detaillierten und vollständigen Leitfaden zur Verwendung von Macrobenchmarks und UiAutomator sowie Codebeispiele, mit denen Sie weiterlernen können.
Stufe 4: Tools zur Trace-Analyse wie Perfetto verwenden
Trace-Analysetools wie Perfetto werden verwendet, wenn Sie mehr als nur Ihren eigenen Anwendungscode sehen möchten. 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 bietet 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 mithilfe von System-Traces, Android Studio Profiler und Perfetto.
Perfetto zur Fehlerbehebung bei der Leistung verwenden
Der allgemeine Workflow für die Fehlerbehebung bei der Leistung mithilfe von Tools zur Tracing-Analyse besteht darin, den Trace aufzuzeichnen, zu laden und zu analysieren.
Schritt 1: Trace aufzeichnen
Es gibt mehrere Möglichkeiten, einen System-Trace aufzuzeichnen:
- Aufzeichnen eines Traces manuell auf dem Gerät direkt über die Entwickleroptionen.
- CPU Profiler von Android Studio 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 Datei wird von der Benutzeroberfläche verarbeitet und die Zeitachse wird angezeigt.
Schritt 3: Trace analysieren
Sie können die Perfetto-Benutzeroberfläche oder den 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-Traceviewer.
Szenarien für die Untersuchung von System-Traces mit Perfetto
Perfetto ist ein Expertentool, das Informationen zu allen Vorgängen auf dem Android-Gerät während der Erfassung eines Traces liefern kann. Das ist besonders hilfreich, wenn Sie die Ursache einer Verlangsamung nicht anhand von Standardlogs oder einfachen Profilern ermitteln können.
Debugging bei Ruckeln (verlorene Frames)
Wenn Ihre App beim Scrollen ruckelt, kann Perfetto Ihnen genau zeigen, warum ein bestimmter Frame die Deadline verpasst hat.
Wenn das Problem an der App liegt, sehen Sie möglicherweise, dass der Hauptthread über einen längeren Zeitraum hinweg ausgeführt wird und dabei viele Daten analysiert. In solchen Fällen sollten Sie die Aufgabe in die asynchrone Verarbeitung verlagern.
Wenn das Problem am System liegt, ist der 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). Dies weist auf Szenarien hin, in denen Sie die Nutzung von Plattform-APIs optimieren müssen.
Langsamen App-Start analysieren
Der Start ist komplex und umfasst die Systeminitialisierung, das Forken von Prozessen und das Laden von Ressourcen. Perfetto visualisiert diese Zeitachse genau.
Sie können sehen, ob Sie auf Binder-Aufrufe (Interprozesskommunikation) warten. Wenn Ihr onCreate lange auf eine Antwort vom System PackageManager wartet, wird dieser blockierte Status in Perfetto deutlich angezeigt.
Sie können auch prüfen, ob Ihre App beim Start mehr Arbeit als nötig verrichtet. Wenn Sie beispielsweise mehr Ansichten erstellen und anordnen, als die App anzeigen muss, können Sie diese Vorgänge im Trace sehen.
Akkuentladung und CPU-Auslastung untersuchen
Da Perfetto das gesamte System im Blick hat, eignet es sich hervorragend, um unsichtbare Stromfresser zu finden.
In den Tracks zum Gerätestatus können Sie sehen, welche Prozesse Wakelocks halten und so verhindern, dass das Gerät in den Ruhezustand wechselt. Weitere Informationen finden Sie in unserem Blogpost zu Wake Locks. Mit Perfetto können Sie auch prüfen, ob Ihre Hintergrundjobs zu häufig ausgeführt werden oder die CPU unnötig aktivieren.
Stufe 5: Eigenes Framework zur Leistungsmessung erstellen
Die letzte Stufe ist für Apps, deren Teams über die Ressourcen verfügen, um ein Framework zur Leistungsanalyse zu pflegen.
Um ein benutzerdefiniertes Framework zur Leistungsanalyse auf Android zu erstellen, müssen Sie mehrere System-APIs verwenden, 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 darüber informiert, wie Ihre App gestartet wurde, detaillierte Informationen darüber, was sie während der Ausführung getan hat, und warum sie beendet wurde.
ApplicationStartInfo: Tracking, wie die App gestartet wurde
Ab Android 15 (API 35) bietet ApplicationStartInfo detaillierte Messwerte zum App-Start in der Praxis. Die Daten enthalten Informationen dazu, ob es sich um einen Kalt-, Warm- oder Heißstart handelte, sowie die Dauer der verschiedenen Startphasen.
So können Sie einen grundlegenden Startup-Messwert anhand von Produktionsdaten entwickeln, der sich lokal nur schwer reproduzieren lässt. Anhand dieser Messwerte 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 erst einige Zeit nach dem Start der Anwendung abfragen.
ProfilingManager: Erfassen, warum es langsam war
Mit ProfilingManager (API 35) kann Ihre App System-Traces auf Nutzergeräten programmatisch auslösen. So lassen sich vorübergehende Leistungsprobleme erkennen, die Sie lokal nicht reproduzieren können.
Ziel ist es, automatisch einen Trace aufzuzeichnen, wenn ein bestimmter, sehr kritischer Nutzerpfad 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äßigen Speicherverbrauch oder Akkuentladung erkennen.
In unserer Dokumentation finden Sie Informationen dazu, wie Sie ein Profil erfassen, Profilierungsdaten abrufen und analysieren und Debug-Befehle verwenden.
ApplicationExitInfo: Nachverfolgen, warum die App beendet wurde
ApplicationExitInfo (API 30) gibt an, warum der vorherige Prozess beendet wurde. Das ist entscheidend, um native Abstürze, ANRs 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 standardmäßigen Java-Absturzberichte auslösen (z. B. Low Memory Kills).
Sie sollten diese API beim nächsten Start der App auslösen.
Nächste Schritte
Die Verbesserung der Android-Leistung ist ein schrittweiser Prozess. Wir sind schon gespannt, wie ihr eure Leistung mit diesen Tools steigern werdet.
Morgen bei „Ask Android“ dabei sein
Sie haben Ihre App mit R8 verkleinert und die Laufzeit mit Profile Guided Optimization optimiert. und die App-Leistung messen.
Sei morgen bei der Live-Session „Ask Android“ dabei. Stelle jetzt deine Fragen unter dem Hashtag #AskAndroid und lass sie von den Experten beantworten.
Weiterlesen
-
Anleitungen
Durchsetzung der technischen Qualität des Akkus: So optimieren Sie häufige Wake Lock-Anwendungsfälle
Da ein übermäßiger Akkuverbrauch für Android-Nutzer ein wichtiges Thema ist, hat Google erhebliche Maßnahmen ergriffen, um Entwicklern dabei zu helfen, energieeffizientere Apps zu entwickeln.
Alice Yuan • Lesezeit: 8 Minuten
-
Anleitungen
Ganz gleich, ob Sie Gemini in Android Studio, die Gemini CLI, Antigravity oder Drittanbieter-Agents wie Claude Code oder Codex verwenden – wir möchten sicherstellen, dass überall eine hochwertige Android-Entwicklung möglich ist.
Adarsh Fernando, Esteban de la Canal • Lesezeit: 4 Minuten
-
Anleitungen
Wir möchten Ihnen Beispiele für KI-basierte Funktionen mit On-Device- und Cloud-Modellen geben und Sie dazu anregen, ansprechende Funktionen für Ihre Nutzer zu entwickeln.
Thomas Ezan, Ivy Knight • Lesezeit: 2 Minuten
Auf dem Laufenden bleiben
Lassen Sie sich Woche für Woche die neuesten Informationen zur Android-Entwicklung zusenden.