Cómo crear perfiles de Baseline

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Como desarrollador de apps, puedes generar perfiles automáticamente para cada versión de la app con la biblioteca de Jetpack Macrobenchmark y BaselineProfileRule. Recomendamos usar com.android.tools.build:gradle:7.3.0 o versiones posteriores, que incluye mejoras de compilación cuando se usan perfiles de Baseline.

Sigue estos pasos para crear perfiles de Baseline con la biblioteca de Macrobenchmark:

  1. Configura un módulo de Macrobenchmark en tu proyecto de Gradle.

  2. Define una prueba nueva llamada BaselineProfileGenerator que se vea de la siguiente manera:

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

    Consulta otros ejemplos de pruebas que usan @BaselineProfileRule para mejorar los recorridos críticos del usuario.

  3. Para configurar un dispositivo administrado por Gradle, abre tu archivo build.gradle.kts y, dentro del bloque de configuración testOptions, agrega managedDevices y devices, y crea tu definición de emulador. Asegúrate de usar aosp como systemImageSource, ya que necesitarás acceso con permisos de administrador para el generador de perfiles de Baseline.

    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 crea tareas por ti en función del nombre de dispositivo que seleccionaste y las variantes de compilación disponibles en el módulo. Su formato es [emulator_name][flavor][build type]AndroidTest. Puedes ejecutar esta tarea desde la terminal, por ejemplo:

    ./gradlew :benchmark:pixel2Api31BenchmarkAndroidTest
    

Cómo aplicar las reglas generadas

  1. Ubica el perfil generado en [module name]/build/outputs/managed_device_android_test_additional_output/[device name]. Los perfiles siguen el patrón de nomenclatura [class name]-[test method name]-baseline-prof.txt, que debería ser similar a TrivialBaselineProfileBenchmark-startup-baseline-prof.txt.

  2. Copia el perfil generado en src/main/ del módulo de tu app, junto con AndroidManifest.xml. Cambia el nombre del archivo por baseline-prof.txt.

  3. Agrega una dependencia a la biblioteca de ProfileInstaller en el objeto build.gradle de tu app a fin de habilitar la compilación de perfiles de Baseline locales y de Play Store. Esta es la única manera de transferir un perfil de Baseline de forma local.

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

Notas adicionales

A la hora de crear perfiles de Baseline, debes tener en cuenta otros aspectos:

  • No se deben ofuscar las compilaciones de comparativas. Asegúrate de agregar -dontobfuscate al archivo de reglas Proguard cuando generes un perfil de Baseline.

  • Los perfiles de referencia deben pesar menos de 1.5 MB cuando se comprimen. Puedes verificar el tamaño de tu perfil de Baseline si lo ubicas en el artefacto de salida en assets/dexopt/baseline.prof para APK o BUNDLE-METADATA/com.android.tools.build.profiles/baseline.prof para AAB.

  • Las reglas amplias que compilan demasiado contenido de la aplicación pueden ralentizar el inicio debido al aumento de acceso al disco. Deberías probar el rendimiento de tus perfiles de Baseline.