Anforderungen, Erstellung und Best Practices. keywords_public: Startprofile, Baseline-Profile, App-Leistung, APK-Optimierung, DEX-Layout, Android Studio, Jetpack Macrobenchmark
Startprofile sind eine Teilmenge von Baseline-Profilen. Startprofile 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-Profilen 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 die Verwendung von Startprofilen mit den folgenden Tools:
- 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 den 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.
Startup-Profil erstellen
Wenn Sie die Standardvorlage für den Baseline-Profil-Generator verwenden, erstellt Android Studio neben einem Baseline-Profil auch ein Startup-Profil.
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 diesem Startup-Profil weitere kritische Nutzerverhaltensschemata (Critical User Journeys, CUJs) hinzufügen 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 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-Start-Trichter dieser Liste:
- Haupt-Launcher-Aktivität
- Benachrichtigungen, die den App-Start auslösen
- Optionale Launcher-Aktivitäten
Arbeite diese Liste von oben nach unten ab und höre auf, bevor classes.dex voll ist. Wenn Sie später weitere Journeys abdecken möchten, verschieben Sie Code aus dem Startpfad und fügen Sie weitere Journeys 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 Sie
- Hinweis: Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- Baseline-Profile erstellen {:#creating-profile-rules}
- Baseline-Profile {:#baseline-profiles}
- Mikrobenchmark schreiben