Complemento de Android para Gradle 8.2.0 (noviembre de 2023)

El complemento de Android para Gradle 8.2.0 es una actualización importante que incluye una variedad de nuevas funciones y mejoras.

Compatibilidad

El nivel de API máximo que admite el complemento de Android para Gradle 8.2 es el nivel de API 34. Aquí tienes más información sobre la compatibilidad:

Versión mínima Versión predeterminada Notas
Gradle 8.2 8.2 Para obtener más información, consulta cómo actualizar Gradle.
Herramientas de desarrollo del SDK 34.0.0 34.0.0 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.

Nueva macro para especificar la ruta de acceso de JDK

#GRADLE_LOCAL_JAVA_HOME es una macro nueva que puedes usar para especificar la ruta de acceso de JDK. De esta manera, es más sencillo y seguro especificar la ruta de acceso principal de Java que se usa para la ejecución del daemon de Gradle (proceso en segundo plano) de tu proyecto. La selección de la ruta se almacena en el campo java.home del archivo .gradle/config.properties. Establece este campo a través de la configuración de Gradle JDK en Android Studio: File (o Android Studio en macOS) > Settings > Build, Execution, Deployment > Build Tools > Gradle.

Los proyectos nuevos usarán #GRADLE_LOCAL_JAVA_HOME de forma predeterminada. Los proyectos existentes se migrarán, automáticamente, a la macro nueva después de una sincronización correcta, a menos que ya uses una macro como #JAVA_HOME.

Los beneficios principales de la nueva macro son los siguientes:

  • Puedes modificar, de forma manual, la ruta de acceso de JDK para activar la sincronización sin abrir tu proyecto primero.
  • Menos errores relacionados con versiones incompatibles de Gradle y de JDK del proyecto, ya que existe una única fuente de información para tu selección de Gradle JDK.

Errores corregidos

Complemento de Android para Gradle 8.2.0

