Start-up-Profile erstellen

Startprofile sind eine Teilmenge von Baseline-Profilen. Sie werden vom Build-System verwendet, um die darin enthaltenen Klassen und Methoden weiter zu optimieren, indem das Layout des Codes in den DEX-Dateien des APK verbessert wird. Mit Startprofilen ist der App-Start in der Regel 15 bis 30 % schneller als mit Baseline-Profilen allein.

Weitere Informationen finden Sie unter Übersicht über Startprofile.

Voraussetzungen

Wir empfehlen, Startprofile mit den folgenden Tools zu verwenden:

  • Jetpack Macrobenchmark 1.2.0 oder höher
  • Android-Gradle-Plug-in (AGP) 8.2 oder höher
  • Android Studio Iguana oder höher

Außerdem benötigen Sie die folgenden Einstellungen in Ihrer App:

  • R8 aktiviert. Legen Sie für Ihren Release-Build isMinifyEnabled = true fest.
  • DEX-Layoutoptimierungen aktiviert. Diese Funktion ist erst ab AGP 8.1 verfügbar und seit AGP 8.3 standardmäßig aktiviert. Legen Sie für AGP-Versionen 8.1 bis 8.2 im Block baselineProfile {} der Build-Datei des App-Moduls dexLayoutOptimization = true fest.

Startprofil erstellen

Android Studio erstellt ein Startprofil zusammen mit einem Baseline-Profil, wenn Sie die Standardvorlage für den Baseline-Profil-Generator verwenden.

Die allgemeinen Schritte zum Erstellen und Generieren eines Startprofils sind dieselben wie zum Erstellen eines Baseline-Profils.

Die Standardmethode zum Erstellen eines Startprofils ist die Verwendung der Modulvorlage für den Baseline-Profil-Generator in Android Studio. Dazu gehören Startinteraktionen, die ein grundlegendes Startprofil bilden. Wenn Sie dieses Startprofil um weitere kritische Nutzerpfade (Critical User Journeys, CUJs) erweitern möchten, fügen Sie die CUJs für den App-Start einem rule-Block hinzu, wobei includeInStartupProfile auf true gesetzt ist. Bei einfachen Apps reicht es möglicherweise aus, die MainActivity der App zu starten. Bei komplexeren Apps sollten Sie die häufigsten Einstiegspunkte in Ihre App hinzufügen, z. B. das Starten der App über den Startbildschirm oder das Aufrufen über einen Deeplink.

Das folgende Code-Snippet zeigt einen Baseline-Profil-Generator (standardmäßig die Datei BaselineProfileGenerator.kt), der das Starten Ihrer App über den Startbildschirm und das Aufrufen über einen Deeplink umfasst. Der Deeplink führt direkt zum Nachrichten-Feed der App und nicht zum Startbildschirm der App.

@RunWith(AndroidJUnit4::class)
@LargeTest
class BaselineProfileGenerator {

    @get:Rule
    val rule = BaselineProfileRule()

    @Test
    fun generate() {
        rule.collect(
            packageName = "com.example.app",
            includeInStartupProfile = true
        ) {
            uiAutomator {
                // Launch directly into the NEWS_FEED using startActivityIntent
                startIntent(Intent().apply {
                    setPackage(packageName)
                    setAction("com.example.app.NEWS_FEED")
                })
        }
    }
}

Führen Sie die Konfiguration „Baseline-Profil für App generieren“ aus und suchen Sie die Startprofilregeln unter src/<variant>/generated/baselineProfiles/startup-prof.txt. Dort werden sie automatisch von AGP verwendet.

Überlegungen zum Erstellen von Startprofilen

Wenn Sie entscheiden, welche Nutzerpfade beim Erstellen eines Startprofils berücksichtigt werden sollen, sollten Sie überlegen, wo die meisten Nutzer die Anwendung starten. In der Regel geschieht das über den Launcher und nachdem sie sich angemeldet haben. Dies ist auch der einfachste Baseline-Profil-Pfad.

Nachdem der erste Anwendungsfall abgedeckt wurde, folgen Sie dem Nutzer-Funnel für den App-Start. In vielen Fällen folgen App-Start-Funnels dieser Liste:

  1. Hauptaktivität des Launchers
  2. Benachrichtigungen, die den App-Start auslösen
  3. Optionale Launcher-Aktivitäten

Arbeiten Sie diese Liste von oben nach unten ab und halten Sie an, bevor classes.dex voll ist. Wenn Sie später weitere Pfade abdecken möchten, verschieben Sie Code aus dem Startpfad und fügen Sie weitere Pfade hinzu. Um Code aus dem Startpfad zu verschieben, untersuchen Sie Perfetto-Traces während des App-Starts und suchen Sie nach Vorgängen, die lange dauern. Sie können auch einen Macrobenchmark mit aktivierter Methodenverfolgung verwenden, um eine automatisierbare und vollständige Ansicht der Methodenaufrufe während des App-Starts zu erhalten.