Les profils de démarrage sont un sous-ensemble des profils de référence. Les profils de démarrage sont utilisés par le système de compilation pour optimiser davantage les classes et les méthodes qu'elles contiennent en 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 jusqu'à 15% plus rapide qu'avec les profils de référence uniquement.
<ph type="x-smartling-placeholder">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 avez besoin des paramètres suivants dans votre application:
- R8 activé. Pour votre build, définissez
isMinifyEnabled = true
- Optimisations de mise en page DEX activées. Dans le bloc
baselineProfile {}
de 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 plus d'un profil de référence lorsque vous utilisez le modèle par défaut du générateur de profils de référence.
Les étapes générales pour créer et générer un profil de démarrage sont les mêmes que 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 profil de référence.
Modèle de module du générateur depuis Android Studio. Cela inclut le démarrage
interactions qui forment un profil de démarrage de base. Pour enrichir ce profil de start-up
avec d'autres CUJ (Critical User Journeys), ajoutez ceux de démarrage de votre appli à un rule
où includeInStartupProfile
est défini sur true
. Pour les applications simples, le lancement
l'MainActivity
de l'application peut suffire. Pour les applications plus complexes, envisagez
en ajoutant les points d'entrée les plus courants à votre application, comme démarrer l'application à partir de
l'écran d'accueil ou le lancement d'un lien profond.
L'extrait de code suivant montre un générateur de profils de référence (par défaut,
BaselineProfileGenerator.kt
), ce qui implique de démarrer votre application à partir du
l'écran d'accueil et le lancement d'un lien profond. Le lien profond pointe directement vers
le flux d'actualités de l'application, et non sur 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
) {
// Launch directly into the NEWS_FEED.
startActivityAndWait(Intent().apply {
setPackage(packageName)
setAction("com.example.app.NEWS_FEED")
})
}
}
}
Exécutez la configuration Generate Baseline Profile for app (Générer un profil de référence pour l'application), puis recherchez les
les règles du profil de démarrage à l'adresse
src/<variant>/generated/baselineProfiles/startup-prof.txt
Confirmer l'optimisation des profils de démarrage
Pour confirmer l'optimisation de la mise en page DEX, utilisez Android Studio pour ouvrir l'APK et
vérifier les classes dans les fichiers DEX. Assurez-vous que le classes.dex
principal n'est pas
complètement remplis. Si votre application se compose d'un seul fichier DEX, vous pouvez vérifier
si l'application contient deux fichiers DEX après avoir activé le profil de démarrage ;
Android Studio vous avertit si les classes de démarrage ne tiennent pas dans un seul fichier DEX.
Pour obtenir des informations de diagnostic, y compris le nombre de méthodes non destinées au démarrage
les classes de démarrage, assurez-vous que le compilateur R8 est mis à jour vers au moins la version
8.3.36-dev en apportant les modifications suivantes au fichier settings.gradle
lorsque vous
vous appliquez le profil de démarrage:
Kotlin
pluginManagement { buildscript { repositories { mavenCentral() maven { url = uri("https://storage.googleapis.com/r8-releases/raw") } } dependencies { classpath("com.android.tools:r8:8.3.6-dev") } } }
Groovy
pluginManagement { buildscript { repositories { mavenCentral() maven { url uri('https://storage.googleapis.com/r8-releases/raw') } } dependencies { classpath 'com.android.tools:r8:8.3.6-dev" } } }
N'oubliez pas d'ajouter --info
après
assembleRelease
dans la commande suivante lors de la compilation avec Gradle.
./gradlew assembleRelease --info
Le diagnostic est ensuite affiché sur le terminal.
Si votre application ou des bibliothèques font référence à des API désucrées, les packages groupés les implémentations de compatibilité de ces classes sont toujours contenues dans la dernière fichier DEX. Le dernier fichier DEX désucré ne participe pas à la mise en page DEX et des optimisations.
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