Créer des profils de démarrage

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.

Figure 1. Amélioration de la localité du code grâce à l'optimisation de la mise en page DEX

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éfinissez dexLayoutOptimization = 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 :

  1. Activité principale du lanceur
  2. Notifications qui déclenchent le démarrage de l'application
  3. 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.