Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Solución de problemas de rendimiento de compilación

En Android Studio 4.0 y versiones posteriores con el complemento de Gradle para Android 4.0.0 y versiones posteriores, puedes usar Build Analyzer a fin de inspeccionar el rendimiento de la compilación de tu proyecto. El rendimiento de tu compilación puede verse afectado por varios factores que pueden cambiar entre las compilaciones. Para cada compilación que realizas, Build Analyzer intenta presentar la información más importante sobre cada compilación, de modo que puedas identificar y resolver rápidamente las regresiones de rendimiento de tu compilación.

En esta página, se proporciona una descripción general de Build Analyzer y una guía sobre cómo usar la herramienta para mejorar el rendimiento de la compilación de tu proyecto. Si todavía no lo hiciste, prueba estrategias adicionales para mejorar el rendimiento de la compilación. Para ello, lee Cómo optimizar tu velocidad de compilación.

Los datos que presenta el analizador cambian en función de cada compilación. En particular con compilaciones grandes y complejas, muchos factores pueden cambiar entre compilaciones, lo que cambia los datos que el analizador te muestra como factores importantes en la duración de la compilación. Por lo tanto, puede ser útil compilar tu proyecto varias veces y comparar los datos del analizador para identificar patrones.

Cómo comenzar

Cada vez que compilas tu app, Build Analyzer crea un informe y muestra los datos del último informe en la ventana Build. Para comenzar, haz lo siguiente:

  1. Asegúrate de usar la versión más reciente de Android Studio con el complemento de Gradle para Android 4.0.0 y versiones posteriores.
  2. Si todavía no lo hiciste, compila tu app de una de las siguientes maneras:
    • Haz clic en Build > Make Project en la barra de menú.
    • Compila un Android App Bundle o APK. Para ello, haz clic en Build > Build Bundle(s)/APK(s) > Build Bundle(s) o en Build > Build Bundle(s)/APK(s) > Build APK(s) desde la barra de menú.
  3. Abre la ventana Build. Para ello, selecciona View > Tool Windows > Build en la barra de menú.
  4. En la ventana Build, haz clic en la pestaña Build Analyzer para ver el informe de compilación en Build Analyzer.

Figura 1: Build Analyzer proporciona un desglose de los complementos más responsables de la duración de la compilación.

Cuando abres Build Analyzer, la ventana te muestra un desglose de los complementos que contribuyeron más a la duración de la compilación y un árbol para ayudarte a navegar por otros datos útiles acerca de tu compilación, como se muestra en la figura 1.

Es importante tener en cuenta que Build Analyzer no muestra datos para todas las tareas de tu compilación. En cambio, se enfoca solamente en las tareas que determinan la duración total de tu compilación.

¿Qué tareas determinan la duración de la compilación?

Gradle determina la ejecución de tareas según las interdependencias entre tareas, la estructura del proyecto y la carga de la CPU, y ejecuta las tareas de forma secuencial o en paralelo. Para una compilación determinada, Build Analyzer destaca el conjunto de tareas ejecutadas secuencialmente que determinaron la duración de la compilación actual. Resolver las ineficiencias de esas tareas destacadas es la mejor forma de reducir el tiempo de compilación general.

Ten en cuenta que es posible que veas un conjunto de tareas diferente que determine la duración de la compilación para cada compilación que ejecutes. Por ejemplo, si realizas cambios en la configuración de la compilación, ejecutas una compilación con un conjunto diferente de tareas (como una compilación incremental) o ejecutas una compilación con diferentes restricciones (por ejemplo, una carga de CPU más alta), es posible que en la ventana Build Speed se destaque un conjunto diferente con las tareas que más afectaron la duración de la compilación. Debido a esta variabilidad, te recomendamos que utilices la ventana Build Speed en varias compilaciones para reducir la duración de la compilación de forma constante.

Complementos con tareas que determinan la duración de la compilación

Cuando abres Build Analyzer por primera vez después de completar una compilación, la ventana muestra datos sobre los complementos que ingresan tareas que determinan la duración de tu compilación, como se muestra en la figura 1. A la derecha, la ventana proporciona un desglose visual de estos complementos y sus contribuciones relativas a la duración de la compilación. Esto te permite identificar rápidamente los complementos que tal vez quieras inspeccionar primero.

