Android Studio Iguana | 2023.2.1

Android Studio es el IDE oficial para el desarrollo de Android e incluye todo lo necesario para compilar apps para Android.

En esta página, se enumeran las nuevas funciones y mejoras en Android Studio Iguana, la versión más reciente del canal estable. Puedes descárgala aquí o actualizar Android Studio si haces clic en Help > Check for updates (Android Studio > Check for updates en macOS).

Para ver qué se corrigió en esta versión de Android Studio, consulta los errores cerrados.

Para ver las notas de las versiones anteriores de Android Studio, consulta la sección de versiones anteriores.

Si quieres obtener acceso anticipado a las próximas funciones y mejoras, consulta las versiones preliminares de Android Studio.

Si tienes problemas en Android Studio, consulta las páginas de problemas conocidos o solución de problemas.

Compatibilidad del complemento de Android para Gradle y Android Studio

El sistema de compilación de Android Studio se basa en Gradle, y el complemento de Android para Gradle (AGP) incorpora varias funciones específicas para compilar apps para Android. En la siguiente tabla, se muestra qué versión de AGP se requiere para cada versión de Android Studio.

Versión Android Studio Versión requerida del AGP
Jellyfish | 2023.3.1 3.2 a 8.4
Iguana | 2023.2.1 3.2-8.3
Hedgehog | 2023.1.1 3.2-8.2
Giraffe | 2022.3.1 3.2-8.1
Flamingo | 2022.2.1 3.2-8.0
Electric Eel | 2022.1.1 3.2-7.4

Versiones anteriores

Versión Android Studio Versión requerida del AGP
Dolphin | 2021.3.1 3.2-7.3
Chipmunk | 2021.2.1 3.2-7.2
Bumblebee | 2021.1.1 3.2-7.1
Arctic Fox | 2020.3.1 3.1-7.0

A fin de conocer las novedades del complemento de Android para Gradle, consulta las notas de la versión del complemento de Android para Gradle.

Versiones mínimas de herramientas para el nivel de API de Android

Hay versiones mínimas de Android Studio y AGP que admiten un nivel de API específico. El uso de versiones anteriores de Android Studio o AGP que las requeridas por targetSdk o compileSdk de tu proyecto podría generar problemas inesperados. Recomendamos usar la versión preliminar más reciente de Android Studio y AGP para trabajar en proyectos orientados a versiones preliminares del SO Android. Puedes instalar versiones preliminares de Android Studio junto con una versión estable.

Estas son las versiones mínimas de Android Studio y AGP:

Nivel de API Versión mínima de Android Studio Versión mínima del AGP
Vista previa de VanillaIceCream Jellyfish | 2023.3.1 8.4
34 Hedgehog | 2023.1.1 8.1.1
33 Flamingo | 2022.2.1 7.2

Las siguientes son funciones nuevas de Android Studio Iguana.

Integración del sistema de control de versión en App Quality Insights

Ahora, App Quality Insights te permite navegar desde un seguimiento de pila de Crashlytics hasta el código relevante, en el momento en que ocurrió la falla. AGP adjunta datos de hash de confirmación de Git a los informes de fallas, lo que ayuda a Android Studio a navegar a tu código y mostrar cómo estaba en la versión en la que ocurrió el problema. Cuando ves un informe de fallas en App Quality Insights, puedes navegar a la línea de código de tu confirmación de la compra de Git actual o ver una diferencia entre la confirmación de la compra actual y la versión de la base de código que generó la falla.

Para integrar el sistema de control de versión con App Quality Insights, necesitas los siguientes requisitos mínimos:

Si quieres usar la integración de control de versión para un tipo de compilación depurable, habilita la marca vcsInfo en el archivo de compilación de nivel de módulo. En las compilaciones de lanzamiento (no depurables), la marca está habilitada de forma predeterminada.

Kotlin

android {
  buildTypes {
    getByName("debug") {
      vcsInfo {
        include = true
      }
    }
  }
}

Groovy

android {
  buildTypes {
    debug {
      vcsInfo {
        include true
      }
    }
  }
}

Ahora, cuando compiles tu app y la publiques en Google Play, los informes de fallas incluirán los datos necesarios para que el IDE se vincule a versiones anteriores de la app desde el seguimiento de pila.

