Les profils de démarrage sont un sous-ensemble des profils de référence. Ils sont utilisés par le système de compilation pour optimiser davantage les classes et les méthodes qu'ils contiennent en améliorant la mise en page du code dans les fichiers DEX de votre APK. Avec les profils de démarrage, le démarrage de votre application est généralement 15 à 30 % plus rapide qu'avec les profils de référence seuls.
Conditions requises
Nous vous recommandons d'utiliser les profils de démarrage avec les outils suivants :
- Jetpack Macrobenchmark 1.2.0 ou version ultérieure
- Plug-in Android Gradle 8.2 ou version ultérieure
- Android Studio Iguana ou version ultérieure
De plus, vous devez disposer des paramètres suivants dans votre application :
- R8 activé. Pour votre build de version, définissez
isMinifyEnabled = true. - Optimisations de mise en page DEX activées. Dans le bloc
baselineProfile {}du fichier de compilation du module d'application, définissezdexLayoutOptimization = true.
Créer un profil de démarrage
Android Studio crée un profil de démarrage en même temps qu'un profil de référence lorsque vous utilisez le modèle de générateur de profils de référence par défaut.
Les étapes générales de création et de génération d'un profil de démarrage sont les mêmes que celles pour créer un profil de référence.
La méthode par défaut pour créer un profil de démarrage consiste à utiliser le modèle de module du générateur de profils de référence
dans Android Studio. Cela inclut les interactions de démarrage
qui forment un profil de démarrage de base. Pour compléter ce profil de démarrage
avec d'autres critical user journeys (CUJ), ajoutez les CUJ de démarrage de votre application à un bloc rule
avec includeInStartupProfile défini sur true. Pour les applications simples, il peut suffire de lancer
l'application MainActivity. Pour les applications plus complexes, envisagez
d'ajouter les points d'entrée les plus courants dans votre application, par exemple en démarrant l'application depuis
l'écran d'accueil ou en lançant un lien profond.
L'extrait de code suivant montre un générateur de profils de référence (par défaut, le
BaselineProfileGenerator.kt fichier) qui inclut le lancement d'un lien profond.
Le lien profond redirige directement vers le flux d'actualités de l'application, et non vers son écran d'accueil.
@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")
})
}
}
}
}
Exécutez la configuration Generate Baseline Profile for app et recherchez les règles du
profil de démarrage dans
src/<variant>/generated/baselineProfiles/startup-prof.txt.
Points à prendre en compte lors de la création de profils de démarrage
Pour décider des parcours utilisateur à couvrir lors de la création d'un profil de démarrage, déterminez où la plupart des utilisateurs démarrent l'application. En général, c'est à partir du lanceur et après s'être connectés. Il s'agit également du parcours de profil de référence le plus basique.
Une fois le premier cas d'utilisation couvert, suivez l'entonnoir utilisateur pour le démarrage de l'application. Dans de nombreux cas, les entonnoirs de démarrage d'application suivent cette liste :
- Activité principale du lanceur
- Notifications qui déclenchent le démarrage de l'application
- Activités facultatives du lanceur
Parcourez cette liste de haut en bas et arrêtez-vous avant que classes.dex ne soit plein. Pour couvrir d'autres parcours par la suite, déplacez le code en dehors du chemin de démarrage et ajoutez d'autres parcours. Pour déplacer le code en dehors du chemin de démarrage, inspectez les traces Perfetto lors du démarrage de l'application et recherchez les opérations de longue durée. Vous pouvez également utiliser un macrobenchmark avec le traçage de méthode activé pour obtenir une vue automatisable et complète des appels de méthode lors du démarrage de l'application.
Recommandations personnalisées
- Remarque : Le texte du lien s'affiche lorsque JavaScript est désactivé.
- Créer des profils de référence {:#creating-profile-rules}
- Profils de référence {:#baseline-profiles}
- Écrire un microbenchmark