Android Studio Dolphin | 2021.3.1 (septiembre de 2022)

Las siguientes son funciones nuevas de Android Studio Dolphin.

Novedad en Compose

Las siguientes son funciones y mejoras nuevas de Jetpack Compose en Android Studio.

Coordinación de animación de Compose

Si tus animaciones se describen en una vista previa que admite composición, ahora puedes usar la Vista previa de animación para inspeccionarlas y coordinarlas todas a la vez. También puedes inmovilizar una animación específica.

GIF que muestra la inspección con la IU Todas las animaciones

Anotaciones de vista previa múltiple de Compose

Ahora puedes definir una clase de anotación que incluya varias definiciones de vista previa y usar esa anotación nueva para generar todas esas vistas previas a la vez. Usa esta anotación nueva para obtener una vista previa de varios dispositivos, fuentes y temas al mismo tiempo, sin repetir las definiciones para cada elemento que admite composición.

IU de anotaciones de vista previa múltiple

Recuentos de recomposición de Compose en el Inspector de diseño

Cuando depuras tus diseños de Compose, es importante saber cuándo los elementos que son o no de compatibilidad se vuelven a componer para comprender si tu IU se implementó correctamente. Por ejemplo, si se vuelve a componer demasiadas veces, es posible que tu app esté haciendo más trabajo del necesario. Por otro lado, los componentes que no se recomponen cuando esperas que lo hagan pueden generar comportamientos inesperados.

El Inspector de diseño ahora te permite ver cuándo se vuelven a componer o se omiten elementos de componibilidad discretos en la jerarquía de diseño. Esta información se muestra en vivo mientras interactúas con tu app. Para comenzar, asegúrate de que tu app use Compose 1.2.0-alpha03 o una versión posterior. Luego, implementa tu app como lo harías normalmente.

Nuevo contador de composición y omisión del Inspector de diseño

Abre la ventana del Inspector de diseño y conéctate al proceso de tu app. En Component Tree, deberías ver dos columnas nuevas junto a la jerarquía de diseño. La primera columna muestra la cantidad de composiciones para cada nodo. La segunda columna muestra la cantidad de omisiones de cada nodo. También puedes ver información similar en el panel Attributes cuando seleccionas un elemento de componibilidad en Component Tree o Layout Display.

Si deseas restablecer el recuento, haz clic en Reset cerca de la parte superior del panel Component Tree. Restablecer el recuento puede ayudarte a comprender las recomposiciones o las omisiones durante una interacción específica con tu app.

Cómo habilitar la composición y omitir el contador en el Inspector de diseño

Asistente de vinculación del emulador de Wear OS actualizado

A partir de Android Studio Dolphin Canary 3, el asistente de vinculación del emulador de Wear OS tiene funciones mejoradas que facilitan la administración y la conexión de los emuladores de Wear. Ahora, puedes hacer lo siguiente:

  • Consultar los dispositivos para Wear en el Administrador de dispositivos
  • Vincular varios dispositivos para Wear con un solo teléfono virtual o físico
  • Volver a conectar automáticamente los dispositivos vinculados anteriormente cuando se inician (Android Studio ahora recuerda y vuelve a vincular el último par configurado)

Para usar estas funciones nuevas, asegúrate de que los emuladores de teléfonos tengan un nivel de API 30 o posterior, y de que Google Play Store esté instalado. Además, asegúrate de que tus emuladores de Wear tengan el nivel de API 28 o posterior. Para actualizar a las imágenes del sistema más recientes de tus dispositivos emulados, ve a Tools > SDK Manager.

Para obtener más información, consulta Cómo usar el asistente de vinculación del emulador de Wear OS.

Actualización de la barra de herramientas del emulador de Wear OS

A partir de Android Studio Dolphin Canary 2, para los emuladores de Wear con nivel de API 28 o superior, la barra de herramientas del emulador ahora tiene botones que simulan los botones físicos y las acciones comunes en el dispositivo. Los botones nuevos son: botón 1 y botón 2 (el botón 2 solo está disponible en el nivel de API 30 o superior), el botón de la palma y el botón de inclinación. Estas son algunas de las acciones que puedes realizar con los botones nuevos del emulador de Wear:

  • Para configurar el dispositivo en el modo ambiente, haz clic en el botón de la palma.
  • Para volver a la última pantalla en la que estuvo el dispositivo antes del modo ambiente, haz clic en el botón de inclinación.

Para obtener más información, consulta Cómo realizar acciones comunes en el emulador.

Emulador de Wear con botones específicos de Wear

Nuevas configuraciones de ejecución de Wear OS

Se agregaron nuevas configuraciones de ejecución para ejecutar y depurar rápidamente superficies específicas de Wear OS, como caras de reloj, tarjetas y complicaciones. Puedes crear estas configuraciones nuevas desde el cuadro de diálogo Run/Debug Configurations cuando ejecutes tu aplicación.

Para obtener más información, consulta Configuraciones de ejecución y depuración de Wear OS.

Nuevas configuraciones de inicio de Wear OS

