Android Studio 3.1 (marzo de 2018)

Android Studio 3.1.0 es una actualización importante que incluye una variedad de funciones y mejoras nuevas.

3.1.4 (agosto de 2018)

Esta actualización de Android Studio 3.1 incluye los cambios y las correcciones que figuran a continuación:

  • La versión de Kotlin del paquete ahora es 1.2.50.
  • Los proyectos nuevos se crean con los kotlin-stdlib-jdk* artifacts, en lugar de los artefactos kotlin-stdlib-jre*, que ya no están disponibles.
  • Se mejoró el análisis de R8 de las reglas de ProGuard.
  • Se corrigieron los siguientes errores:
    • Cuando se intentaba ejecutar la clase principal de Kotlin, el proceso se interrumpía con el error "Error: Could not find or load main class..."
    • R8 ingresaba en un bucle infinito cuando se realizaban determinadas optimizaciones.
    • El uso del comando Rerun failed tests en la ventana Run mostraba de forma incorrecta el mensaje "No tests were found" en algunas ocasiones.
    • D8 no administraba correctamente instancias invoke-virtual, lo que provocaba una falla con el error VerifyError: invoke-super/virtual can't be used on private method
    • El compilador de vinculación de datos dependía de una versión anterior de com.android.tools:annotations. Ahora, usa anotaciones de herramientas del proyecto base cuando están disponibles.
    • Android Studio fallaba durante las transiciones de fragmentos cuando usaba generadores de perfiles.
    • El depurador fallaba cuando se depuraba un diseño con un cuadro de texto.
    • D8 no leía algunos archivos ZIP con caracteres especiales.

3.1.3 (junio de 2018)

Esta actualización de Android Studio 3.1 incluye correcciones para los siguientes errores:

  • Las fugas de memoria que hacían que Android Studio se volviera lento y no respondiera después de haber utilizado el editor de diseño. Esta actualización incluye soluciones para la mayoría de estos problemas. Tenemos previsto publicar otra actualización pronto para abordar las demás fugas de memoria.
  • Algunas apps creadas con D8 fallaban en algunas tablets Verizon Ellipsis.
  • La instalación de apps creadas con D8 fallaba con el error INSTALL_FAILED_DEXOPT en dispositivos con Android 5.0 o 5.1 (nivel de API 21 o 22).
  • Algunas apps que utilizaban la biblioteca OkHttp y se habían creado con D8 se bloqueaban en dispositivos con Android 4.4 (API nivel 19).
  • A veces, Android Studio no se iniciaba y ocurría una ProcessCanceledException durante la inicialización de la clase de com.intellij.psi.jsp.JspElementType.

3.1.2 (abril de 2018)

Esta actualización de Android Studio 3.1 incluye correcciones para los siguientes errores:

  • En algunos casos, Android Studio se bloqueaba indefinidamente al salir.
  • Las compilaciones configuradas con conjuntos de fuentes fallaban y aparecía el siguiente mensaje cuando estaba habilitado Instant Run:

    "The SourceSet name is not recognized by the Android Gradle Plugin."

  • Cuando Instant Run estaba habilitado, las compilaciones de nuevos proyectos de Kotlin fallaban cuando se activaban con el comando Run.
  • Durante la edición del archivo build.gradle, a veces ocurría un retraso notable entre el momento de escribir un carácter y el momento en que aparecía en la pantalla.
  • Ocurrían fallas de compilación durante la conversión a DEX en algunos proyectos con un gran número de módulos o dependencias externas, y aparecía el siguiente mensaje de error:

    "RejectedExecutionException: Thread limit exceeded replacing blocked worker"

  • El cálculo de la lista de DEX principal de D8 no tenía en cuenta algunas invocaciones reflexivas.

Esta actualización también incluye cambios que aceleran notablemente la ejecución de comprobaciones de lint desde Gradle en determinadas situaciones.

3.1.1 (abril de 2018)

