Complemento de Android para Gradle 3.1.0 (marzo de 2018)

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

  • Gradle 4.4 o una versión posterior

    (si deseas obtener más información, consulta la sección que abarca cómo actualizar Gradle)

  • Herramientas de compilación 27.0.3 o una versión posterior

    (ten en cuenta que ya no es necesario especificar una versión para las herramientas de compilación mediante la propiedad android.buildToolsVersion, ya que el complemento usa la versión mínima requerida de forma predeterminada)

Compilador de DEX nuevo, D8

De forma predeterminada, Android Studio ahora usa un compilador de DEX nuevo denominado D8. La compilación de DEX es el proceso de transformar el código de bytes .class en .dex para Android Runtime (o Dalvik, para las versiones anteriores de Android). En comparación con el compilador anterior, denominado DX, D8 compila más rápido y genera archivos DEX más pequeños. Además, mantiene el mismo rendimiento de tiempo de ejecución de la app o lo mejora.

D8 no debería modificar el flujo de trabajo diario de desarrollo de apps. Sin embargo, si tienes problemas relacionados con el compilador nuevo, informa el error. Puedes inhabilitar D8 de forma temporal y usar DX incluyendo lo siguiente en el archivo gradle.properties del proyecto:

      android.enableD8=false
    

En el caso de los proyectos que usan funciones del lenguaje Java 8, la expansión incremental de sintaxis de accesos directos está habilitada de forma predeterminada. Para inhabilitarla, especifica lo siguiente en el archivo gradle.properties de tu proyecto:

      android.enableIncrementalDesugaring=false.
    

Usuarios de la versión preliminar: Si ya usas una versión preliminar de D8, ten en cuenta que ahora se compila en función de las bibliotecas incluidas en las herramientas de compilación del SDK, no el JDK. Por lo tanto, si accedes a las APIs que existen en el JDK, pero no a las bibliotecas de herramientas de compilación del SDK, verás un error de compilación.

Cambios de comportamiento

  • Cuando compilas varios APKs orientados a una ABI diferente, el complemento ya no genera APKs para las siguientes ABI de forma predeterminada: mips, mips64 y armeabi.

    Para compilar un APK que se oriente a esas ABI, usa NDK r16b o una versión anterior, y especifica las ABI en el archivo build.gradle, como se muestra a continuación:

              splits {
                  abi {
                      include 'armeabi', 'mips', 'mips64'
                      ...
                  }
              }
            
              splits {
                  abi {
                      include("armeabi", "mips", "mips64")
                      ...
                  }
              }
            
  • La caché de compilación del complemento para Android ahora desaloja las entradas de caché que tienen más de 30 días.

  • Cuando pasas "auto" a resConfig, ya no se seleccionan automáticamente los recursos de strings para empaquetar en el APK. Si continuas usando "auto", el complemento empaqueta todos los recursos de strings que proporcionan la app y sus dependencias. Por lo tanto, en su lugar, debes especificar cada configuración regional que quieras que el complemento empaquete en el APK.

  • Debido a que los módulos locales no pueden depender del APK de prueba de tu app, agregar dependencias a tus pruebas instrumentadas mediante la configuración de androidTestApi, en lugar de androidTestImplementation, provoca que Gradle emita la siguiente advertencia:

            WARNING: Configuration 'androidTestApi' is obsolete
            and has been replaced with 'androidTestImplementation'
            
            WARNING: Configuration 'androidTestApi' is obsolete
            and has been replaced with 'androidTestImplementation'
            

Correcciones

  • Se corrige el error por el que Android Studio no reconoce correctamente las dependencias en compilaciones compuestas.
  • Se corrige el error que consiste en mostrar un error de sincronización de proyecto cuando se carga el complemento para Android varias veces en una única compilación (por ejemplo, cuando varios subproyectos incluyen el complemento para Android en la ruta de la clase buildscript).