Complemento de Android para Gradle 3.3.0 (enero de 2019)

Esta versión del complemento para Android requiere lo siguiente:

3.3.3 (julio de 2020)

Esta actualización menor es compatible con la nueva configuración predeterminada y las funciones para la visibilidad de los paquetes en Android 11.

Consulta las notas de la versión 4.0.1 para obtener más detalles.

3.3.2 (marzo de 2019)

Esta actualización menor es compatible con Android Studio 3.3.2 e incluye varias correcciones de errores y mejoras de rendimiento. Para ver una lista de las correcciones de errores más importantes, consulta la publicación relacionada en el blog de actualizaciones de versiones.

3.3.1 (febrero de 2019)

Esta actualización menor es compatible con Android Studio 3.3.1 e incluye varias correcciones de errores y mejoras de rendimiento.

Funciones nuevas

  • Sincronización de ruta de clase mejorada: Cuando se resuelven dependencias en las rutas de clase de tiempo de compilación y ejecución, el complemento de Android para Gradle intenta corregir determinados conflictos de versiones descendentes para las dependencias que aparecen en varias rutas de clase.

    Por ejemplo, si la ruta de clase de tiempo de ejecución incluye una Biblioteca A versión 2.0 y la de compilación incluye una Biblioteca A versión 1.0, el complemento actualizará la dependencia automáticamente en la ruta de clase de compilación a la versión 2.0 de la Biblioteca A para evitar errores.

    Sin embargo, si la ruta de clase incluye una Biblioteca A versión 1.0 y la compilación incluye una Biblioteca A versión 2.0, el complemento no cambiará la dependencia de la clase de ruta de compilación a la versión inferior (la Biblioteca A versión 1.0), y se mostrará un error. Si deseas obtener más información, consulta Cómo solucionar conflictos entre rutas de clase.

  • Compilación incremental de Java mejorada cuando se usan procesadores de anotaciones: Esta actualización disminuye el tiempo de compilación, ya que mejora el soporte de compilación incremental de Java cuando se usan procesadores de anotaciones.

    Nota: Esta función es compatible con Gradle 4.10.1 y versiones posteriores, excepto con Gradle 5.1 debido al error 8194 de Gradle.

    • Para proyectos que usan Kapt (la mayoría de los proyectos específicos de Kotlin e híbridos de Kotlin y Java): Se habilitó la compilación incremental de Java, incluso cuando se usa la vinculación de datos o el complemento retro-lambda. El procesamiento de anotaciones de la tarea Kapt aún no es incremental.

    • Para proyectos que no usan Kapt (proyectos específicos de Java): Si todos los procesadores de anotaciones que usas admiten el procesamiento de anotaciones incrementales, la compilación incremental de Java estará habilitada de forma predeterminada. A fin de supervisar la adopción del procesador de anotaciones incrementales, consulta el error 5277 de Gradle.

      Sin embargo, si uno o más procesadores de anotaciones no admiten compilaciones incrementales, la compilación incremental de Java no estará habilitada. En su lugar, puedes incluir la siguiente marca en el archivo gradle.properties:

      android.enableSeparateAnnotationProcessing=true
                  

      Cuando incluyes esa marca, el complemento de Android para Gradle ejecuta los procesadores de anotaciones en una tarea separada y permite que se ejecuten de forma incremental las tareas de compilación de Java.

  • Información de depuración mejorada cuando se usa una API obsoleta: Si el complemento detecta que se está usando una API que ya no se admite, ahora puede proporcionar información más detallada para ayudarte a determinar dónde se está usando la API. Si deseas ver la información adicional, debes incluir lo siguiente en el archivo gradle.properties del proyecto:

              android.debug.obsoleteApi=true
            

    También puedes habilitar la marca pasando -Pandroid.debug.obsoleteApi=true desde la línea de comandos.

  • Puedes ejecutar pruebas de instrumentación en módulos de funciones desde la línea de comandos.