Esta actualización de Android Studio 3.1 incluye correcciones para los siguientes errores:

  • En algunos casos, cuando un proyecto creado en Android Studio 3.0 se abría por primera vez en Android Studio 3.1, la tarea de creación compatible con Gradle se eliminaba del área Before launch en Run/Debug Configurations. Como resultado, los proyectos no se compilaban cuando se hacía clic en los botones Run o Debug, y esto, a su vez, provocaba fallas como la implementación de APK incorrectos y la aparición de errores cuando se usaba Instant Run.

    Para resolver este problema, Android Studio 3.1.1 agrega la tarea de creación compatible con Gradle a la configuración de ejecución de proyectos a los que les falte esta entrada. Esta modificación se produce después de la primera sincronización de Gradle cuando se carga el proyecto.

  • El depurador fallaba cuando se depuraba un diseño con un cuadro de texto si estaba habilitada la generación de perfiles avanzada.
  • Android Studio dejaba de funcionar después de hacer clic en Build Variants.
  • Los archivos AAR (archivo de Android) se extraían dos veces, una durante el proceso de sincronización de Gradle y otra durante el proceso de compilación de Gradle.
  • Faltaban partes de algunos elementos de diseño vectoriales importados de archivos SVG.
  • Se actualizó la advertencia que indica que dejará de estar disponible la configuración de dependencia compile para incluir pautas más específicas sobre las configuraciones de implementation y api. Para obtener información sobre cómo migrar sin usar la configuración compile, consulta la documentación de las nuevas configuraciones de dependencias.

Codificación/IDE

IntelliJ 2017.3.3

Se actualizó el IDE principal de Android Studio con mejoras de IntelliJ IDEA mediante la versión 2017.3.3. Las mejoras incluyen un análisis optimizado del flujo de control para colecciones y strings, mejor inferencia de nulabilidad, nuevas soluciones rápidas y mucho más.

Para obtener más información, consulta las notas de la versión de JetBrains correspondientes a las versiones 2017.2 y 2017.3 de IntelliJ IDEA, así como las notas de la versión de JetBrains relativas a las actualizaciones sobre corrección de errores.

Mejoras de edición de SQL con Room

Cuando usas la biblioteca de base de datos de Room, puedes aprovechar varias mejoras para la edición de SQL:

  • La finalización del código dentro de una Query entiende las tablas (entidades), las columnas, los parámetros de consulta, los alias, las uniones y las subconsultas de SQL, así como las cláusulas WITH.
  • El resaltado de sintaxis SQL ahora funciona.
  • Puedes hacer clic con el botón derecho en el nombre de una tabla en SQL y cambiarle el nombre, con lo cual también se vuelve a escribir el código Java o Kotlin correspondiente (incluido, por ejemplo, el tipo de datos que se muestra de la consulta). El cambio de nombre también funciona en la dirección opuesta, por lo que, cuando se cambia el nombre de una clase o un campo de Java, se vuelve a escribir el código SQL correspondiente.
  • Los usos de SQL se muestran cuando se utiliza Find usages (haz clic con el botón derecho y elige Find usages en el menú contextual).
  • Para ir a la declaración de una entidad SQL en el código Java o Kotlin, puedes mantener presionada la tecla Ctrl (Cmd en Mac) mientras haces clic en la entidad.

Si deseas obtener información sobre el uso de SQL con Room, consulta Cómo guardar contenido en una base de datos local con Room.

Actualizaciones de la vinculación de datos

Esta actualización incluye varias mejoras relativas a la vinculación de datos:

  • Ahora, puedes usar un objeto LiveData como un campo observable en expresiones de vinculación de datos. La clase ViewDataBinding ahora incluye un método setLifecycle() nuevo que se usa para observar objetos LiveData.

  • La clase ObservableField ahora puede aceptar otros objetos Observable en su constructor.

  • Puedes obtener una vista previa de un nuevo compilador incremental para las clases de vinculación de datos. Si deseas obtener información sobre este nuevo compilador e instrucciones para habilitarlo, consulta Compilador de vinculación de datos V2.

    Los beneficios del nuevo compilador incluyen lo siguiente:

    • Las clases ViewBinding se generan mediante el complemento de Android para Gradle antes del compilador de Java.
    • Las bibliotecas mantienen las clases de vinculación que se generan cuando se compila la app, en lugar de regenerarlas cada vez. Esto puede mejorar mucho el rendimiento de proyectos con varios módulos.

Compilador y Gradle

D8 es el compilador de DEX predeterminado

El compilador D8 ahora se usa de forma predeterminada para generar código de bytes DEX.

Este nuevo compilador de DEX incluye varios beneficios, incluidos los siguientes:

  • Conversión a DEX más veloz
  • Menos uso de memoria
  • Generación de código mejorada (mejor asignación de registros, tablas de strings más inteligentes)
  • Mejor experiencia de depuración al recorrer el código

No es necesario realizar ningún cambio en el código o el flujo de trabajo de desarrollo para obtener estos beneficios, a menos que hayas inhabilitado previamente el compilador D8 de forma manual.

Si configuras android.enableD8 en false en gradle.properties, borra esa marca o configúrala en true:

        android.enableD8=true
      