Nuevo Logcat

Se actualizó Logcat para facilitar el análisis, la consulta y el seguimiento de los registros.

Nuevo formateador

Logcat ahora da formato a los registros para facilitar el análisis de información útil, como etiquetas y mensajes, y la identificación de diferentes tipos de registros, como advertencias y errores.

Nuevo formato para registros en Logcat

Creación de varias ventanas de Logcat

Ahora puedes crear varias pestañas en Logcat para alternar fácilmente entre diferentes dispositivos o consultas. Hacer clic con el botón derecho en una pestaña te permite cambiarle el nombre, y puedes hacer clic y arrastrar para reordenarlas.

Además, para facilitar la comparación entre dos conjuntos de registros, ahora puedes dividir la vista dentro de una pestaña si haces clic con el botón derecho en la vista de registro y seleccionas Split right o Split Down. Para cerrar una división, haz clic con el botón derecho y selecciona Close. Cada división te permite establecer su propia conexión de dispositivo, opciones de vista y consulta.

Cómo crear varias ventanas de Logcat mediante divisiones

Cambio entre los ajustes predeterminados de vista

Logcat ahora te permite cambiar rápidamente entre los diferentes modos de vista (Estándar, Compacta y Personalizada) haciendo clic en Selector de modo de vista. Cada modo de vista proporciona una configuración predeterminada diferente para mostrarte más o menos información, como las marcas de tiempo, las etiquetas y los IDs de proceso (PID). También puedes personalizar cada uno de estos modos de vista predeterminados y personalizados si seleccionas Modify View.

Captura de pantalla del cambio entre los diferentes modos de vista

En la versión anterior de Logcat, tenías la opción de usar la búsqueda de strings (compatible con expresiones regulares) o crear un filtro nuevo mediante la propagación de varios campos con la IU de Logcat. La primera opción hacía que la búsqueda fuera más compleja, y la segunda opción dificultaba el uso compartido y la configuración de consultas. Para simplificar la experiencia, ahora presentamos las búsquedas de pares clave-valor directamente desde el campo de búsqueda principal.

Captura de pantalla de la nueva sintaxis de consulta con función para autocompletar

Este nuevo sistema de consultas aporta la precisión de lo que deseas consultar, sin depender de expresiones regulares, y la capacidad de recuperar consultas pasadas del historial y compartir esas consultas con otros. Además, tienes la opción de usar regex y también excluir registros basados en pares clave-valor. Aquí hay algunos ejemplos de cómo usar el nuevo sistema de consultas, pero también puedes comenzar a escribir en el campo de consulta para ver sugerencias:

  • PID del proyecto de app local: package:mine
  • Valores específicos:
    • package:<package-ID>
    • tag:<tag>
    • level:[VERBOSE | INFO | ASSERT |DEBUG | WARN | ERROR ]
  • Para excluir un valor específico, ingresa - antes de la clave:
    • -tag:<exclude-tag>
  • Para usar expresiones regulares con una clave determinada, coloca ~ después de la clave:
    • tag~:<regular-expression-tag>
    • Puedes combinar con la etiqueta de exclusión: -tag~:<exclude-regular-expression-tag>

También puedes ver un historial de consultas si haces clic en Selector del historial de consultas en el campo de consulta y las seleccionas en el menú desplegable. Si deseas marcar una consulta para que permanezca en la parte superior de la lista en todos tus proyectos de Studio, haz clic en Consulta favorita al final del campo de consulta.

Captura de pantalla del historial de consultas con favoritos

Seguimiento de los registros de fallas o reinicios de la app

El nuevo Logcat ahora facilita el seguimiento de los registros de tu app durante las fallas y reinicios de la app, de modo que no te pierdas registros importantes de estos eventos. Cuando Logcat detecte que el proceso de tu app se detuvo y reinició, verás un mensaje en el resultado, como PROCESS ENDED y PROCESS STARTED, tal como se muestra a continuación:

Captura de pantalla de reinicios de procesos en logcat

Además, al reiniciar Logcat se conserva la configuración de tu sesión, como divisiones de pestañas, filtros y opciones de vista, para que puedas continuar con tu sesión fácilmente.

Dispositivos administrados por Gradle

A fin de mejorar la coherencia, el rendimiento y la confiabilidad cuando se usan dispositivos virtuales de Android para tus pruebas de instrumentación automatizadas, presentamos los dispositivos administrados por Gradle. Esta función, disponible para el nivel de API 27 y superiores, te permite configurar dispositivos de prueba virtuales en los archivos Gradle de tu proyecto. El sistema de compilación usa las configuraciones para administrar por completo (es decir, crear, implementar y eliminar) esos dispositivos al ejecutar tus pruebas automatizadas.

