El complemento de Android para Gradle 8.0.0 es una actualización importante que incluye una variedad de nuevas funciones y mejoras.
Compatibilidad
Versión mínima | Versión predeterminada | Notas | |
---|---|---|---|
Gradle | 8.0 | 8.0 | Para obtener más información, consulta cómo actualizar Gradle. |
Herramientas de desarrollo del SDK | 30.0.3 | 30.0.3 | Instala o configura las herramientas de compilación del SDK. |
NDK | N/A | 25.1.8937393 | 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. |
Versiones de parches
La siguiente es una lista de las versiones de parche para el complemento de Android para Gradle 8.0.
Complemento de Android para Gradle 8.0.2 (mayo de 2023)
Para ver una lista de los errores corregidos en AGP 8.0.2, consulta los problemas cerrados de Android Studio 2022.2.1.
Complemento de Android para Gradle 8.0.1 (mayo de 2023)
Esta actualización menor incluye las siguientes correcciones de errores:
Errores corregidos | |
---|---|
Error: "No VersionRequirement with the given id in the table" después de actualizar AGP de 7.2.2 a 7.4.0.
|
|
R8 NullPointerException en MarkTypeAsLive AGP 7.4.1.
|
|
[R8 4.0.53] Falla de la verificación de la clase estricta en Android 11.
|
Cambio intercalado: Se requiere un espacio de nombres en la secuencia de comandos de compilación a nivel del módulo
Debes establecer el espacio de nombres en el archivo build.gradle.kts
a nivel del módulo, en lugar del archivo de manifiesto. Puedes comenzar a usar la propiedad del DSL namespace
a partir de AGP 7.3. Para obtener más información, consulta Configura un espacio de nombres.
Cuando migres al DSL de espacio de nombres, ten en cuenta los siguientes problemas:
- En algunos casos, las versiones anteriores de AGP infieren de forma incorrecta el espacio de nombres de la prueba a partir del espacio de nombres principal o el ID de la aplicación. El asistente para la actualización de AGP bloquea la actualización si detecta que el espacio de nombres principal y el espacio de nombres de prueba de tu proyecto son iguales. Si se bloquea la actualización, debes cambiar
testNamespace
de forma manual y modificar el código fuente según corresponda. - Después de cambiar el espacio de nombres de la prueba, es posible que tu código se compile, pero que las pruebas instrumentadas fallen durante el tiempo de ejecución. Esto puede suceder si el código fuente de la prueba instrumentada hace referencia a un recurso definido en las fuentes de
androidTest
y de la app.
Para obtener más información, consulta el comentario #19 del problema #191813691.
Cambios rotundos: Valores predeterminados de las opciones de compilación
A partir de AGP 8.0, los valores predeterminados de estas marcas cambiaron para mejorar el rendimiento de la compilación. Para obtener ayuda para ajustar tu código y admitir algunos de estos cambios, usa el Asistente de actualización del AGP (Herramientas > Asistente de actualización del AGP). El Asistente de actualización te guía para actualizar tu código y adaptarlo al nuevo comportamiento o establecer marcas para conservar el comportamiento anterior.
Marca | Nuevo valor predeterminado | Valor predeterminado anterior | Notas |
---|---|---|---|
android.defaults.buildfeatures.buildconfig |
false |
true |
AGP 8.0 no genera BuildConfig de forma predeterminada. Debes especificar esta opción con el DSL en los proyectos en los que la necesites. |
android.defaults.buildfeatures.aidl |
false |
true |
AGP 8.0 no habilita la compatibilidad con AIDL de forma predeterminada. Debes especificar esta opción con el DSL en los proyectos en los que la necesites. Se planea quitar esta marca en AGP 9.0. |
android.defaults.buildfeatures.renderscript |
false |
true |
AGP 8.0 no habilita la compatibilidad con RenderScript de forma predeterminada. Debes especificar esta opción con el DSL en los proyectos en los que la necesites. Se planea quitar esta marca en AGP 9.0. |
android.nonFinalResIds |
true |
false |
AGP 8.0 genera clases R con campos no finales de forma predeterminada. |
android.nonTransitiveRClass |
true |
false |
AGP 8.0 genera clases R solo para los recursos definidos en el módulo actual. |
android.enableR8.fullMode |
true |
false |
AGP 8.0 habilita el modo completo de R8 de forma predeterminada. Para obtener más detalles, consulta Modo completo de R8. |
Cambios rotundos: Se aplicaron valores de opciones de compilación
A partir de AGP 8.0, ya no puedes cambiar los valores de estas marcas. Si los especificas en el archivo gradle.properties
, se ignorará el valor y AGP imprimirá advertencias.
Marca | Valor aplicado | Notas |
---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
AGP 8.0 emite una advertencia si detecta la resolución de la configuración durante la fase de configuración, ya que afecta negativamente los tiempos de configuración de Gradle. |
android.r8.failOnMissingClasses |
true |
AGP 8.0 falla en las compilaciones que usan R8 si faltan clases para garantizar una mejor optimización de DEX. Para solucionar este problema, debes agregar las bibliotecas faltantes o las reglas de conservación de -dontwarn . Para obtener más detalles, consulta Advertencias de clases faltantes en el reductor R8. |
android.testConfig.useRelativePath |
true |
Cuando se habilita la compatibilidad para usar recursos, activos y manifiestos de Android en pruebas de unidades, AGP 8.0 genera un archivo test_config.properties que contiene solo rutas de acceso relativas. Esto garantiza que las pruebas de unidades de Android siempre puedan usar la caché de compilación de Gradle. |
android.useNewJarCreator |
true |
AGP usa la biblioteca Zipflinger cuando crea archivos JAR para mejorar el rendimiento de la compilación. |
android.bundletool.includeRepositoriesInDependencyReport |
true |
Cuando se habilita la opción para agregar información de dependencia del SDK en los AAB y APK, AGP 8.0 también agrega una lista de repositorios del proyecto a esta información. Para obtener más información, consulta Información de dependencias de Play Console. |
android.enableArtProfiles |
true |
Ahora, los perfiles de Baseline siempre se generan. Consulta Perfiles de Baseline para obtener más información. |
android.enableNewResourceShrinker |
true |
Usa la nueva implementación del reductor de recursos de forma predeterminada. El nuevo reductor de recursos incluye compatibilidad con las funciones dinámicas. |
android.enableSourceSetPathsMap |
true |
Se usa para calcular las asignaciones de rutas de acceso relativas a los recursos, de modo que las compilaciones de Gradle estén actualizadas con mayor frecuencia. |
android.cacheCompileLibResources |
true |
Ahora los recursos de biblioteca compilados se pueden almacenar en caché de forma predeterminada porque Gradle realiza un seguimiento de los archivos de recursos en relación con la ubicación del proyecto. Requiere que se habilite android.enableSourceSetPathsMap . |
android.disableAutomaticComponentCreation |
true |
AGP 8.0 no crea ningún SoftwareComponent de forma predeterminada. En cambio, AGP crea SoftwareComponents solo para las variantes que se configuran para publicarse con el DSL de publicación. |
Nueva marca estable para el perfil de ejecución
AGP incluye la nueva marca android.settings.executionProfile
. Usa esta marca para anular el perfil de ejecución predeterminado de SettingsExtension
.
Para obtener más información, consulta la documentación del complemento de configuración.
Para obtener una vista previa de las marcas experimentales, consulta las notas de la versión preliminar.
No se admite la asignación de propiedades diferidas de Kotlin
Si usas el DSL de Kotlin de Gradle para tus secuencias de comandos de compilación, ten en cuenta que Android Studio y AGP 8.0 no admiten la asignación de propiedades experimentales con el operador =
. Para obtener más información sobre esta función, consulta las notas de la versión y la documentación.
Categorías de tareas de Build Analyzer
A partir de Android Studio Flamingo, Build Analyzer tiene una nueva vista predeterminada para las tareas que afectan la duración de la compilación. Si tu proyecto usa AGP 8.0 o una versión posterior, en lugar de mostrar las tareas de forma individual, Build Analyzer las agrupa por categoría. Por ejemplo, las tareas específicas de los recursos de Android, Kotlin o Dexing se agrupan y, luego, se ordenan según la duración de la compilación. Esto facilita saber qué categoría tiene el mayor impacto en el tiempo de compilación. Si expandes cada categoría, se mostrará una lista de las tareas correspondientes. Para mostrar las tareas de forma individual, sin agruparlas, usa el menú desplegable Agrupar por.
Nuevo complemento de configuración
AGP 8.0.0-alpha09 presenta el nuevo complemento de configuración. El complemento de configuración te permite centralizar las configuraciones globales (las que se aplican a todos los módulos) en un solo lugar para que no tengas que copiar y pegar las configuraciones en varios módulos. Además, puedes usar el complemento de configuración para crear perfiles de ejecución de herramientas o diferentes instrucciones para ejecutar una herramienta, y cambiar entre ellos.
Para usar el complemento de configuración, aplícalo en el archivo settings.gradle
:
apply plugin 'com.android.settings'
Centraliza la configuración global
Para configurar parámetros de configuración globales, usa el nuevo bloque android
en el archivo settings.gradle
. Por ejemplo:
android {
compileSdk 31
minSdk 28
...
}
Perfiles de ejecución de herramientas
El complemento de configuración también te permite crear perfiles de ejecución para algunas herramientas. Un perfil de ejecución determina cómo se ejecuta una herramienta. Puedes seleccionar diferentes perfiles de ejecución según el entorno. En un perfil de ejecución, puedes establecer argumentos de JVM para una herramienta y configurarla para que se ejecute en un proceso independiente. Actualmente, solo se admite la herramienta R8.
Crea perfiles de ejecución y configura el perfil de ejecución predeterminado en el archivo settings.gradle
, como se muestra en el siguiente ejemplo:
android {
execution {
profiles {
high {
r8 {
jvmOptions += ["-Xms2048m", "-Xmx8192m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
low {
r8 {
jvmOptions += ["-Xms256m", "-Xmx2048m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
ci {
r8.runInSeparateProcess false
}
}
defaultProfile "low"
}
}
Para anular el perfil predeterminado, selecciona otro perfil con la propiedad android.experimental.settings.executionProfile
en el archivo gradle.properties
:
android.experimental.settings.executionProfile=high
También puedes establecer esta propiedad con la línea de comandos, lo que te permite configurar diferentes flujos de trabajo. Por ejemplo, si tienes un flujo de trabajo de integración continua, puedes usar la línea de comandos para cambiar el perfil de ejecución sin tener que cambiar el archivo settings.gradle
:
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
Se requiere JDK 17 para ejecutar AGP 8.0
Cuando usas el complemento de Android para Gradle 8.0 para compilar tu app, ahora se requiere JDK 17 para ejecutar Gradle. Android Studio Flamingo incluye JDK 17 y configura Gradle para usarlo de forma predeterminada, lo que significa que la mayoría de los usuarios de Android Studio no necesitan hacer cambios de configuración en sus proyectos.
Si necesitas configurar manualmente la versión de JDK que usa AGP dentro de Android Studio, debes usar JDK 17 o una versión posterior.
Cuando uses AGP independientemente de Android Studio, actualiza la versión de JDK configurando la variable de entorno JAVA_HOME
o la opción de línea de comandos -Dorg.gradle.java.home
en el directorio de instalación de JDK 17.
Errores corregidos
Complemento de Android para Gradle 8.0.0
Errores corregidos | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Complemento de Android para Gradle |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dexer (D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Integración de lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Reductor (R8) |
|
Complemento de Android para Gradle 8.0.1
Errores corregidos | ||||
---|---|---|---|---|
Reductor (R8) |
|
Complemento de Android para Gradle 8.0.2
Errores corregidos | |||||
---|---|---|---|---|---|
Reductor (R8) |
|