Se deseas obtener más información, consulta Nuevo compilador de DEX.

Expansión de sintaxis incremental

En proyectos que usan características de lenguaje Java 8, la función de expansión de sintaxis incremental está habilitada de forma predeterminada, lo que puede mejorar los tiempos de compilación.

Esta función convierte la sintaxis en una forma que el compilador puede procesar de manera más eficiente.

Puedes inhabilitar la función de expansión de sintaxis incremental mediante la especificación de lo siguiente en el archivo gradle.properties de tu proyecto:

        android.enableIncrementalDesugaring=false
      

Ventana de resultados simplificada

Se reemplazó la consola Gradle con la ventana Build, que tiene las pestañas Sync y Build.

Si deseas obtener información para usar la nueva ventana Build simplificada, consulta Cómo controlar el proceso de compilación.

Actualizaciones por lotes y simultaneidad de indexación

Los procesos de indexación de IDE y de sincronización de Gradle ahora son mucho más eficientes y reducen el tiempo perdido en numerosas operaciones de indexación redundantes.

C++ y LLDB

Realizamos muchas mejoras de calidad y rendimiento en las fases de codificación, sincronización, compilación y depuración del desarrollo de C++. Por ejemplo:

  • Si trabajas con proyectos de C++ grandes, deberías notar una mejora significativa en la reducción del tiempo dedicado a compilar símbolos. El tiempo de sincronización también se reduce enormemente en proyectos grandes.

  • Se mejoró el rendimiento de compilación y sincronización con CMake mediante una reutilización más intensa de los resultados almacenados en caché.

  • La incorporación de formateadores ("impresoras con formato estilístico") a más estructuras de datos C++ facilita la lectura de los resultados de LLDB.

  • LLDB ahora funciona solamente con Android 4.1 (nivel de API 16) y versiones posteriores.

Nota: La depuración nativa con Android Studio 3.0 o versiones posteriores no funciona en Windows de 32 bits. Si usas Windows de 32 bits y necesitas depurar código nativo, utiliza Android Studio 2.3.

Kotlin

Se actualizó Kotlin a la versión 1.2.30

Android Studio 3.1 incluye la versión 1.2.30 de Kotlin.

El código de Kotlin ahora se analiza con la comprobación de lint de la línea de comandos

Ahora, cuando se ejecuta lint desde la línea de comandos, se analizan las clases de Kotlin.

En cada proyecto en el que quieras ejecutar lint, el repositorio de Maven de Google deberá incluirse en el archivo build.gradle del nivel principal. El repositorio de Maven ya se incluye en proyectos creados en Android Studio 3.0 y versiones posteriores.

Herramientas de rendimiento

Cómo realizar muestras de procesos nativos de C++ con el generador de perfiles de CPU

El Generador de perfiles de CPU ahora incluye una configuración predeterminada para registrar seguimientos de muestra de los subprocesos nativos de tu app. Puedes usar esta configuración si implementas la app en un dispositivo con Android 8.0 (nivel de API 26) o una versión posterior, y seleccionas Sampled (Native) en el menú desplegable de configuraciones de registro del Generador de perfiles de CPU. Después de eso, inspecciona y registra el seguimiento como lo harías normalmente.

Puedes cambiar la configuración predeterminada (por ejemplo, el intervalo de muestreo) si creas una configuración de registro.

Para volver a hacer el seguimiento de los subprocesos de Java, selecciona una configuración Sampled (Java) o una Instrumented (Java).

Cómo filtrar registros de CPU, resultados de asignación de memoria y volcados de montón

El Generador de perfiles de CPU y el Generador de perfiles de memoria incluyen una función de búsqueda que permite filtrar los resultados del registro de un seguimiento de método, las asignaciones de memoria o el volcado de montón.

Para buscar, haz clic en Filter en la esquina superior derecha del panel, escribe la consulta y presiona Intro.

Sugerencia: También puedes abrir el campo de búsqueda presionando Ctrl + F (Cmd + F en Mac).

En la pestaña Flame Chart del Generador de perfiles de CPU, las pilas de llamadas que incluyen métodos relacionados con la búsqueda se resaltan y se mueven a la izquierda del gráfico.

Si deseas obtener más información para filtrar por método, clase o nombre de paquete, consulta Cómo registrar e inspeccionar seguimientos de métodos.

Pestaña "Request" en el Generador de perfiles de red

El Generador de perfiles de red ahora incluye una pestaña Request que proporciona detalles sobre las solicitudes de red durante el cronograma seleccionado. En versiones anteriores, el Generador de perfiles de red solamente proporcionaba información sobre las respuestas de la red.

