Los perfiles de inicio son un subconjunto de los perfiles de Baseline. Los perfiles de inicio los usan el sistema de compilación para optimizar aún más las clases y los métodos que contienen mediante lo que mejora el diseño del código de los archivos DEX de tu APK. Con los perfiles de inicio, el inicio de tu app es hasta un 15% más rápido que con solo los Perfiles de Baseline.
![](https://developer.android.google.cn/static/topic/performance/images/dex-layout-optimizations.png?authuser=9&hl=es)
Requisitos
Recomendamos usar perfiles de inicio con las siguientes herramientas:
- Jetpack Macrobenchmark 1.2.0 o una versión posterior
- Complemento de Android para Gradle 8.2 o una versión posterior
- Android Studio Iguana o versiones posteriores
Además, necesitas la siguiente configuración en la app:
- R8. Para la compilación de lanzamiento, establece
isMinifyEnabled = true
- Se habilitaron las optimizaciones del diseño DEX. En el bloque
baselineProfile {}
de archivo de compilación del módulo de app, configuradodexLayoutOptimization = true
.
Crea un perfil de startup
Android Studio crea un perfil de inicio junto con un perfil de Baseline cuando haces lo siguiente: usar la plantilla predeterminada del generador de perfiles de Baseline.
Los pasos generales para crear y generar un perfil de startup son los mismos que para crear un perfil de Baseline.
La forma predeterminada de crear un Perfil de startup es usar el Perfil de Baseline
Plantilla de módulo generador desde Android Studio. Esto incluye el inicio
que forman un perfil básico de startup. Para mejorar este perfil de startup
con más recorridos críticos del usuario (CUJ), agrega los CUJ de inicio de tu app a un rule
bloque con includeInStartupProfile
establecido en true
. Para apps simples, iniciar
el MainActivity
de la app podría ser suficiente. En el caso de apps más complejas,
agregar los puntos de entrada más comunes a la aplicación, como iniciarla desde
la pantalla principal o iniciarlos en un vínculo directo.
En el siguiente fragmento de código, se muestra un generador de perfiles de Baseline (de forma predeterminada, el
BaselineProfileGenerator.kt
) que incluye iniciar la app desde el
la pantalla de inicio y crear un vínculo directo. El vínculo directo te dirige
en el feed de noticias de la app, no en su pantalla principal.
@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")
})
}
}
}
Ejecuta la configuración Generate Baseline Profile for app y busca la
Reglas del perfil de inicio en
src/<variant>/generated/baselineProfiles/startup-prof.txt
Confirma la optimización de los perfiles de inicio
Para confirmar la optimización del diseño DEX, usa Android Studio para abrir el APK y
verificar las clases en los archivos DEX. Asegúrate de que el classes.dex
principal no esté
esté completamente rellenado. Si tu app consta de un solo archivo DEX, puedes verificarlo
Indica si la app contiene dos archivos DEX después de habilitar el perfil de inicio.
Android Studio te advierte si las clases de inicio no caben en un solo archivo DEX.
Para obtener información de diagnóstico que incluya la cantidad de métodos que no fueron de inicio en
las clases de inicio, asegúrate de que el compilador R8 esté actualizado al menos a la versión
8.3.36-dev realizando los siguientes cambios en el archivo settings.gradle
cuando
aplicas el Perfil de inicio:
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" } } }
Asegúrate de agregar --info
después
assembleRelease
en el siguiente comando cuando compilas con Gradle.
./gradlew assembleRelease --info
Luego, el diagnóstico se imprime en la terminal.
Si tu app o cualquier biblioteca hacen referencia a alguna API con expansión de sintaxis, implementaciones de compatibilidad de estas clases archivo DEX. Este último archivo DEX con expansión de sintaxis no participa en el diseño DEX optimizaciones.
Recomendaciones para ti
- Nota: El texto del vínculo se muestra cuando JavaScript está desactivado
- Cómo crear perfiles de Baseline {:#creating-profile-rules}
- Perfiles de Baseline {:#baseline-profiles}
- Cómo escribir una microcomparativa