Start-up-Profile erstellen

Hier finden Sie Informationen zu Anforderungen, Erstellungsschritten und Best Practices. keywords_public: Startup-Profile, Baseline-Profile, App-Leistung, APK-Optimierung, DEX-Layout, Android Studio, Jetpack Macrobenchmark

Startprofile sind eine Teilmenge von Baseline-Profilen. Startup-Profile 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. Mit Startup Profiles ist der App-Start in der Regel 15% bis 30% schneller als mit Baseline Profiles allein.

Weitere Informationen finden Sie unter Übersicht über Startprofile.

Voraussetzungen

Wir empfehlen die Verwendung von Startprofilen mit den folgenden Tools:

  • Jetpack Macrobenchmark 1.2.0 oder höher
  • Android-Gradle-Plug-in 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 den Release-Build isMinifyEnabled = true fest.
  • DEX-Layoutoptimierungen aktiviert. Legen Sie im baselineProfile {}-Block der Build-Datei des App-Moduls dexLayoutOptimization = true fest.

Startup-Profil erstellen

Wenn Sie die Standardvorlage für den Baseline Profile Generator verwenden, erstellt Android Studio neben einem Baseline Profile auch ein Startup Profile.

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

Ein Startprofil wird standardmäßig mit der Modulvorlage „Baseline Profile Generator“ in Android Studio erstellt. Dazu gehören auch Startup-Interaktionen, die ein grundlegendes Startup-Profil bilden. Wenn Sie dieses Startup-Profil mit weiteren kritischen Nutzerverhaltensschemata (Critical User Journeys, CUJs) erweitern möchten, fügen Sie die Startup-CUJs Ihrer App in einen rule-Block ein, wobei includeInStartupProfile auf true festgelegt 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 Generator für Baseline-Profile (standardmäßig die Datei BaselineProfileGenerator.kt), der das Starten Ihrer App über den Startbildschirm und das Aufrufen eines Deeplinks umfasst. Der Deeplink führt direkt zum Newsfeed 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 Generate Baseline Profile for app-Konfiguration aus und suchen Sie die Startup-Profilregeln unter src/<variant>/generated/baselineProfiles/startup-prof.txt. Dort werden sie automatisch von AGP verwendet.

Hinweise zum Erstellen von Startup-Profilen

Um zu entscheiden, welche User Journeys Sie beim Erstellen eines Startup-Profils abdecken sollten, sollten Sie überlegen, wo die meisten Nutzer die Anwendung starten. Normalerweise geschieht das über den Launcher und nachdem sich der Nutzer angemeldet hat. Dies ist auch der einfachste Baseline-Profil-Ablauf.

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

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

Arbeiten Sie diese Liste von oben nach unten ab und stoppen Sie, bevor „classes.dex“ voll ist. Wenn Sie später weitere Abläufe abdecken möchten, verschieben Sie Code aus dem Startpfad und fügen Sie weitere Abläufe hinzu. Wenn Sie Code aus dem Startpfad entfernen möchten, untersuchen Sie Perfetto-Traces während des App-Starts und suchen Sie nach lang andauernden Vorgängen. Sie können auch einen Makrobenchmark mit aktiviertem Methoden-Tracing verwenden, um eine automatisierbare und vollständige Ansicht der Methodenaufrufe beim Starten der App zu erhalten.