Android Studio 3.4 (abril de 2019)

Android Studio 3.4 es una actualización importante que incluye una variedad de nuevas características y mejoras.

3.4.2 (julio de 2019)

Esta actualización menor incluye diversas correcciones de errores y mejoras de rendimiento. Para ver una lista de las correcciones de errores más importantes, consulta la publicación relacionada en el blog de actualizaciones de versiones.

3.4.1 (mayo de 2019)

Esta actualización menor incluye diversas correcciones de errores y mejoras de rendimiento. Para ver una lista de las correcciones de errores más importantes, consulta la publicación relacionada en el blog de actualizaciones de versiones.

Errores conocidos de la versión 3.4.0

  • Se inhabilita la generación de perfiles cuando se implementa la app en un dispositivo con Android Q Beta.

  • Cuando se usa la biblioteca de vinculación de datos, LiveDataListener.onChanged() puede fallar con una NPE. Se incluirá una corrección para este problema en Android Studio 3.4.1 y ya está disponible en la versión preliminar más reciente de Android Studio 3.5 (consulta el error 122066788).

IntelliJ IDEA 2018.3.4

Se actualizó el IDE principal de Android Studio con mejoras de IntelliJ IDEA mediante la versión 2018.3.4.

Actualizaciones del complemento de Android para Gradle 3.4.0

Si quieres obtener información sobre las novedades del complemento de Android para Gradle 3.4.0, consulta las notas de la versión.

Nuevo Diálogo de estructura del proyecto

El nuevo Diálogo de estructura del proyecto (PSD) facilita la actualización de dependencias y la configuración de diferentes aspectos del proyecto, como los módulos, las variantes de compilación, las configuraciones de firma y las variables de compilación.

Puedes abrir el PSD seleccionando File > Project Structure en la barra de menú. También puedes abrir el PSD presionando Ctrl+Shift+Alt+S en Windows y Linux, o Command+; (punto y coma) en macOS. A continuación, encontrarás descripciones de algunas de las secciones nuevas y actualizadas del PSD.

Variables

La nueva sección de variables del PSD permite crear y administrar variables de compilación, como aquellas que posibilitan mantener la coherencia de los números de versión de las dependencias en todo el proyecto.

  • Consulta y edita de manera rápida las variables de compilación que ya existen en las secuencias de comandos de compilación de Gradle de tu proyecto.
  • Agrega nuevas variables de compilación en el nivel del proyecto o módulo directamente desde el PSD.

Nota: Si los archivos de configuración de compilación existentes asignan valores a través de secuencias de comandos complejas de Groovy, es posible que no puedas editar esos valores mediante el PSD. Además, no puedes editar archivos de compilación escritos en Kotlin con el PSD.

Módulos

Configura las propiedades que se aplican a todas las variantes de compilación en un módulo existente o agrega nuevos módulos al proyecto desde la sección Modules. Por ejemplo, aquí puedes configurar las propiedades de defaultConfig o administrar las configuraciones de firma.

Dependencias

Sigue estos pasos para inspeccionar y visualizar cada dependencia en el gráfico de dependencias del proyecto, tal como lo resolvió Gradle durante la sincronización del proyecto:

  1. En el panel izquierdo del PSD, selecciona Dependencies.
  2. En el panel Modules, selecciona el módulo que contenga las dependencias resueltas que quieras inspeccionar.
  3. A la derecha del PSD, abre el panel Resolved Dependencies (que se muestra a continuación).

También puedes buscar y agregar con rapidez dependencias a un proyecto. Para hacerlo, selecciona primero un módulo en la sección Dependencies del PSD, haz clic en el botón (+) en la sección Declared Dependencies y selecciona el tipo de dependencia que quieras agregar.

Según el tipo de dependencia que selecciones, debería aparecer un cuadro de diálogo similar al siguiente para que puedas agregar la dependencia al módulo.

Variantes de compilación

En esta sección del PSD, puedes crear y configurar variantes de compilación y de productos para cada módulo del proyecto. Puedes agregar marcadores de posición de manifiesto y archivos ProGuard, asignar claves de firma y mucho más.

Sugerencias

En la sección Suggestions, que se muestra a continuación, puedes consultar actualizaciones recomendadas para las dependencias del proyecto y las variables de compilación.

Nuevo administrador de recursos

El administrador de recursos es una nueva ventana de herramientas para importar, crear, administrar y usar recursos en tu app. Para abrir la ventana de herramientas, selecciona View > Tool Windows > Resource Manager en la barra de menú. El administrador de recursos permite hacer lo siguiente:

  • Visualizar recursos: Puedes obtener una vista previa de elementos de diseño, colores y diseños para encontrar rápidamente los recursos que necesitas.
  • Importar de forma masiva: Puedes importar varios elementos de diseño a la vez arrastrándolos y soltándolos en la ventana de herramientas de Resource Manager o utilizando el asistente Import Drawables. Para acceder al asistente, selecciona el botón (+) en la esquina superior izquierda de la ventana de herramientas y elige Import Drawables en el menú desplegable.
  • Convertir SVG en objetos VectorDrawable: Puedes usar el asistente Import Drawables para convertir las imágenes SVG en objetos VectorDrawable.
  • Arrastrar y soltar recursos: Desde la ventana de herramientas de Resource Manager, puedes arrastrar y soltar elementos de diseño en las vistas de diseño y XML del editor de diseño.
  • Ver versiones alternativas: Ahora, puedes ver versiones alternativas de los recursos haciendo doble clic en un recurso dentro de la ventana Tool. Esta vista permite ver las diferentes versiones que creaste y los calificadores que se incluyeron.
  • Vistas de mosaico y de lista: Puedes cambiar la vista dentro de la ventana de herramientas para visualizar los recursos de manera distinta.