Errores corregidos
Complemento de Android para Gradle
Los tipos de fuentes personalizadas deben crear conjuntos de orígenes de varios tipos
La verificación de versión del SDK no controla a los usuarios de las extensiones del SDK
DependenciesInfoBuilder necesita la actualización y el documento de la API.
DexingNoClasspathTransform (minSdk >= 24) orientado a Java 11 falla debido a que faltan miembros anidados
DslExtension.Builder.extendProjectWith() no funciona como se describe en Groovy
Se agregó la API de VariantSelector.withFlavor que no usa kotlin.Pair
AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) tiene un error de caché porque "proguard.txt" cambió
El manifiesto combinado de la app contiene atributos extractNativeLibs y useEmbedDex de dependencias
El AIDL falla con las herramientas de compilación 33.0.0
AGP: Se expuso la ruta de acceso a la herramienta de AIDL y al archivo de framework de AIDL como una API pública
Solicitud: permite que el IDE ofrezca una corrección para "PermittedSubclasses requires ASM9".
Código de bytes objetivo 17 cuando se compila el AGP
Se quita VariantManager.getModifiedName.
AndroidTest.packaging.jniLibs.keepDebugSymbols no afecta el empaquetado de androidTest.
Las tareas de prueba de instrumentación de GMD se demoran y comienzan a fallar con reintentos.
generateLocaleConfig in agp 8.1.0 usa el orden no determinista e interrumpe las compilaciones reproducibles.
ProcessApplicationManifest.navigationJsons tiene archivos con rutas de acceso absolutas.
No se permite el acceso a GradleBuildProject.Builder a través de AnalyticsConfiguratorService después de crear AnalyticsService.
AndroidTest.packaging.jniLibs.keepDebugSymbols no afecta el empaquetado de androidTest.
Se permite la compilación de valores de color no permitidos.
"ReplaceWith" incorrecto para VariantBuilder.
Gradle 8.1 interrumpe el almacenamiento en caché de la configuración debido a .gradle/.android/analytics.settings.
Los mensajes de baja no usan "ReplaceWith".
Se expone un método para obtener la versión predeterminada del NDK.
El complemento de Android para Gradle requiere Java 17 para ejecutarse.
Incompatibilidad de ASM Transform y toAttach().
Se corrige LintErrors cuando se ejecuta lint con K2 UAST a través de Gradle en un proyecto de KMP.
Se agregó compatibilidad con missingDimensionStrategy a nivel de variantes y, posiblemente, con matchingFallback de tipo de compilación/variedad.
Se quitó "android.injected.studio.version" en Android Studio Giraffe.
Se agrega la capacidad de inhabilitar AndroidXDependencyCheck.
generateLocaleConfig in agp 8.1.0 usa el orden no determinista e interrumpe las compilaciones reproducibles.
Se anuncian los requisitos de la versión R8 y D8 en los metadatos de AAR (p. ej., para coreLibraryDesugaring y las nuevas APIs fuera de línea).
Advertencia de sincronización: "No se debe acceder a GradleBuildProject.Builder a través de AnalyticsConfiguratorService después de crear AnalyticsService".
Se actualiza a un hito de Gradle 8.2 o a RC.
No se puede acceder a "java.lang.Comparable".
androidResources no está disponible en el módulo de la biblioteca de Android.
Se produce un fallo en la ejecución de ':app:mergeReleaseClasses' después de actualizar AGP de 8.0.2 a 8.1.0.
Gradle 8.1 interrumpe el almacenamiento en caché de la configuración debido a .gradle/.android/analytics.settings.
[AGP 8.1.0] La prueba ./gradlew falla y muestra el mensaje de que no se pudo encontrar el resultado del manifiesto si tanto splits.abi.isEnable como testOptions.unitTests.isIncludeAndroidResources son verdaderos.
Android Studio Giraffe no respeta versionCodeOverride con AGP 8.1.
AGP 8.1.0 desinstala la app después de ejecutar pruebas de instrumentación; la versión 7.4.2 no la desinstala.
La transformación de un APK genera un error con ListingFileRedirectTask.
REGRESIÓN DE HEDGEHOG: El botón para ejecutar tiene una demora de unos segundos (creando las especificaciones).
Dexer (D8)
Se habilita el registro nativo y las clases selladas durante la conversión a DEX para min-api 34 y niveles superiores.
Lint
La comprobación de creación de instancias con lint no controla bien AppComponentFactory
Las versiones alfa de Lint 8.2.0 aún no admiten importaciones de funciones de nivel superior en Kotlin.
Se agrega una opción para no incluir números de líneas y columnas en el modelo de referencia de lint.
Se agrega una opción para no incluir números de líneas y columnas en el modelo de referencia de lint.
Las pruebas de lint no son compatibles con las funciones del lenguaje Java 17.
El parche 1 de Bumblebee 2021.1.1 indica que una versión antigua (20030203.000550) de Commons-I es más reciente que la 2.11.0.
Las versiones alfa de Lint 8.2.0 aún no admiten importaciones de funciones de nivel superior en Kotlin.
El parche 1 de Bumblebee 2021.1.1 indica que una versión antigua (20030203.000550) de Commons-I es más reciente que la 2.11.0.
Android Studio marca de forma incorrecta la versión que se especificó como desactualizada.
Lint ignora el problema de UseValueOf cuando se usa UAST K2.
Problemas inesperados de otro proyecto que marcó Android Lint.
Android Lint falla en una biblioteca KMP con el mensaje de que la propiedad variantInputs.name no tiene un valor configurado.
Integración de lint
Error de lint DuplicatePlatformClasses de la dependencia testImplementation.
Reductor (R8)
java.lang.VerifyError: El verificador rechaza la clase.
La compilación se bloquea en :minifyReleaseWithR8 cuando se usa la biblioteca de Apache POI.
Kotlin 1.9 hace que R8 destruya las lambdas de Kotlin si se quitan las verificaciones nulas.

Complemento de Android para Gradle 8.2.1

Errores corregidos
Complemento de Android para Gradle
No ejecutes la tareas de conversión a dex en clases de subproyectos cuando ya se hayan convertido a través de transformaciones de artefactos
El complemento de Android para Gradle fallaba con JavaVersion.VERSION_11 y OpenJDK 21 ea
Dexer (D8)
Expande la sintaxis de los registros para Android U
Reductor (R8)
R8 genera un archivo DEX dañado, lo que arroja una excepción de transmisión de clase en el tiempo de ejecución
R8 causa que la interfaz se cambie a inaccesible
El SDK de Flurry R8 falla con AGP 8.2.0
Android: R8 hace que falle la subclase de LinearLayoutManager
ClassCastException en R8 cuando la modificación y el reempaquetado están activados, y la reducción, la ofuscación y la optimización están desactivadas
R8 se atascó en BridgeAnalyzer.analyzeMethod
R8 v8.2.33: Falla del entorno de ejecución "java.lang.VerifyError: Bad type on operand stack" después de la actualización

Complemento de Android para Gradle 8.2.2

Errores corregidos
Complemento de Android para Gradle
No se puede establecer la versión de JaCoCo en AGP 8.2.0.
Dexer (D8)
[Biblioteca de expansión de sintaxis] La versión 2.1 de la biblioteca con expansión de sintaxis no es compatible con versiones anteriores de R8.
¿Se pueden ejecutar optimizaciones solo con D8?
Reductor (R8)
[R8 8.3.21] R8 8.3.21 es 1.57 MB más grande que R8 8.1.56.
La función class.getInterfaces() muestra un valor vacío.