Cambios en el comportamiento

  • Configuración de tareas diferidas: El complemento ahora usa la API de creación de tareas nuevas de Gradle a fin de evitar la inicialización y configuración de tareas que no son necesarias para completar la compilación actual (o que no están en el gráfico de tareas de ejecución). Por ejemplo, si tienes muchas variantes de compilación, como "actualización" y "depuración", y estás compilando la versión de "depuración" de tu app, el complemento evita la inicialización y la configuración de tareas de la versión de "actualización".

    Si se llama a determinados métodos anteriores en la API de variantes, como variant.getJavaCompile(), es posible que aún se fuerce la configuración de tareas. Para asegurarte de que tu compilación se optimizó para la configuración de tareas diferidas, invoca los métodos nuevos que muestran un objeto TaskProvider, como variant.getJavaCompileProvider().

    Si ejecutas tareas de compilación personalizadas, obtén información para adaptarte a la API de creación de tareas nuevas de Gradle.

  • Para un tipo de compilación determinado, cuando se configura useProguard false, el complemento usa R8 en lugar de ProGuard a fin de reducir y ofuscar el código y los recursos de la app. Si deseas obtener más información sobre R8, consulta esta entrada del Blog para desarrolladores de Android.

  • Generación de clase R más rápida para proyectos de biblioteca: Anteriormente, el complemento de Android para Gradle generaba un archivo R.java en cada una de las dependencias del proyecto y, luego, compilaba esas clases R junto con el resto de las clases de tu app. Ahora el complemento genera un JAR que contiene la clase R compilada de la app de forma directa, sin tener que compilar clases R.java intermedias primero. Esa optimización puede aumentar la velocidad de indexación en Android Studio y mejorar de manera considerable el rendimiento de la compilación para proyectos que incluyen muchos subproyectos y dependencias de biblioteca.

  • Cuando se compila un Android App Bundle, los APKs generados desde ese paquete de aplicación orientados a Android 6.0 (nivel de API 23) o a una versión posterior, ahora incluyen de forma predeterminada versiones sin comprimir de las bibliotecas nativas. Esa optimización evita la necesidad de que el dispositivo cree una copia de la biblioteca y, por lo tanto, reduce el tamaño de la app en el disco. Si prefieres inhabilitar esta optimización, agrega lo siguiente al archivo gradle.properties:

    android.bundle.enableUncompressedNativeLibs = false
            
  • El complemento aplica las versiones mínimas de algunos complementos de terceros.

  • Sincronización de proyectos de una sola variante: Sincronizar el proyecto con tu configuración de compilación es un paso importante para permitir que Android Studio comprenda cómo se estructura el proyecto. Sin embargo, en el caso de proyectos grandes, el proceso puede demorar mucho. Si tu proyecto usa múltiples variantes de compilación, ahora puedes optimizar las sincronizaciones del proyecto limitándolas solo a la variante que hayas seleccionado.

    Para habilitar esta optimización, debes usar Android Studio 3.3 o una versión posterior con el complemento de Android para Gradle 3.3.0 o una versión posterior. Cuando cumples con esos requisitos, el IDE te solicita que habilites la optimización al momento de sincronizar el proyecto. La optimización también está habilitada de forma predeterminada en proyectos nuevos.

    Para habilitarla manualmente, haz clic en File > Settings > Experimental > Gradle (Android Studio > Preferences > Experimental > Gradle en Mac) y selecciona la casilla de verificación Only sync the active variant.

    Nota: Esta optimización es completamente compatible con proyectos que incluyen los lenguajes Java y C++, y ofrece compatibilidad limitada con Kotlin. Cuando se habilita la optimización para proyectos con contenido de Kotlin, la sincronización de Gradle vuelve a usar variantes completas de forma interna.

  • Descarga automática de paquetes de SDK faltantes: Se expandió esta funcionalidad para brindar compatibilidad con el NDK. Para obtener más información, consulta Cómo descargar automáticamente los paquetes que faltan con Gradle.

Correcciones de errores

  • El complemento de Android para Gradle 3.3.0 corrige los siguientes errores:

    • El proceso de compilación llama a android.support.v8.renderscript.RenderScript en lugar de la versión de AndroidX, a pesar de que esté habilitado Jetifier.
    • Se producen conflictos cuando androidx-rs.jar incluye annotation.AnyRes en paquetes estáticos.
    • Cuando se usa RenderScript, ya no es necesario configurar manualmente la versión de las herramientas de compilación en archivos build.gradle.