En el panel izquierdo, puedes expandir el nodo junto a Plugins with tasks determining the build’s duration a fin de ver más datos que el analizador de compilación recopiló para cada complemento. Por ejemplo, cada complemento incluye un nodo secundario que agrupa sus tareas que Gradle ejecutó durante la última compilación y que el analizador considera importantes para la duración total de la compilación. Cada nodo muestra el tiempo total que lleva ejecutar los elementos secundarios directos del nodo. Estas duraciones pueden ayudarte a enfocarte en inspección de las tareas con el mayor impacto en la duración de tu compilación.

Si Build Analyzer afirma que algunas tareas podrían configurarse para ejecutarse de manera más eficiente, las agrupa en un nodo etiquetado como Warnings. También puedes inspeccionar todas las advertencias de la compilación si expandes el nodo Advertencias de nivel superior cerca de la parte inferior del panel izquierdo.

Tareas que determinan la duración de la compilación

Cuando seleccionas el nodo Tasks determining this build’s duration del árbol, Build Analyzer muestra un desglose visual de las tareas que tuvieron el mayor impacto en la duración de la compilación. Es decir, este nodo no agrupa tareas por complemento, sino que, en su lugar, clasifica cada tarea según el tiempo que llevó ejecutarla.

Las tareas se codifican por colores:

  • Rosa: La tarea pertenece al complemento de Gradle para Android, al complemento de Gradle para Java o al complemento de Gradle para Kotlin.
  • Azul: La tarea pertenece a un complemento personalizado o de terceros. Por ejemplo, un complemento que podrías haber aplicado después de crear un proyecto nuevo con Android Studio.
  • Púrpura: La tarea no pertenece a un complemento, pero se usa para modificar dinámicamente las propiedades del proyecto en el tiempo de ejecución. Por ejemplo, estas son tareas que puedes definir dentro de tus archivos build.gradle.
  • Celeste: La tarea, en relación con otras tareas destacadas por el analizador, no tiene un gran impacto en la duración de la compilación.

Después de expandir el nodo Tasks determining this build’s duration, puedes hacer clic en cada tarea secundaria para obtener más información sobre su ejecución. Por ejemplo, el analizador proporciona detalles adicionales, como el complemento principal, el tipo de tarea, otras tareas que hicieron que se ejecutara esta tarea y si la tarea se ejecutó de forma incremental, como se muestra en la figura 2. El analizador también puede generar advertencias que te ayuden a configurar la tarea para que se ejecute de manera más eficiente.

Figura 2: Build Analyzer muestra detalles sobre una ejecución de tareas específica

Cómo inspeccionar las advertencias

Build Analyzer proporciona advertencias cuando detecta tareas que podrían no estar configuradas para ejecutarse de manera eficiente. Por ejemplo, una tarea que no utiliza las API de Gradle apropiadas para especificar sus entradas y salidas no puede aprovechar las compilaciones incrementales. Si tu compilación incluye esas tareas, el analizador de compilaciones podría marcarlas con una advertencia de Always-run, ya que deben ejecutarse con cada compilación, sin importar si cambian sus entradas.

Para ver todas las advertencias que el analizador identificó para tu compilación, expande el nodo Warnings de nivel superior. Después de expandir el nodo, puedes ver las advertencias agrupadas por categoría. Por ejemplo, el nodo Always-run agrupa tareas que el analizador considera que no están configuradas correctamente para compilaciones incrementales.

Cuando haces clic en un nodo secundario, el analizador describe la naturaleza de la advertencia y los posibles pasos que puedes seguir para resolver el problema. Además, si la tarea pertenece a un complemento que aplicaste a tu proyecto, el analizador proporciona un vínculo Generate report, como se muestra en la figura 3.

Figura 3: Información detallada sobre las advertencias de Build Analyzer

Al hacer clic en el vínculo Generate report, aparecerá un diálogo con información adicional que podría ayudar al desarrollador del complemento a resolver el problema en una versión nueva del complemento. Puedes hacer clic en Copy para guardar el texto en el portapapeles y pegar más fácilmente la información en un informe de errores para el desarrollador del complemento.