Notas de la versión preliminar del complemento de Android para Gradle

En esta página, se incluyen las notas de la versión de las versiones preliminares del complemento de Android para Gradle (AGP).

Complemento de Android para Gradle 9.0

El complemento de Android para Gradle 9.0 es una nueva versión principal del AGP que incluye cambios en el comportamiento y la API.

Para actualizar al complemento de Android para Gradle 9.0.0-alpha04, usa el Asistente de actualización del complemento de Android para Gradle en Android Studio Narwhal 4 Feature Drop | 2025.1.4.

El asistente de actualización del AGP ayuda a conservar los comportamientos existentes cuando actualizas tu proyecto, si es apropiado, lo que te permite actualizar tu proyecto para usar AGP 9.0, incluso si no estás listo para adoptar todos los nuevos valores predeterminados en AGP 9.0.

Compatibilidad

El nivel máximo de API de Android que admite el complemento de Android para Gradle 9.0.0-alpha04 es el nivel de API 36.

El complemento de Android para Gradle 9.0.0-alpha04 requiere Gradle 9.0.0.

Versión mínima Versión predeterminada Notas
Gradle 9.0.0 9.0.0 Para obtener más información, consulta cómo actualizar Gradle.
Herramientas de desarrollo del SDK 36.0.0 36.0.0 Instala o configura las herramientas de compilación del SDK.
NDK N/A 28.2.13676358 Instala o configura una versión diferente del NDK.
JDK 17 17 Para obtener más información, consulta cómo configurar la versión de JDK.

Las implementaciones internas del DSL y la API de variantes obsoleta ahora requieren la habilitación explícita

El complemento de Android para Gradle ahora tiene una superficie de API definida, con las APIs compatibles definidas en el artefacto de Maven com.android.tools.build:gradle-api.

Para garantizar la compatibilidad con los complementos binarios y las secuencias de comandos de compilación existentes, las implementaciones anteriores del DSL que son anteriores a la superficie de la API definida seguían expuestas de forma predeterminada en AGP 8.13 y versiones anteriores. Esto permite que el código de los complementos de Gradle y las secuencias de comandos de compilación accedan a los detalles de implementación internos del DSL, así como a las APIs android.applicationVariants, android.libraryVariants, android.testVariants y android.unitTestVariants que dejaron de estar disponibles y que se quitarán en 2026 en AGP 10.

Para que esta transición sea más visible, la API de variantes heredada y el DSL interno no son accesibles de forma predeterminada en el complemento de Android para Gradle 9.0.0-alpha04.

Puedes volver a habilitar el uso de la API obsoleta configurando android.newDsl=false en gradle.properties.

Durante la serie alfa de la versión 9.0, nos comunicaremos con los autores de complementos para ayudarlos a adaptar y lanzar complementos que sean totalmente compatibles con los nuevos modos, y mejoraremos el Asistente de actualización del AGP en Android Studio para guiarte durante la migración.

Kotlin integrado

El complemento de Android para Gradle 9 incluye compatibilidad integrada para compilar Kotlin, lo que reemplaza el complemento de Kotlin aplicado por separado. Esto simplifica la integración con AGP, evita el uso de las APIs obsoletas y mejora el rendimiento en algunos casos.

El complemento de Android para Gradle 9 tiene una dependencia de tiempo de ejecución en el complemento de Kotlin para Gradle 2.2.0, que es la versión mínima requerida para la compatibilidad integrada con Kotlin.

Puedes inhabilitar Kotlin integrado configurando android.builtInKotlin=false. Si inhabilitaste la opción y también necesitas usar una versión anterior del complemento de Gradle de Kotlin, puedes forzar la degradación.

buildscript {
    dependencies {
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") {
            version { strictly("2.0.0") } // or another version that you want to use
        }
    }
}

Cambios en el comportamiento

El complemento de Android para Gradle 9.0 tiene los siguientes comportamientos nuevos:

Comportamiento Recomendación
El complemento de Android para Gradle 9.0 usa la versión r28c del NDK de forma predeterminada. Considera especificar explícitamente la versión del NDK que deseas usar.
De forma predeterminada, el complemento de Android Gradle 9.0 requiere que los consumidores de una biblioteca usen la misma versión del SDK de compilación o una superior. Usa el mismo SDK de compilación o uno superior cuando consumas una biblioteca. Si esto no es posible o quieres darles más tiempo a los consumidores de una biblioteca que publicas para que cambien, establece AarMetadata.minCompileSdk de forma explícita.

AGP 9.0 incluye actualizaciones en los valores predeterminados de las siguientes propiedades de Gradle. Esto te permite conservar el comportamiento de AGP 8.13 cuando realices la actualización:

Propiedad Función Cambio de AGP 8.13 a AGP 9.0 Recomendación
android.newDsl Utiliza las nuevas interfaces de DSL sin exponer las implementaciones heredadas del bloque android.
Esto también significa que ya no se puede acceder a la API de variantes heredada, como android.applicationVariants.
falsetrue Puedes inhabilitar esta opción configurando android.newDsl=false.
Una vez que todos los complementos y la lógica de compilación que usa tu proyecto sean compatibles, quita la exclusión.
android.builtInKotlin Se habilitó la compatibilidad para compilar código Kotlin directamente en el complemento de Android para Gradle, sin el complemento org.jetbrains.kotlin.android. falsetrue Adopta Kotlin integrado quitando el uso del plugin org.jetbrains.kotlin.android si puedes. De lo contrario, inhabilita la opción estableciendo android.builtInKotlin=false.
android.uniquePackageNames Exige que cada biblioteca tenga un nombre de paquete distinto. falsetrue Especifica nombres de paquetes únicos para todas las bibliotecas de tu proyecto. Si eso no es posible, puedes inhabilitar esta marca mientras realizas la migración.
android.dependency.useConstraints Controla el uso de restricciones de dependencia entre configuraciones.
El valor predeterminado en AGP 9.0 es false, que solo usa restricciones en las pruebas de dispositivos de la aplicación (AndroidTest). Si se establece en true, se volverá al comportamiento de la versión 8.13.
truefalse No uses restricciones de dependencia en todas partes, a menos que las necesites. Aceptar el nuevo valor predeterminado de esta marca también habilita optimizaciones en el proceso de importación del proyecto, lo que debería reducir el tiempo de importación de las compilaciones con muchos subproyectos de bibliotecas de Android.
aandroid.enableAppCompileTimeRClass Compila código en aplicaciones con una clase R no final, lo que alinea la compilación de la aplicación con la compilación de la biblioteca.
Esto mejora la incrementalidad y allana el camino para futuras optimizaciones del rendimiento en el flujo de procesamiento de recursos.
falsetrue Muchos proyectos pueden adoptar el nuevo comportamiento sin cambios en el código fuente. Si los campos de la clase R se usan en cualquier lugar que requiera una constante, como los casos de cambio, refactoriza para usar sentencias if encadenadas.
android.sdk.defaultTargetSdkToCompileSdkIfUnset Usa la versión del SDK de compilación como valor predeterminado para la versión del SDK de destino en apps y pruebas.
Antes de este cambio, la versión del SDK de destino se establecía de forma predeterminada en la versión del SDK mínimo.
falsetrue Especifica la versión del SDK de destino de forma explícita para las apps y las pruebas.
android.onlyEnableUnitTestForTheTestedBuildType Solo crea componentes de pruebas de unidades para el tipo de compilación probado.
En el proyecto predeterminado, esto genera una sola prueba de unidades para la depuración, mientras que el comportamiento anterior era ejecutar pruebas de unidades para la depuración o la versión.
falsetrue Si tu proyecto no requiere que se ejecuten pruebas para la versión de depuración y la de lanzamiento, no es necesario realizar ningún cambio.
android.proguard.failOnMissingFiles Si alguno de los archivos de conservación especificados en el DSL de AGP no existe en el disco, la compilación falla con un error. Antes de este cambio, los errores de escritura en los nombres de los archivos hacían que estos se ignoraran de forma silenciosa. falsetrue Quita las declaraciones de archivos ProGuard no válidas
android.r8.optimizedResourceShrinking Permite que R8 conserve menos recursos de Android, ya que considera las clases y los recursos de Android en conjunto. falsetrue Si las reglas de conservación de tu proyecto ya están completas, no es necesario que realices ningún cambio.
android.r8.strictFullModeForKeepRules Permite que R8 conserve menos elementos, ya que no conserva de forma implícita el constructor predeterminado cuando se conserva una clase. Es decir, -keep class A ya no implica -keep class A { <init>(); }
.
falsetrue Si las reglas de conservación de tu proyecto ya están completas, no es necesario que realices ningún cambio.

Reemplaza -keep class A por -keep class A { <init>(); } en las reglas de conservación de tu proyecto para los casos en los que necesites que se conserve el constructor predeterminado.
android.defaults.buildfeatures.shaders Habilita la compilación de sombreadores en todos los subproyectos. truefalse Habilita la compilación de sombreadores solo en los subproyectos que contengan sombreadores para compilar estableciendo lo siguiente en los archivos de compilación de Gradle de esos proyectos:
android {
  buildFeatures {
    shaders = true
  }
}

Funciones quitadas

El complemento de Android para Gradle 9.0 quita las siguientes funciones:

DSL cambiada

El complemento de Android para Gradle 9.0 incluye los siguientes cambios rotundos en el DSL:

Se quitó la DSL

El complemento de Android para Gradle 9.0 quita lo siguiente:

Se quitaron propiedades de Gradle

Inicialmente, las siguientes propiedades de Gradle se agregaron como formas de inhabilitar de manera global las funciones que estaban habilitadas de forma predeterminada.

Estas funciones están inhabilitadas de forma predeterminada desde AGP 8.0 o versiones anteriores. Habilita estas funciones solo en los subproyectos que las usen para lograr una compilación más eficiente.

Propiedad Función Reemplazo
android.defaults.buildfeatures.aidl Habilita la compilación de AIDL en todos los subproyectos. Habilita la compilación de AIDL solo en los subproyectos en los que haya fuentes de AIDL. Para ello, configura la siguiente propiedad en los archivos de compilación de Gradle de esos proyectos:
android {
  buildFeatures {
    aidl = true
  }
}
en el archivo de compilación de Gradle de cada subproyecto que contenga fuentes de AIDL
android.defaults.buildfeatures.renderscript Habilita la compilación de RenderScript en todos los subproyectos Habilita la compilación de RenderScript solo en los subproyectos en los que haya fuentes de RenderScript. Para ello, configura la siguiente propiedad en los archivos de compilación de Gradle de esos proyectos:
android {
  buildFeatures {
    renderScript = true
  }
}

APIs que se quitaron

El complemento de Android para Gradle 9.0 quita lo siguiente:

  • Las APIs de BaseExtension.registerTransform que quedaron obsoletas y se inhabilitaron, y que solo permanecieron para permitir la compilación con la versión más reciente de AGP mientras se segmentaba para ejecutarse en AGP 4.2 o versiones anteriores.

Propiedades de Gradle aplicadas

AGP 9.0 arroja un error si estableces las siguientes propiedades de Gradle.

El Asistente de actualización del complemento de Android para Gradle no actualizará los proyectos a la versión 9.0 del AGP que usen estas propiedades.

Propiedad Función
android.r8.integratedResourceShrinking La reducción de recursos ahora siempre se ejecuta como parte de R8, y se quitó la implementación anterior.