Si deseas obtener más información, consulta la guía para administrar los recursos de la app.

Comprobación de los IDs de compilación a la hora de generar perfiles y depurar APKs

Cuando incluyes en tu APK archivos de símbolos de depuración para las bibliotecas compartidas .so, Android Studio comprueba que el ID de compilación de dichos archivos coincida con el de las bibliotecas .so dentro del APK.

Si compilas las bibliotecas nativas de tu APK con un ID de compilación, Android Studio comprobará que ese ID de los archivos de símbolos coincida con el de compilación de las bibliotecas nativas y rechazará los archivos de símbolos que no lo hagan. Si no usas un ID de compilación en el proceso, es posible que ocurran problemas de depuración si proporcionas archivos de símbolos incorrectos.

R8 habilitada de forma predeterminada

R8 integra en un solo paso los procesos de expansión de sintaxis, reducción, ofuscación, optimización y conversión a DEX, lo que mejora notablemente el rendimiento de las compilaciones. R8 se presentó en el complemento de Android para Gradle 3.3.0 y ahora está habilitada de forma predeterminada para proyectos de bibliotecas de apps y Android que utilicen el complemento 3.4.0 y versiones posteriores.

En la siguiente imagen, se proporciona una descripción general del proceso de compilación antes de la incorporación de R8.

Antes de R8, ProGuard era un paso de compilación independiente de la conversión a DEX y la expansión de sintaxis.

Con R8, ahora los procesos de expansión de sintaxis, reducción, ofuscación, optimización y conversión a DEX (D8) se completan en un único paso, como se muestra a continuación.

Con R8, la eliminación de accesos directos, la reducción, la ofuscación, la optimización y la conversión a DEX se llevan a cabo en un único paso de compilación.

Ten en cuenta que R8 se diseñó para trabajar con las reglas de ProGuard existentes, de modo que es probable que R8 funcione como corresponde sin necesidad de que realices ninguna acción. Sin embargo, dado que se trata de una tecnología diferente a la de ProGuard, diseñada específicamente para proyectos de Android, es posible que durante la reducción y la optimización se quite código que ProGuard no quitaría. Por lo tanto, en esta situación poco probable, quizás debas agregar reglas adicionales para mantener ese código en el resultado de la compilación.

Si tienes inconvenientes con el uso de R8, consulta las Preguntas frecuentes sobre la compatibilidad de R8 para comprobar si hay una solución a tu problema. Si no la hay, informa el error. Para inhabilitar R8, agrega una de las siguientes líneas al archivo gradle.properties de tu proyecto:

    # Disables R8 for Android Library modules only.
    android.enableR8.libraries = false
    # Disables R8 for all modules.
    android.enableR8 = false
    
  

Nota: Para un tipo de compilación determinado, si configuras useProguard en false en el archivo build.gradle del módulo de la app, el complemento de Android para Gradle usará R8 a fin de reducir el código de la app para ese tipo de compilación, independientemente de si inhabilitas R8 en el archivo gradle.properties del proyecto.

Todos los tipos de argumentos que admite el componente Navigation ahora se admiten en el editor de Navigation. Si deseas obtener más información sobre qué tipos se admiten, consulta Cómo pasar datos entre destinos.

Mejoras en el editor de diseño {:#layout-editor}

El panel Attributes en el editor de diseño se simplificó en una sola página con secciones que se expanden para ver los atributos que puedes configurar. El panel Attributes también incluye las siguientes actualizaciones:

  • Una nueva sección llamada Declared Attributes que incluye los atributos que especifica el archivo de diseño y permite agregar rápidamente otros nuevos.
  • El panel Attributes ahora también presenta indicadores junto a cada atributo que están rellenos cuando el valor del atributo es una referencia de recursos y vacíos en los demás casos.
  • Los atributos con errores o advertencias ahora están resaltados en rojo si tienen errores (por ejemplo, cuando usas valores de diseño no válidos) y en naranja si hay advertencias (por ejemplo, cuando usas valores hard-coded).

Nueva acción de intent para importar dependencias rápidamente

Si comienzas a usar ciertas clases de Jetpack y Firebase en tu código, una nueva acción de intent sugiere agregar la dependencia de la biblioteca de Gradle requerida a tu proyecto si todavía no lo hiciste. Por ejemplo, si incluyes una referencia a la clase WorkManager sin importar antes la dependencia android.arch.work:work-runtime requerida, una acción de intent te permite hacerlo con facilidad con un solo clic, tal como se muestra a continuación.

Más específicamente, debido a que Jetpack modificó y volvió a empaquetar la biblioteca de compatibilidad en paquetes discretos que son más fáciles de administrar y actualizar, esta acción de intent te ayuda a agregar de manera rápida solo las dependencias que necesitas para los componentes de Jetpack que quieres usar.