Consulta las variantes de fallas de Crashlytics en App Quality Insights

Para ayudarte a analizar las causas raíz de las fallas, ahora puedes usar App Quality Insights para ver eventos por variantes de problemas o grupos de eventos que comparten seguimientos de pila similares. Para ver los eventos de cada variante de un informe de fallas, selecciona una variante del menú desplegable. Para agregar información de todas las variantes, selecciona Todas.

Verificación de la IU de Compose

Para ayudar a los desarrolladores a compilar IUs más adaptables y accesibles en Jetpack Compose, Android Studio Iguana Canary 5 introdujo un nuevo modo de verificación de IU en la vista previa de Compose. Esta función funciona de manera similar al análisis con lint visual y a las integraciones de verificaciones de accesibilidad para vistas. Cuando activas el modo de Verificación de IU de Compose, Android Studio audita automáticamente tu IU de Compose y comprueba si hay problemas de adaptación y accesibilidad en diferentes tamaños de pantalla, como texto estirado en pantallas grandes o contraste bajo de color. El modo destaca los problemas encontrados en diferentes configuraciones de vista previa y los enumera en el panel de problemas.

Para probar esta función hoy mismo, haz clic en el botón de verificación de IU en la vista previa de Compose y envía tus comentarios:

Haz clic en el botón Modo de verificación de la IU de Compose para activar la verificación.

Problemas conocidos del modo de verificación de IU:

  • Es posible que el problema seleccionado en el panel de problemas pierda el enfoque
  • La opción "Suprimir regla" no funciona
Se activó el modo Compose UI Check con detalles en el panel de problemas.

Renderización progresiva para la vista previa de Compose

Android Studio Iguana Canary 3 introduce la renderización progresiva en la vista previa de Compose. Como parte de un esfuerzo continuo por mejorar el rendimiento de las vistas previas, ahora en el caso de las vistas previas que estén fuera de vista, reducimos intencionalmente la calidad de su renderización para ahorrar el uso de la memoria.

Esta función se desarrolló con el objetivo de mejorar aún más la usabilidad de las vistas previas, ya que se pueden controlar más vistas al mismo tiempo en un archivo. Pruébala hoy y envía tus comentarios.

Actualización de la plataforma IntelliJ IDEA 2023.2

Android Studio Iguana incluye las actualizaciones de IntelliJ IDEA 2023.2, que mejoran la experiencia del IDE de Studio. Para obtener detalles sobre los cambios, consulta las notas de la versión de IntelliJ IDEA 2023.2.

Asistente del módulo de perfiles de Baseline

A partir de Android Studio Iguana, puedes generar perfiles de Baseline para tu app usando la plantilla Baseline Profile Generator en el asistente de módulos nuevos (File > New > New Module).

Esta plantilla configura tu proyecto para que admita perfiles de Baseline. Usa el nuevo complemento de Gradle para perfiles de Baseline, que automatiza el proceso de configuración de tu proyecto de la manera necesaria con una tarea de Gradle.

La plantilla también crea una configuración de ejecución que te permite generar un perfil de Baseline con un solo clic desde la lista desplegable Select Run/Debug Configuration.

Cómo realizar pruebas con los cambios de configuración con la API de Espresso Device

Usa la API de Espresso Device para probar tu app cuando el dispositivo se someta a cambios comunes de configuración, como la rotación y el desplegado de la pantalla. La API de Espresso Device te permite simular estos cambios de configuración en un dispositivo virtual y ejecuta las pruebas de forma síncrona, de modo que solo se produce una acción o aserción de la IU a la vez, y los resultados de la prueba son más confiables. Obtén más información para escribir pruebas de la IU con Espresso.

Para usar la API de Espresso Device, necesitas lo siguiente:

  • Android Studio Iguana o versiones posteriores
  • Complemento de Android para Gradle 8.3 o una versión posterior
  • Android Emulator 33.1.10 o versiones posteriores.
  • Dispositivo virtual de Android que ejecute el nivel de API 24 o uno posterior

Cómo configurar tu proyecto para la API de Espresso Device

