Complemento de Android para Gradle 8.1.0 (julio de 2023)

El complemento de Android para Gradle 8.1.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 33.0.1 33.0.1 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.

DSL de Kotlin es el predeterminado para la configuración de compilación

Los proyectos nuevos ahora usan el DSL de Kotlin (build.gradle.kts) de forma predeterminada para la configuración de compilación. Esto ofrece una mejor experiencia de edición que la DSL de Groovy (build.gradle) con resaltado de sintaxis, finalización de código y navegación a declaraciones. Ten en cuenta que, si usas AGP 8.1 y el DSL de Kotlin para la configuración de compilación, debes usar Gradle 8.1 para obtener la mejor experiencia. Para obtener más información, consulta la guía de migración de DSL de Kotlin.

Compatibilidad automática de idioma de las apps

A partir de Android Studio Giraffe Canary 7 y AGP 8.1.0-alpha07, puedes configurar tu app para que admita automáticamente las preferencias de idioma de las apps. En función de los recursos de tu proyecto, el complemento de Android para Gradle genera el archivo LocaleConfig y le agrega una referencia en el archivo de manifiesto final, por lo que ya no tienes que hacerlo de forma manual. AGP usa los recursos de las carpetas res de los módulos de tu app y las dependencias de módulos de biblioteca para determinar las configuraciones regionales que se incluirán en el archivo LocaleConfig.

Ten en cuenta que la función automática de idioma de las apps admite apps que ejecutan Android 13 (nivel de API 33) o versiones posteriores. Para usar la función, debes establecer compileSdkVersion en 33 o un valor superior. Para configurar las preferencias de idioma de las apps en versiones anteriores de Android, debes usar las APIs y los selectores de idioma integrados en la app.

Para habilitar la compatibilidad automática de idioma de las apps, especifica una configuración regional predeterminada:

  1. En la carpeta res del módulo de la app, crea un archivo nuevo llamado resources.properties.
  2. En el archivo resources.properties, establece la configuración regional predeterminada con la etiqueta unqualifiedResLocale. Para formar los nombres de configuración regional, combina el código de idioma con la secuencia de comandos opcional y los códigos regionales, y separa cada uno con un guion:

    • Idioma: Usa el código ISO 639-1 de dos o tres letras.
    • Secuencia de comandos (opcional): Usa el código ISO 15924.
    • Región (opcional): Usa el código ISO 3166-1-alpha-2 de dos letras o el código UN_M.49 de tres dígitos.

    Por ejemplo, si tu configuración regional predeterminada es Inglés (Estados Unidos):

        unqualifiedResLocale=en-US
        

AGP agrega esta configuración regional predeterminada y todas las configuraciones regionales alternativas que especificaste, con directorios values-* en la carpeta res, al archivo LocaleConfig generado automáticamente.

La compatibilidad automática de idioma de las apps está desactivada de forma predeterminada. Para activar la función, usa la configuración generateLocaleConfig en el bloque androidResources {} del archivo build.gradle.kts del módulo (archivo build.gradle si usas Groovy):

Kotlin

android {
  androidResources {
    generateLocaleConfig = true
  }
}

Groovy

android {
  androidResources {
    generateLocaleConfig true
  }
}

Android Lint contiene código de bytes orientado a JVM 17

A partir de AGP 8.1.0-alpha04, Android Lint incluye código de bytes orientado a la JVM 17. Si escribes comprobaciones de lint personalizadas, debes compilar con JDK 17 o versiones posteriores y especificar jvmTarget = '17' en las opciones del compilador de Kotlin.

Para obtener más información sobre la herramienta lint, consulta Cómo mejorar tu código con controles de lint.

Se trasladó la configuración de compresión de la biblioteca nativa a DSL

A partir de AGP 8.1.0-alpha10, recibirás una advertencia si no configuras la compresión de bibliotecas nativas usando el DSL en lugar del manifiesto. En la siguiente guía, se explica cómo actualizar la configuración para usar el DSL. Para obtener ayuda para realizar estas actualizaciones, usa el Asistente de actualización del AGP (Herramientas > Asistente de actualización del AGP).

Para usar bibliotecas nativas sin comprimir, quita el atributo android::extractNativeLibs del manifiesto y agrega el siguiente código al archivo build.gradle.kts a nivel del módulo (archivo build.gradle si usas Groovy):

Kotlin

android {
  packagingOptions {
    jniLibs {
      useLegacyPackaging = false
    }
  }
}

Groovy

android {
  packagingOptions {
    jniLibs {
      useLegacyPackaging false
    }
  }
}

Marcas de compilación experimentales

Estas son marcas experimentales para configurar tu compilación disponibles en AGP 8.1.

Marca Se agregó en Valor predeterminado Notas
android.experimental.useDefaultDebugSigningConfigForProfileableBuildtypes AGP 8.0 false Habilitar esta opción sin configuraciones de firma especificadas hace que AGP use la configuración de firma de depuración predeterminada cuando ejecute una compilación perfilable o depurable. Esta marca está inhabilitada de forma predeterminada para que los autores de compilaciones declaren configuraciones de firma de generación de perfiles específicas.
android.experimental.library.desugarAndroidTest AGP 8.0 false Esta marca permite que los compiladores de bibliotecas habiliten la expansión de sintaxis de la biblioteca principal para los APKs de prueba sin afectar el AAR generado, por ejemplo, a través del análisis con lint. Planeamos admitir este comportamiento en la API de Variant en algún momento.
android.experimental.testOptions.managedDevices.customDevice AGP 8.0 false Si se habilitan, los dispositivos administrados por Gradle permiten un tipo de dispositivo personalizado definido por el usuario que puede proporcionar un complemento. Esta marca debe estar habilitada si quieres usar el complemento de Firebase Test Lab.
android.lint.printStackTrace AGP 8.0 false Si se habilita esta opción, la herramienta lint de Android imprime un seguimiento de pila si falla. Esta marca tiene las mismas capacidades que la variable de entorno LINT_PRINT_STACKTRACE.
android.experimental.testOptions.managedDevices.maxConcurrentDevices AGP 8.0 Ninguno Especifica la cantidad máxima de dispositivos administrados por Gradle (AVD) simultáneos que estarán activos en cualquier momento. Si el valor es 0 o negativo, no hay una cantidad máxima de dispositivos.
android.experimental.testOptions.installApkTimeout AGP 8.0 Ninguno Es la duración del tiempo de espera en segundos para instalar un APK. Si el valor es 0 o negativo, la UTP lo establecerá en un valor predeterminado.