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 = truefest. - 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-ModulsdexLayoutOptimization = truefest.
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:
- Hauptaktivität des Launchers
- Benachrichtigungen, die den App-Start auslösen
- 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.
Empfehlungen für Sie
- Hinweis: Linktext wird angezeigt, wenn JavaScript deaktiviert ist
- Baseline-Profile erstellen {:#creating-profile-rules}
- Baseline-Profile {:#baseline-profiles}
- Microbenchmark schreiben