Para configurar tu proyecto de modo que sea compatible con la API de Espresso Device, haz lo siguiente:

  1. Para permitir que la prueba pase los comandos al dispositivo de prueba, agrega los permisos INTERNET y ACCESS_NETWORK_STATE al archivo de manifiesto en el conjunto de orígenes androidTest:

      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permissions.ACCESS_NETWORK_STATE" />
  2. Habilita la marca experimental enableEmulatorControl en el archivo gradle.properties:

      android.experimental.androidTest.enableEmulatorControl=true
  3. Habilita la opción emulatorControl en la secuencia de comandos de compilación a nivel de módulo:

    Kotlin

      testOptions {
        emulatorControl {
          enable = true
        }
      }

    Groovy

      testOptions {
        emulatorControl {
          enable = true
        }
      }
  4. En la secuencia de comandos de compilación a nivel del módulo, importa la biblioteca de dispositivos Espresso a tu proyecto:

    Kotlin

      dependencies {
        androidTestImplementation("androidx.test.espresso:espresso-device:3.5.1")
      }

    Groovy

      dependencies {
        androidTestImplementation 'androidx.test.espresso:espresso-device:3.5.1'
      }

Cómo realizar pruebas con cambios de configuración comunes

La API de Espresso Device tiene varias orientaciones de pantalla y estados plegables que puedes usar para simular cambios en la configuración del dispositivo.

Prueba la rotación de pantalla

A continuación, te mostramos un ejemplo de cómo probar lo que le sucede a tu app cuando gira la pantalla del dispositivo:

  1. Primero, para lograr un estado de inicio coherente, establece el dispositivo en modo vertical:

      import androidx.test.espresso.device.action.ScreenOrientation
      import androidx.test.espresso.device.rules.ScreenOrientationRule
      ...
      @get:Rule
      val screenOrientationRule: ScreenOrientationRule = ScreenOrientationRule(ScreenOrientation.PORTRAIT)
  2. Crea una prueba que establezca el dispositivo en orientación horizontal durante la ejecución de la prueba:

      @Test
      fun myRotationTest() {
        ...
        // Sets the device to landscape orientation during test execution.
        onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE)
        ...
      }
  3. Después de que la pantalla gire, comprueba que la IU se adapte al nuevo diseño como se espera:

      @Test
      fun myRotationTest() {
        ...
        // Sets the device to landscape orientation during test execution.
        onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE)
        composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed()
        composeTestRule.onNodeWithTag("BottomBar").assertDoesNotExist()
      }

Cómo realizar una prueba contra el desplegado de la pantalla

A continuación, te mostramos un ejemplo de cómo probar lo que le sucede a tu app si está en un dispositivo plegable y se despliega la pantalla:

  1. Primero, realiza una prueba con el dispositivo en el estado plegado llamando a onDevice().setClosedMode(). Asegúrate de que el diseño de tu app se adapte al ancho de la pantalla compacta:

      @Test
      fun myUnfoldedTest() {
        onDevice().setClosedMode()
        composeTestRule.onNodeWithTag("BottomBar").assetIsDisplayed()
        composeTestRule.onNodeWithTag("NavRail").assetDoesNotExist()
        ...
      }
  2. Para hacer la transición a un estado completamente desplegado, llama a onDevice().setFlatMode(). Comprueba que el diseño de la app se adapte a la clase de tamaño expandido:

      @Test
      fun myUnfoldedTest() {
        onDevice().setClosedMode()
        ...
        onDevice().setFlatMode()
        composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed()
        composeTestRule.onNodeWithTag("BottomBar").assetDoesNotExist()
      }

Especifica los dispositivos que necesitan tus pruebas

Si estás ejecutando una prueba que realiza acciones de plegado en un dispositivo que no es plegable, la prueba suele fallar. Para ejecutar solo las pruebas que sean relevantes para el dispositivo en ejecución, usa la anotación @RequiresDeviceMode. El ejecutor de pruebas omite automáticamente la ejecución de pruebas en dispositivos que no admiten la configuración que se está probando. Puedes agregar esta regla a cada prueba o a una clase de prueba completa.

Por ejemplo, para especificar que una prueba solo se debe ejecutar en dispositivos que admiten el desplegado en una configuración plana, agrega el siguiente código @RequiresDeviceMode a la prueba:

@Test
@RequiresDeviceMode(mode = FLAT)
fun myUnfoldedTest() {
  ...
}