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 der APK verbessert wird. Mit Startprofilen, ist der App-Start in der Regel 15 bis 30 % schneller als mit Baseline Profilen allein.
Voraussetzungen
Wir empfehlen, Startprofile mit den folgenden Tools zu verwenden:
- 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 Ihren Release-Build fest
isMinifyEnabled = true. - Optimierungen des DEX-Layouts aktiviert Legen Sie 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 bei den Schritten 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 Start
interaktionen, die ein einfaches 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 Starten über einen Deeplink.
Das folgende Code-Snippet zeigt einen Baseline-Profil-Generator (standardmäßig die
BaselineProfileGenerator.kt Datei), der das Starten über einen Deeplink 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 Baseline-Profil für App generieren Konfiguration aus und suchen Sie die
Regeln für das Startprofil unter
src/<variant>/generated/baselineProfiles/startup-prof.txt.
Überlegungen zum Erstellen von Startprofilen
Um zu entscheiden, welche Nutzerpfade beim Erstellen eines Startprofils berücksichtigt werden sollen, überlegen Sie, wo die meisten Nutzer die Anwendung starten. In der Regel geschieht das über den Launcher und nachdem sie sich angemeldet haben. Das 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-Funnel 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 die Datei „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