Los perfiles de inicio son un subconjunto de los perfiles de Baseline. El sistema de compilación usa los perfiles de inicio para optimizar aún más las clases y los métodos que contienen, ya que mejora el diseño del código en los archivos DEX de tu APK. Con los perfiles de inicio, el inicio de tu app suele ser entre un 15% y un 30% más rápido que con los perfiles de Baseline por sí solos.
Para obtener más información, consulta Descripción general de los perfiles de inicio.
Requisitos
Te recomendamos que uses los perfiles de inicio con las siguientes herramientas:
- Jetpack Macrobenchmark 1.2.0 o versiones posteriores
- Complemento de Android para Gradle (AGP) 8.2 o versiones posteriores
- Android Studio Iguana o versiones posteriores
Además, necesitas la siguiente configuración en tu app:
- R8 habilitado. Para la compilación de lanzamiento, establece
isMinifyEnabled = true. - Optimizaciones del diseño DEX habilitadas. Esto solo está disponible a partir de AGP 8.1 y está habilitado de forma predeterminada desde AGP 8.3. Para las versiones de AGP 8.1 a 8.2, en el bloque
baselineProfile {}del archivo de compilación del módulo de la app, establecedexLayoutOptimization = true.
Cómo crear un perfil de inicio
Android Studio crea un perfil de inicio junto con un perfil de Baseline cuando usas la plantilla predeterminada del generador de perfiles de Baseline.
Los pasos generales para crear y generar un perfil de inicio son los mismos que los para crear un perfil de Baseline.
La forma predeterminada de crear un perfil de inicio es usar la plantilla del módulo generador de perfiles de Baseline desde Android Studio. Esto incluye las interacciones de inicio que forman un perfil de inicio básico. Para aumentar este perfil de inicio con más recorridos críticos del usuario (CUJ), agrega los CUJ de inicio de tu app a un bloque rule con includeInStartupProfile establecido en true. En el caso de las apps simples, puede ser suficiente con iniciar la MainActivity de la app. En el caso de las apps más complejas, considera
agregar los puntos de entrada más comunes a tu app, como iniciar la app desde
la pantalla principal o iniciar un vínculo directo.
En el siguiente fragmento de código, se muestra un generador de perfiles de Baseline (de forma predeterminada, el archivo BaselineProfileGenerator.kt) que incluye el inicio de tu app desde la pantalla principal y el inicio de un vínculo directo. El vínculo directo va directamente al feed de noticias de la app, no a la pantalla principal de la app.
@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")
})
}
}
}
Ejecuta la configuración Generate Baseline Profile for app y busca las reglas del Perfil de Baseline en
src/<variant>/generated/baselineProfiles/startup-prof.txt, donde AGP las consume automáticamente.
Consideraciones para crear perfiles de inicio
Para decidir qué recorridos del usuario cubrir cuando crees un perfil de inicio, considera dónde la mayoría de los usuarios inician la aplicación. Por lo general, es desde el selector y después de que se conectaron. Este también es el recorrido del perfil de Baseline más básico.
Después de cubrir el primer caso de uso, sigue el embudo del usuario para el inicio de la app. En muchos casos, los embudos de inicio de la app siguen esta lista:
- Actividad principal del selector
- Notificaciones que activan el inicio de la app
- Actividades opcionales del selector
Trabaja en esta lista desde la parte superior y detente antes de que classes.dex esté lleno. Para cubrir más recorridos después, quita el código de la ruta de inicio y agrega más recorridos. Para quitar el código de la ruta de inicio, inspecciona los seguimientos de Perfetto durante el inicio de la app y busca operaciones de larga duración. También puedes usar una macrocomparativa
con el seguimiento de métodos habilitado para obtener una vista automatizable y completa de las llamadas a métodos durante el inicio de la app.
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