Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Automatisches Erstellen von Profilen für jeden App-Release mithilfe des Jetpacks
MacroBenchmark-Bibliothek und
BaselineProfileRule Wir empfehlen Ihnen,
com.android.tools.build:gradle:8.0.0 oder höher verwenden (in Build enthalten)
bei der Verwendung von Baseline-Profilen verbessert.
So erstellen Sie ein neues Baseline-Profil:
Richten Sie das Baseline-Profilmodul ein.
Definieren Sie den JUnit-Test, der beim Generieren von Referenzprofilen hilft.
Fügen Sie die Critical User Journeys (CUJs) hinzu, die Sie optimieren möchten.
Generieren Sie das Basisprofil.
Nachdem Sie das Baseline-Profil generiert haben, führen Sie mit einem physischen Gerät
die verbesserten Geschwindigkeiten messen.
Neues Baseline-Profil mit AGP 8.2 oder höher erstellen
Die einfachste Methode zum Erstellen eines neuen Baseline-Profils ist die Verwendung des Baseline-Profils
Modulvorlage, verfügbar ab Android Studio Iguana und Android Gradle
Plugin (AGP) 8.2.
Mit der Vorlage für das Android Studio Baseline Profile Generator-Modul wird die
um ein neues Modul zu erstellen,
Benchmark
Referenzprofile. Wenn Sie die Vorlage ausführen, werden die meisten typischen Builds
Konfiguration, Generierung von Baseline-Profilen und Bestätigungscode. Vorlage
Erstellt Code zum Generieren und Benchmarken von Baseline-Profilen, um die App zu messen
Start-up.
Baseline-Profilmodul einrichten
So führen Sie die Modulvorlage für das Baseline-Profil aus:
Wählen Sie Datei > Neu > Neues Modul
Wählen Sie die Vorlage Baseline Profile Generator (Baseline-Profil-Generator) im
Vorlagen und konfigurieren Sie ihn:
<ph type="x-smartling-placeholder"></ph>
Abbildung 1. Vorlage für das Modul „Baseline Profile Generator“
Die Vorlage enthält die folgenden Felder:
Zielanwendung: definiert, für welche App das Referenzprofil generiert wird. Wenn Ihr Projekt nur ein einziges App-Modul enthält, gibt es in dieser Liste nur ein Element.
Module name: Der gewünschte Name für das Baseline-Profilmodul
erstellt wird.
Package name (Paketname): der Paketname, der für das Baseline-Profil verwendet werden soll
-Modul.
Sprache: Legen Sie fest, ob der generierte Code Kotlin- oder
Java
Build-Konfigurationssprache: Gibt an, ob Sie Kotlin verwenden möchten
Script (KTS) oder Groovy für Ihre Build-Konfigurationsskripts
Klicken Sie auf Finish (Fertigstellen). Das neue Modul wird erstellt. Bei Verwendung der Quelle
steuern, werden Sie möglicherweise aufgefordert, die neu erstellten Moduldateien
Steuerung.
Baseline-Profilgenerator definieren
Das neu erstellte Modul enthält Tests zum Generieren und Benchmarking der
Baseline-Profil und Test nur für den grundlegenden App-Start Wir empfehlen Ihnen,
einschließlich CUJs und
erweiterter Start-up-Workflows. Stellen Sie sicher, dass alle Tests
die mit dem App-Start zusammenhängen, befinden sich in einem rule-Block, wobei includeInStartupProfile festgelegt ist.
an true; Umgekehrt sollten Sie für eine optimale Leistung sicherstellen, dass Tests,
die mit dem App-Start zusammenhängen, nicht im Startprofil enthalten. App-Start
Optimierungen werden verwendet, um einen speziellen Teil eines Basisprofils zu definieren,
Startprofil.
Es vereinfacht die Verwaltbarkeit, wenn Sie diese CUJs außerhalb der generierten
Baseline-Profil und Benchmark-Code, damit sie für beides verwendet werden können. Dieses
bedeutet, dass Änderungen an Ihren CUJs konsistent verwendet werden.
Baseline-Profil generieren und installieren
Die Modulvorlage „Baseline-Profil“ fügt eine neue zu generierende Ausführungskonfiguration hinzu
das Baseline-Profil. Wenn Sie Produkt-Flavor verwenden, erstellt Android Studio
Mehrere Ausführungskonfigurationen, sodass Sie separate Baseline-Profile generieren können
für jede Geschmacksrichtung.
<ph type="x-smartling-placeholder"></ph>
Abbildung 2: Durch das Ausführen dieser Konfiguration wird die Baseline generiert
Profil
Wenn die Konfiguration der Ausführung Baseline-Profil generieren abgeschlossen ist, wird
dem generierten Baseline-Profil
src/variant/generated/baselineProfiles/baseline-prof.txt
in dem Modul, für das ein Profil erstellt wird. Die Variantenoptionen sind entweder
Release-Build-Typ oder eine Build-Variante mit dem Release-Build-Typ
Das generierte Referenzprofil wird ursprünglich in build/outputs erstellt. Die
der vollständige Pfad wird durch die Variante oder
den Geschmack der App bestimmt, für die ein Profil erstellt wird,
egal, ob Sie ein von Gradle verwaltetes Gerät oder ein verbundenes Gerät für die Profilerstellung verwenden. Wenn
verwenden Sie die im Code verwendeten Namen und die Build-Konfigurationen, die vom
wird das Baseline-Profil im
build/outputs/managed_device_android_test_additional_output/nonminifiedrelease/pixel6Api31/BaselineProfileGenerator_generate-baseline-prof.txt-Datei. Vermutlich werden Sie
Sie müssen direkt mit dieser Version des generierten Baseline-Profils interagieren.
es sei denn, Sie kopieren sie manuell in die Zielmodule (nicht empfohlen).
Neues Baseline-Profil mit AGP 8.1 erstellen
Wenn Sie das Tag
Vorlage für das Basisprofilmodul, verwenden Sie die
MacroBenchmark-Modulvorlage und das Baseline-Profil-Gradle-Plug-in zum Erstellen
ein neues Baseline-Profil erstellen. Diese Tools empfehlen wir für den Einstieg mit Android
Studio Giraffe und AGP 8.1.
So erstellen Sie ein neues Baseline-Profil mithilfe von MacroBenchmark
Modulvorlage und Gradle-Plug-in für Baseline-Profile:
Der Generator kann Interaktionen mit Ihrer App über den Start der App hinaus enthalten.
So können Sie die Laufzeitleistung Ihrer App optimieren, z. B.
Scrolllisten, das Ausführen von Animationen und die Navigation innerhalb eines
ActivitySiehe
weitere Beispiele für Tests, bei denen @BaselineProfileRule verwendet wird, um
um kritische User Journeys zu verbessern.
Gradle-Plug-in für Baseline-Profil hinzufügen
(libs.plugins.androidx.baselineprofile) Das Plug-in macht es einfacher,
um Basisprofile zu generieren und in Zukunft zu verwalten.
Führen Sie den folgenden Befehl aus, um das Baseline-Profil zu generieren:
:app:generateBaselineProfile oder
:app:generateVariantBaselineProfile Gradle-Aufgaben in der
.
Generator als instrumentierten Test ausführen
auf einem gerooteten physischen Gerät, Emulator oder
Gradle-verwaltetes Gerät
Wenn Sie ein von Gradle verwaltetes Gerät verwenden, legen Sie aosp als systemImageSource fest, da Sie Root benötigen.
Zugriff für den Baseline-Profilgenerator.
<ph type="x-smartling-placeholder">
Am Ende der Generierungsaufgabe wird das Baseline-Profil kopiert in
app/src/variant/generated/baselineProfiles
So erstellen Sie ein Baseline-Profil mit dem Gradle-Plug-in für Baseline-Profile
direkt:
Erstellen Sie ein neues com.android.test-Modul. Beispiel:
:baseline-profile.
Datei build.gradle.kts konfigurieren für
:baseline-profile:
Wenden Sie das Plug-in androidx.baselineprofile an.
Achten Sie darauf, dass targetProjectPath auf das
Modul :app.
Optional: Fügen Sie einen
Gradle-managed device (GMD):
Im folgenden Beispiel ist das pixel6Api31. Wenn keine Angabe erfolgt,
das Plug-in ein verbundenes Gerät verwendet, entweder emuliert oder physisch.
Wenden Sie die gewünschte Konfiguration an, wie im Folgenden gezeigt.
Beispiel.
Kotlin
plugins{id("com.android.test")id("androidx.baselineprofile")}android{defaultConfig{...}// Point to the app module, the module that you're generating the Baseline Profile for.targetProjectPath=":app"// Configure a GMD (optional).testOptions.managedDevices.devices{pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice){device="Pixel 6"apiLevel=31systemImageSource="aosp"}}}dependencies{...}// Baseline Profile Gradle plugin configuration. Everything is optional. This// example uses the GMD added earlier and disables connected devices.baselineProfile{// Specifies the GMDs to run the tests on. The default is none.managedDevices+="pixel6Api31"// Enables using connected devices to generate profiles. The default is// `true`. When using connected devices, they must be rooted or API 33 and// higher.useConnectedDevices=false}
Cool
plugins{id'com.android.test'id'androidx.baselineprofile'}android{defaultConfig{...}// Point to the app module, the module that you're generating the Baseline Profile for.targetProjectPath':app'// Configure a GMD (optional).testOptions.managedDevices.devices{pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice){device'Pixel 6'apiLevel31systemImageSource'aosp'}}}dependencies{...}// Baseline Profile Gradle plugin configuration. Everything is optional. This// example uses the GMD added earlier and disables connected devices.baselineProfile{// Specifies the GMDs to run the tests on. The default is none.managedDevices['pixel6Api31']// Enables using connected devices to generate profiles. The default is// `true`. When using connected devices, they must be rooted or API 33 and// higher.useConnectedDevicesfalse}
Baseline-Profiltest in :baseline-profile erstellen
Testmodul. Das folgende Beispiel zeigt einen Test, bei dem die App gestartet und gewartet wird,
für die Inaktivität.
Aktualisieren Sie die Datei build.gradle.kts im Anwendungsmodul, z. B. :app.
Wenden Sie das Plug-in androidx.baselineprofile an.
Fügen Sie dem Modul :baseline-profile eine baselineProfile-Abhängigkeit hinzu.
Kotlin
plugins{id("com.android.application")id("androidx.baselineprofile")}android{// There are no changes to the `android` block....}dependencies{...// Add a `baselineProfile` dependency on the `:baseline-profile` module.baselineProfile(project(":baseline-profile"))}
Cool
plugins{id'com.android.application'id'androidx.baselineprofile'}android{// No changes to the `android` block....}dependencies{...// Add a `baselineProfile` dependency on the `:baseline-profile` module.baselineProfile':baseline-profile"'}
Profil durch Ausführen des :app:generateBaselineProfile erstellen
oder :app:generateVariantBaselineProfile-Gradle-Aufgaben.
Am Ende der Generierungsaufgabe wird das Baseline-Profil kopiert in
app/src/variant/generated/baselineProfiles
Neues Baseline-Profil mit AGP 7.3–7.4 erstellen
Es ist möglich, Basisprofile mit AGP 7.3 bis 7.4 zu generieren,
Es wird ein Upgrade auf AGP 8.1 empfohlen, damit Sie das Baseline-Profil verwenden können
Gradle-Plug-in und die neuesten Funktionen
Wenn Sie Basisprofile mit AGP 7.3–7.4 erstellen müssen, sind die Schritte identisch
wie in den Schritten für AGP 8.1 mit folgendem Code:
Ausnahmen:
Fügen Sie das Gradle-Plug-in für Baseline-Profile nicht hinzu.
Führen Sie die Gradle-Aufgabe ./gradlew [emulator name][flavor][build type]AndroidTest aus, um die Baseline-Profile zu generieren. Beispiel: ./gradlew :benchmark:pixel6Api31BenchmarkAndroidTest.
Der Generator für das Baseline-Profil erstellt eine HRF-Textdatei (Human Readable Format).
und kopiert ihn auf Ihren Hostcomputer. So wenden Sie das generierte Profil an:
zu Ihrem Code hinzufügen, gehen Sie so vor:
Suchen Sie die HRF-Datei im Build-Ordner des Moduls, das Sie generieren.
Profil in:
[module]/build/outputs/managed_device_android_test_additional_output/[device]
Profile folgen den [class name]-[test method name]-baseline-prof.txt
benannt hat, der wie folgt aussieht:
BaselineProfileGenerator-startup-baseline-prof.txt.
Kopieren Sie das generierte Profil in src/main/ und benennen Sie die Datei um in
baseline-prof.txt.
Abhängigkeit zur ProfileInstaller-Bibliothek hinzufügen
in der build.gradle.kts-Datei deiner App, um das lokale Baseline-Profil zu aktivieren
Kompilierung, bei der Cloud-Profile nicht verfügbar sind. Dies ist
ist die einzige Möglichkeit,
ein Baseline-Profil lokal zu übertragen.
Produktionsversion deiner App erstellen, während die angewendeten HRF-Regeln gelten
in Binärform kompiliert und im APK oder AAB enthalten. Verteilen Sie dann
wie gewohnt Ihre App aufrufen.
Benchmarking des Basisprofils
Erstellen Sie einen neuen Android-instrumentierten Testlauf, um Ihr Baseline-Profil zu vergleichen
Konfiguration aus der Gutteraktion, die die in
die Datei StartupBenchmarks.kt oder StartupBencharks.java. Weitere Informationen zu Benchmarks
siehe Makro-Benchmark erstellen
Kurs
und Messung mit MacroBenchmark automatisieren
Mediathek.
<ph type="x-smartling-placeholder"></ph>
Abbildung 3: Android-Tests über den Bundter ausführen
Aktion ausführen.
Wenn Sie dies in Android Studio ausführen, enthält die Build-Ausgabe Details zu
die Geschwindigkeitsverbesserungen, die das Baseline-Profil bietet:
StartupBenchmarks_startupCompilationBaselineProfiles
timeToInitialDisplayMs min 161.8, median 178.9, max 194.6
StartupBenchmarks_startupCompilationNone
timeToInitialDisplayMs min 184.7, median 196.9, max 202.9
Alle erforderlichen Codepfade erfassen
Die zwei wichtigsten Messwerte zum Messen der App-Startzeiten sind:
TTID plus die Zeit für die Anzeige des Contents, der asynchron geladen wird, nachdem der erste Frame angezeigt wurde.
TTFD wird gemeldet, sobald
reportFullyDrawn()
der Methode
ComponentActivity
aufgerufen wird. Wenn reportFullyDrawn() nie aufgerufen wird, wird die TTID gemeldet.
. Möglicherweise müssen Sie den Aufruf von reportFullyDrawn() erst nach dem folgenden Datum verzögern:
wenn das asynchrone Laden abgeschlossen ist. Enthält die Benutzeroberfläche beispielsweise eine dynamische
wie RecyclerView oder lazy
Liste enthält, kann die Liste durch einen Hintergrund
Aufgabe, die abgeschlossen wird, nachdem die Liste zum ersten Mal gezeichnet wurde und folglich nach der Benutzeroberfläche
ist als vollständig gezeichnet markiert. In diesen Fällen wird Code, der ausgeführt wird, nachdem die Benutzeroberfläche
Der vollständig gezeichnete Zustand ist nicht im Basisprofil enthalten.
Um die Grundgesamtheit der Liste in Ihr Baseline-Profil aufzunehmen, rufen Sie die
FullyDrawnReporter mit
getFullyDrawnReporter()
und fügen Sie einen Reporter
im App-Code hinzu. Lassen Sie den Reporter los, sobald
Hintergrundaufgabe das Ausfüllen der Liste beendet. FullyDrawnReporter nicht
die Methode reportFullyDrawn() aufrufen, bis alle Reporter freigegeben sind. Durch
enthält das Baseline-Profil die Codepfade, die zum Füllen der Liste erforderlich sind.
Dies ändert nichts am Verhalten der Anwendung für den Nutzer, aber die Baseline kann
Das Profil enthält alle erforderlichen Codepfade.
Wenn Ihre App Jetpack Compose verwendet, verwenden Sie die folgenden APIs, um
vollständig gezeichneten Zustand anzeigen:
ReportDrawn
gibt an, dass die zusammensetzbare Funktion sofort für eine Interaktion bereit ist.
ReportDrawnWhen
verwendet ein Prädikat wie list.count > 0, um anzugeben, wann Ihr
zusammensetzbaren Funktionen zur Interaktion bereit.
ReportDrawnAfter
verwendet eine Unterbrechungsmethode, die nach Abschluss des Vorgangs anzeigt,
zusammensetzbaren Funktionen zur Interaktion bereit.
Empfehlungen für dich
Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.