Vista de subprocesos en el Generador de perfiles de red

Después de seleccionar una parte del cronograma en el Generador de perfiles de red, puedes elegir una de las siguientes pestañas para ver más detalles sobre la actividad de red durante ese período:

  • Connection View: Proporciona la misma información que las versiones anteriores de Android Studio, es decir, enumera los archivos que se enviaron o recibieron durante la parte seleccionada del cronograma en todos los subprocesos de la CPU de la app. En cada solicitud, puedes inspeccionar el tamaño, el tipo, el estado y la duración de la transmisión.
  • Thread View: Muestra la actividad de red de cada uno de los subprocesos de CPU de la app. Esta vista te permite inspeccionar qué subprocesos de la app son responsables de cada solicitud de red.

Inspector de diseño

El inspector de diseños adquirió nuevas funciones, incluidas algunas que antes proporcionaban las herramientas "Hierarchy Viewer" y "Pixel Perfect" que ya no están disponibles:

  • Botones de zoom y combinaciones de teclas para navegar por los diseños e inspeccionarlos
  • Superposición de la cuadrícula de referencia
  • Capacidad para cargar una imagen de referencia y usarla como una superposición (útil para comparar tu diseño con un modelo de IU)
  • La opción Render subtree preview para aislar una vista en un diseño complejo

Editor de diseño

Se implementaron muchas mejoras en la opción Palette del editor de diseño:

  • Reorganización de categorías de vistas y diseños.
  • Nueva categoría Common de vistas y diseños que puedes agregar mediante un comando Favorite.
  • Mejoras en la búsqueda de vistas y diseños.
  • Nuevos comandos para abrir documentación de un elemento específico de una vista o un diseño.

Puedes usar el nuevo comando Convert view en el árbol de componentes o en el editor de diseño para convertir una vista o un diseño en otro tipo de vista o diseño.

Ahora, puedes crear fácilmente restricciones para los elementos cerca de la vista seleccionada usando el nuevo botón Create a connection en el inspector de vistas, situado en la parte superior de la ventana Attributes.

Instant Run y Run

Se logró un comportamiento más coherente de la opción Use same selection for future launches en el diálogo Select deployment target. Si se habilita la opción Use same selection, el diálogo Select deployment target se abrirá solamente la primera vez que uses el comando Run hasta que el dispositivo seleccionado ya no esté conectado.

Cuando se orienta a un dispositivo con Android 8.0 (nivel de API 26) o una versión posterior, Instant Run puede implementar cambios en los recursos sin reiniciar la aplicación. Esto es posible porque un APK dividido contiene los recursos.

Emulador

Para obtener información sobre las novedades y los cambios en el emulador desde Android Studio 3.0, consulta las notas de la versión de Android Emulator desde la versión 27.0.2 hasta la versión 27.1.12.

Estas son algunas de las mejoras más importantes:

  • Instantáneas de Quick Boot para guardar el estado del emulador y lograr inicios más rápidos, con la capacidad de usar el comando Save now para guardar un estado de inicio personalizado
  • Pantalla del emulador sin ventanas
  • Imágenes del sistema para Android 8.0 (nivel de API 26), Android 8.1 (nivel de API 27) y la Versión preliminar de Android P para desarrolladores

Mejoras en la interfaz y la experiencia del usuario

Información sobre herramientas, combinaciones de teclas y mensajes útiles adicionales

Agregamos información sobre herramientas y mensajes superpuestos útiles en muchos lugares de Android Studio.

Para ver combinaciones de teclas de muchos de los comandos, mantén el puntero del mouse sobre un botón hasta que aparezca la información sobre la herramienta.

Se eliminó el menú Tools > Android

Se eliminó el menú Tools > Android. Los comandos que estaban en este menú se movieron.

  • Muchos comandos ahora están en el menú Tools.
  • El comando Sync project with gradle files se movió al menú File.
  • Se eliminó el comando Device Monitor, tal como se describe a continuación.

El monitor de dispositivos está disponible en la línea de comandos

En Android Studio 3.1, Device Monitor cumple una función menor de la que tenía anteriormente. En muchos casos, la funcionalidad disponible a través del monitor de dispositivos ahora se proporciona con herramientas nuevas y mejoradas.

Consulta la documentación del monitor de dispositivos a fin de obtener instrucciones para invocar dicho monitor desde la línea de comandos y conocer detalles sobre las herramientas disponibles mediante el monitor de dispositivos.