Jetpack Compose-Leistung unter Wear OS

Die Leistung unter Wear OS ist ein wichtiger Aspekt für Apps, da viele Wear OS-Geräte im Vergleich zu größeren Mobilgeräten nur über begrenzte CPU- und GPU-Ressourcen verfügen. Mit der Einführung von umfangreicheren Animationen und dynamischen Effekten in Material 3 Expressive sollten Sie die Leistung der wichtigsten Workflows Ihrer App prüfen und verbessern.

Verwenden Sie den Leitfaden Jetpack Compose Performance, um Ihre App für eine optimale Leistung mit Jetpack Compose zu konfigurieren und zu entwickeln. In diesem Dokument werden einige der in diesem Leitfaden beschriebenen Techniken vorgestellt.

Erstellen Sie Strategien zur Leistungsmessung und befolgen Sie sie, um zu prüfen, ob diese Techniken für Ihre App wie erwartet funktionieren.

Wichtige Techniken zur Leistungsverbesserung

Beginnen Sie mit den effektivsten Tools zur Leistungsoptimierung: Baseline-Profile (einschließlich Startprofile) und der R8-Codeoptimierer.

Aktualisieren Sie Ihre Compose-Abhängigkeit auf Version 1.8 oder höher. Mit dieser Version wurden mehrere wichtige neue Funktionen eingeführt und die allgemeine Stabilität der Bibliothek verbessert. Eine Anleitung zum Aktualisieren finden Sie unter Abhängigkeiten deklarieren. Weitere Informationen finden Sie in unserem Blogpost zum Release 1.8 und im I/O-Vortrag What's New in Compose.

Baseline-Profile

Wenn Sie die Leistung Ihrer App verbessern möchten, verwenden Sie Baseline-Profile. Fassen Sie die Klassen und Methoden zusammen, die die wichtigsten Workflows Ihrer App darstellen. Das System kann diese dann mithilfe eines Baseline-Profils vorkompilieren. Dadurch können die Startzeiten verkürzt, die Anzahl der fehlerhaften Frames reduziert und zusätzliche Leistungsverbesserungen erzielt werden.

Jede Jetpack Compose-Bibliothek wird mit eigenen Profilregeln geliefert. Wenn deine App von einer Bibliothek abhängig ist, werden die Profilregeln der Bibliothek automatisch zusammengeführt und mit dem APK deiner App zur Vorkompilierung verteilt.

Prüfen Sie Ihre Baseline-Profile mit den folgenden Methoden:

  • Verwenden Sie Makrobenchmark-Tests.
  • Verwenden Sie bestimmte ADB-Befehle, um den Status der Profilkonfiguration Ihrer App zu prüfen. Die Schritte für beide Techniken werden im Leitfaden zur Leistungsmessung und -validierung erläutert.

Start-up-Profile

Als Teilmenge von Baseline-Profilen optimieren Startprofile die darin enthaltenen Klassen und Methoden weiter, um die Startlatenz der App zu reduzieren.

Wenn Sie ein Startprofil hinzufügen, erhöht sich die APK-Größe Ihrer App. Bevor Sie also ein Startprofil zu Ihrem Produktionsrelease hinzufügen, sollten Sie die Vor- und Nachteile von APK-Größe und Startlatenz abwägen.

Lesen Sie zuerst den Artikel Startup-Profil erstellen.

R8

Verwenden Sie den R8-Compiler, um Apps zu verkleinern und zu optimieren. R8 entfernt nicht verwendeten Code und nicht verwendete Ressourcen, schreibt Code um, um die Laufzeitleistung zu optimieren, und vieles mehr.

Lesen Sie in den Leitfäden zur Leistungsverbesserung die Überlegungen zu R8, einschließlich der wichtigsten Schritte zum Entfernen nicht verwendeter Ressourcen.

Leistungsmessung und -validierung

Allgemeine Strategien zur Leistungsmessung unter Android finden Sie unter Übersicht über die Messung der App-Leistung. In diesem Abschnitt werden einige der in dieser Dokumentation beschriebenen Techniken erläutert.

Build-Variante für Messungen auswählen

Der Debug-Modus ist zwar nützlich, um viele Probleme zu erkennen, er verursacht jedoch erhebliche Leistungseinbußen, verwendet keine Baseline-Profile und kann es schwierig machen, Codeprobleme zu erkennen, die sich auf die Leistung auswirken könnten.

