Créer des profils de référence

Stay organized with collections Save and categorize content based on your preferences.

En tant que développeur d'applications, vous pouvez générer automatiquement des profils pour chaque version d'une application à l'aide de la bibliothèque Jetpack Macrobenchmark et de BaselineProfileRule. Il est recommandé d'utiliser com.android.tools.build:gradle:7.3.0 ou une version ultérieure, qui offre des améliorations de compilation lorsque vous utilisez des profils de référence.

Pour créer des profils de référence à l'aide de la bibliothèque Macrobenchmark :

  1. Configurez un module Macrobenchmark dans votre projet Gradle.

  2. Définissez un nouveau test appelé BaselineProfileGenerator qui ressemble à ceci :

    @OptIn(ExperimentalBaselineProfilesApi::class)
    class TrivialBaselineProfileBenchmark {
        @get:Rule
        val baselineProfileRule = BaselineProfileRule()
    
        @Test
        fun startup() = baselineProfileRule.collectBaselineProfile(
            packageName = "com.example.app",
            profileBlock = {
                startActivityAndWait()
            }
        )
    }
    

    Consultez d'autres exemples de tests qui utilisent @BaselineProfileRule pour améliorer les critical user journeys.

  3. Pour configurer un appareil géré par Gradle, ouvrez votre fichier build.gradle.kts et, dans le bloc de configuration testOptions, ajoutez managedDevices, devices, puis créez votre définition d'émulateur. Veillez à utiliser aosp comme systemImageSource, car vous aurez besoin d'un accès racine au générateur de profils de référence.

    Kotlin

    testOptions {
        managedDevices {
            devices {
                create ("pixel6Api31", ManageVirtualDevice::class) {
                    device = "Pixel 6"
                    apiLevel = "31"
                    systemImageSource = "aosp"
                }
            }
        }
    }
    

    Groovy

    testOptions {
        managedDevices {
            devices {
                pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice) {
                    device = "Pixel 6"
                    apiLevel = 31
                    systemImageSource = "aosp"
                }
            }
        }
    }
    
  4. Gradle crée des tâches pour vous en fonction du nom de l'appareil que vous avez sélectionné et des variantes de compilation disponibles dans le module. La tâche est formatée ainsi : [emulator_name][flavor][build type]AndroidTest. Vous pouvez exécuter cette tâche à partir d'un terminal, par exemple :

    ./gradlew :benchmark:pixel2Api31BenchmarkAndroidTest
    

Appliquer les règles générées

  1. Recherchez le profil généré dans [module name]/build/outputs/managed_device_android_test_additional_output/[device name]. Les profils suivent le format de nommage [class name]-[test method name]-baseline-prof.txt, qui doit se présenter comme suit : TrivialBaselineProfileBenchmark-startup-baseline-prof.txt

  2. Copiez le profil généré dans src/main/ de votre module d'application, avec votre AndroidManifest.xml. Renommez le fichier en baseline-prof.txt.

  3. Ajoutez une dépendance à la bibliothèque ProfileInstaller dans le fichier build.gradle de votre application pour activer la compilation du profil de référence local et du Play Store. Il s'agit du seul moyen de télécharger indépendamment en local un profil de référence.

    dependencies {
         implementation("androidx.profileinstaller:profileinstaller:1.2.0")
    }
    

Remarques supplémentaires

Lorsque vous créez des profils de référence, veuillez prendre en compte ce qui suit :

  • Les compilations d'analyse comparative ne doivent pas être obscurcies. Veillez à ajouter -dontobfuscate au fichier de règles ProGuard lorsque vous générez un profil de référence.

  • Les profils de référence doivent être inférieurs à 1,5 Mo une fois compressés. Vous pouvez vérifier la taille de votre profil de référence en le localisant dans l'artefact de sortie sous assets/dexopt/baseline.prof pour APK ou BUNDLE-METADATA/com.android.tools.build.profiles/baseline.prof pour AAB.

  • Les règles générales qui compilent trop d'applications peuvent ralentir le démarrage en raison de l'augmentation de l'accès au disque. Vous devez tester les performances de vos profils de référence.