Startup-Profile 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 Startprofilen ist der App-Start in der Regel 15% bis 30% schneller als mit Baseline-Profilen allein.

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-ModulsdexLayoutOptimization = 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 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 eines Deeplinks.
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 über einen Deeplink umfasst. Der Deeplink führt direkt zum Newsfeed der App, 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
) {
// Launch directly into the NEWS_FEED.
startActivityAndWait(Intent().apply {
setPackage(packageName)
setAction("com.example.app.NEWS_FEED")
})
}
}
}
Führen Sie die Generate Baseline Profile for app configuration aus und suchen Sie die Startup-Profilregeln unter src/<variant>/generated/baselineProfiles/startup-prof.txt
.
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. Das ist auch der einfachste Baseline-Profilpfad.
Nachdem der erste Anwendungsfall abgedeckt wurde, folgen Sie dem Nutzer-Trichter für den App-Start. In vielen Fällen folgen App-Start-Trichter dieser Liste:
- Haupt-Launcher-Aktivität
- Benachrichtigungen, die den App-Start auslösen
- 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.
Empfehlungen für dich
- Hinweis: Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- Baseline-Profile erstellen {:#creating-profile-rules}
- Baseline-Profile {:#baseline-profiles}
- Mikrobenchmark schreiben