Führen Sie Ihre App im Releasemodus aus, um die Leistung Ihrer App genau zu analysieren.

Ziehe endgültige Schlussfolgerungen zur Leistung nur aus Tests, die mit Apps durchgeführt wurden, die mit Release-Build-Optionen und auf echten Geräten ausgeführt werden.

Verwenden Sie für Benchmarktests jedoch die Benchmark-Build-Variante, die sich in einigen wichtigen Punkten vom Release-Debugging unterscheidet. Weitere Informationen finden Sie im Einrichtungsleitfaden für Macrobenchmark.

Basisprofile Ihrer App validieren

Prüfen Sie zuerst den Status Ihres Profils:

adb shell dumpsys package dexopt | grep -A 1 $PACKAGE_NAME

Wenn der Status nicht status=speed-profile lautet, wurden noch keine Profilregeln zur Optimierung der App angewendet.

Regeln werden über einen Hintergrundjob angewendet, der ausgeführt wird, wenn das Gerät geladen wird und inaktiv ist. Wenn Sie dies manuell auslösen möchten, führen Sie den folgenden Befehl aus, nachdem die App gestartet wurde und genügend Zeit vergangen ist, damit der Profil-Installer das Profil im Hintergrund bootstrappen kann. Dieser Vorgang dauert in der Regel etwa 40 Sekunden.

adb shell cmd package bg-dexopt-job

Führen Sie dann den vorherigen Befehl noch einmal aus, um zu prüfen, ob der Status speed-profile lautet.

Informationen zu Situationen, in denen die Optimierung bei der Installation erfolgt, finden Sie unter Baseline Profile per Sideload installieren.

UI Automator API

Die UI Automator API automatisiert Interaktionen programmatisch. Mit dieser API können Sie einzelne Teile der Benutzeroberfläche vergleichen, wenn Sie User Journeys auf potenzielle Optimierungen prüfen.

Macrobenchmark-Tests

Mit Makro-Benchmarks werden größere Anwendungsfälle Ihrer App getestet, insbesondere der App-Start und komplexe UI-Manipulationen. Weitere Informationen finden Sie im Implementierungsleitfaden.

Ein Beispiel für die Verwendung von Makro-Benchmarks zur Validierung der Leistung von Baseline-Profilen finden Sie in den Leistungsbeispielen auf GitHub.

JankStats-Bibliothek

Mit der JankStats-Bibliothek können Sie Leistungsprobleme in Anwendungen verfolgen und analysieren.

Ein Beispiel finden Sie im JankStats-Beispiel auf GitHub.

System Tracing

Mit den neuen Animationstypen, die in Material 3 Expressive eingeführt wurden, können Sie die Funktion System Trace in Android Studio verwenden, um die Latenz in potenziell problematischen User Journeys zu prüfen und zu diagnostizieren. Anhand dieser Informationen können Sie den Inhalt Ihrer Baseline-Profile überprüfen und potenzielle Ineffizienzen in Ihrer Codelogik identifizieren.

Weitere Tools

Zusätzlich zu den Tools zur Leistungsverbesserung können Sie andere Tools verwenden, um Ihre Produktivität und Ihren Workflow zu verbessern.

Produktivitätstools für Android Studio

Android Studio bietet mehrere Tools, mit denen Sie die Zeit reduzieren können, die Sie für die Identifizierung von Leistungsverbesserungen aufwenden.

Mit Tools wie Live Edit und Composable Previews können Sie beispielsweise ruckelnde UI-Elemente und die zugehörigen Bereiche im Code Ihrer App identifizieren, um die Leistung zu verbessern.

Führe alle abschließenden Leistungstests auf einer Reihe von physischen Wear OS-Geräten durch, die deine Zielgruppe genau repräsentieren.

Das ist besonders wichtig, wenn Sie zu Material 3 Expressive migrieren, da dadurch Funktionen wie flexible Schriftarten und Formtransformationen in Ihre App eingeführt werden.

Wenn Sie von Ansichten migrieren, lesen Sie unsere Migrationsanleitung und unsere Best Practices für die Jetpack Compose-Leistung, um zu prüfen, ob die Benutzeroberflächen Ihrer App bei der Verwendung von Jetpack Compose leistungsfähig sind.

Andere Ressourcen

Aktuelle Informationen zur Android-Leistung findest du im Leitfaden zur App-Leistung unter Aktuelle Neuigkeiten und Videos.