Esta función otorga visibilidad a Gradle no solo de las pruebas que estás ejecutando, sino también del ciclo de vida de los dispositivos, lo que mejora la calidad de tu experiencia con las pruebas de las siguientes maneras:

  • Controla problemas relacionados con el dispositivo para garantizar que se ejecuten las pruebas.
  • Usa instantáneas del emulador para mejorar el tiempo de inicio y el uso de memoria del dispositivo, y para restablecer los dispositivos a un estado limpio entre las pruebas.
  • Almacena en caché los resultados de la prueba y vuelve a ejecutar solo las pruebas que puedan proporcionar resultados diferentes.
  • Proporciona un entorno coherente para ejecutar tus pruebas entre ejecuciones locales y remotas.

Además, los dispositivos administrados por Gradle presentan un nuevo tipo de dispositivos emuladores, llamados dispositivos de prueba automatizados (ATD), que están optimizados para mejorar el rendimiento cuando se ejecutan las pruebas de instrumentación. Junto con la compatibilidad con la fragmentación de pruebas, puedes experimentar con la división de tu paquete de pruebas en varias instancias de ATD para reducir el tiempo de ejecución general. Para obtener más información sobre dispositivos administrados por Gradle y sus funciones asociadas, consulta Ajusta tus pruebas con dispositivos administrados por Gradle.

Compatibilidad con R8 mediante archivos de asignación basados en desplazamientos de instrucciones DEX

Cuando se optimiza la información de línea, R8 ahora permite codificar la información en objetos de información de depuración compartidos con tablas de líneas basadas en desplazamientos de instrucciones. Esto reduce de forma sustancial la sobrecarga de la información de línea. El efecto es que las líneas en los métodos ya no son consecutivas, sino que pueden saltar a intervalos según el tamaño de las instrucciones. Ten en cuenta que algunas herramientas no incluyen esta codificación compartida.

Además, las VMs de Android a partir de O (nivel de API 26) admiten desplazamientos de instrucciones de impresión en seguimientos de pila si el método no tiene información de número de línea. Cuando compilas con minSdk 26 o versiones posteriores, sin información del archivo de origen, R8 quita por completo la información de número de línea.

Las lambdas sin estado ya no se procesan en expansión de sintaxis como singletons

Las lambdas sin estado ya no se asignan como singleton cuando se aplica la expansión de sintaxis. La representación como singleton agrega sobrecarga del tamaño de código debido al campo adicional y al inicializador de clase, además de la sobrecarga de inicio, debido a la inicialización de la clase estática. Las lambdas sin estado ahora se asignan en sitios de uso de la misma manera que las lambdas con estado (lambdas con capturas).

R8 evita la demora en la verificación en los entornos de ejecución de Android

Para eliminar los problemas de rendimiento en los entornos de ejecución de Android (Dalvik y ART), R8 (no D8) ahora introduce stubs de biblioteca y llamadas de contorno a métodos de biblioteca para clases de biblioteca y métodos que pueden no existir en el entorno de ejecución. De esta manera, se eliminan muchos problemas de verificación y se mejora el rendimiento del entorno de ejecución. Esta función siempre está habilitada.

Compatibilidad con las APIs de JDK-11 con la expansión de sintaxis de APIs de Java 8 y versiones posteriores

Cuando usas la dependencia coreLibraryDesugaring, ahora se admite una biblioteca de implementación basada en JDK-11. Consulta el registro de cambios desugar_jdk_libs para obtener más información.

Versiones de parches

A continuación, se incluye una lista de las versiones de parche en Android Studio Dolphin.

Android Studio Dolphin | Parche 1 2021.3.1 (octubre de 2022)

Con la actualización del Parche 1, Android Studio Dolphin ahora es compatible con el complemento de Kotlin 1.7.20. Esta actualización menor incluye las siguientes correcciones de errores:

Errores corregidos
Complemento de Android para Gradle
La ejecución de pruebas instrumentadas de Android a través de Gradle no aplica correctamente la expansión de sintaxis.
AGP 7.3.0 interrumpe la sincronización de Gradle para los proyectos de la plataforma de Gradle.
Dexer (D8)
Se agregó una API pública para la resolución de conflictos cuando se combina DEX (para que Bazel permita clases duplicadas).
Importación/sincronización
La importación de proyectos de Gradle falla después de la actualización del parche 2 de Chipmunk (2021.2.1).
Recursos
NPE en AarResourceRepositoryCache.createCachingData (AS Dolphin+).
Reductor (R8)
Los metadatos de Kotlin no se copian cuando se sustituyen campos de tipo.
Conversión inesperada de tipo impreciso: TOP (todo).
Gradle 7.3.0 provocaba un error de compilación del APK com.android.tools.r8.CompilationFailedException
Se quitaban los constructores predeterminados inactivos en el modo compatible.
Conflicto con Markdown de JetBrains.
Compatibilidad con ThreadLocal.withInitial(java.util.function.Provider).
AGP 7.3 genera DEX para clases con constructor roto.
Intento inesperado de determinar si el código que no es de CF necesita expansión de sintaxis
Error de verificación de ktor.
Se encontró un valor indefinido durante la compilación arrojada al procesar okio-jvm 3.2.0.
Se produce un error de compilación del objeto de intercalación de clase con instancia indirecta de usuarios.
java.lang.IllegalAccessError con R8 3.3.75.