Desarrollo de código iterativo

Como desarrollador para dispositivos móviles, sueles desarrollar la IU de tu app paso a paso, en lugar de desarrollar todo a la vez. Android Studio adopta este enfoque con Jetpack Compose proporcionando herramientas que no requieren una compilación completa para inspeccionar, modificar valores y verificar el resultado final.

Ediciones en vivo

Ediciones en vivo es una función que te permite actualizar elementos componibles en emuladores y dispositivos físicos, en tiempo real. Esta funcionalidad minimiza los cambios de contexto entre la escritura y la compilación tu app, lo que te permite enfocarte en escribir código más tiempo sin interrupciones.

Ediciones en vivo tiene tres modos:

  • Manual: Los cambios de código se aplican cuando se envían de forma manual con Control + \ (Comando + \ en macOS).
  • Manual en Guardar: Los cambios de código se aplican cuando se guardan de forma manual con Control + S (Comando + S en macOS).
  • Automático: Los cambios se aplican en tu dispositivo o emulador cuando actualizas una función de componibilidad.

Ediciones en vivo se centra en cambios de código que se relacionan con la IU y la UX. Esta función no admite cambios, por ejemplo, actualizar firmas de métodos, agregar métodos nuevos o cambiar la jerarquía de clases. Para obtener más información, consulta la lista de Limitaciones de Ediciones en vivo.

Esta función no reemplaza la compilación y la ejecución de tu app ni Apply Changes. En cambio, está diseñada para optimizar el flujo de trabajo a medida que compilas, implementas e iteras para desarrollar IU de Compose.

El flujo de trabajo de prácticas recomendadas es el siguiente:

  1. Configura tu aplicación para que pueda ejecutarse.
  2. Usa Ediciones en vivo tanto como sea posible, hasta que necesites realizar un cambio que no sea compatible con esta función, por ejemplo, agregar métodos nuevos mientras se ejecuta la app.
  3. Después de realizar un cambio no compatible, haz clic en Run Ícono de ejecución para reiniciar la app y reanudar Ediciones en vivo.

Comienza a usar Ediciones en vivo

Para comenzar, sigue estos pasos para crear una actividad de Compose vacía, habilitar Ediciones en vivo para tu proyecto y realizar cambios con esta función.

Cómo configurar tu proyecto nuevo

  1. Antes de comenzar, asegúrate de tener Android Studio Giraffe o una versión posterior instalado y de que el nivel de API de tu dispositivo físico o emulador sea al menos 30.

  2. Abre Android Studio y selecciona New Project en la ventana emergente Welcome to Android Studio. Si ya tienes un proyecto abierto, puedes crear uno nuevo si navegas a File > New > New Project.

  3. Elige la plantilla Empty Compose Activity para Phone and Tablet y, luego, haz clic en Next.

    Selección de plantillas en Android Studio
    Figura 1: Plantillas entre las que puedes elegir. En Ediciones en vivo, elige Empty Compose Activity.
  4. Completa el diálogo New Project con la información requerida: nombre, nombre del paquete, ubicación de almacenamiento, SDK mínimo y idioma de la configuración de compilación.

    Ejemplo de la configuración del proyecto del paso 4 que se ingresa en Android Studio
    Figura 2: Ejemplo de configuración del proyecto.
  5. Haz clic en Finish.

Cómo habilitar Ediciones en vivo

  1. Ve a la configuración para habilitar Ediciones en vivo.

    • En Windows o Linux, ve a File > Settings > Editor > Live Edit.
    • En macOS, ve a Android Studio > Preferences > Editor > Live Edit.
  2. Selecciona la opción Ediciones en vivo y el modo que quieres ejecutar desde la configuración.

    En el modo manual, los cambios de código se envían cada vez que presionas Control + \ (Comando + \ en macOS). En el modo manual después de guardar, los cambios de código se aplican cada vez que guardas manualmente, con Control + S (Comando + S en macOS). En el modo automático, los cambios de código se aplican en el dispositivo o el emulador a medida que los realizas.

    IU de la casilla de verificación de Live Edit en la configuración de Android Studio
    Figura 3: Configuración de Ediciones en vivo.
  3. En el editor, abre el archivo MainActivity, que es el punto de entrada de tu app.

  4. Haz clic en Run Botón de la IU para implementar tu app.

  5. Después de activar Ediciones en vivo, aparecerá la marca de verificación verde Up-to-date en la parte superior derecha de la ventana de herramientas Running Devices:

    IU de la marca de verificación verde de Ediciones en vivo

Cómo realizar y revisar cambios

A medida que realizas cambios compatibles en el editor, el dispositivo de prueba virtual o físico se actualiza automáticamente.

Por ejemplo, edita el método Greeting existente en MainActivity de la siguiente manera:

@Composable
fun Greeting(name: String) {
    Text(
        text = "Hello $name!",
        Modifier
            .padding(80.dp) // Outer padding; outside background
            .background(color = Color.Cyan) // Solid element background color
            .padding(16.dp) // Inner padding; inside background, around text)
    )
}

Los cambios aparecerán al instante en el dispositivo de prueba, como se muestra en la Figura 4.

Cambios en el método Greeting en un dispositivo
Figura 4: Dispositivo de prueba que muestra los cambios de Ediciones en vivo del método Greeting.

Cómo solucionar problemas con Ediciones en vivo

Si no ves tus ediciones en el dispositivo de prueba, es posible que Android Studio no las haya actualizado. Comprueba si en el indicador de Ediciones en vivo dice Out Of Date, como se muestra en la figura 5, lo que indica un error de compilación. Para obtener más información sobre el error y las sugerencias para corregirlo, haz clic en el indicador.

Ícono de Ediciones en vivo desactualizado
Figura 5: Indicador de estado de Ediciones en vivo.

Limitaciones de Ediciones en vivo

La siguiente es una lista de limitaciones actuales.

  • [Solo se aplica a Android Studio Giraffe y versiones posteriores] Ediciones en vivo requiere Compose Runtime 1.3.0 o versiones posteriores. Si tu proyecto usa una versión anterior de Compose, Ediciones en vivo está inhabilitada.

  • [Solo se aplica a Android Studio Giraffe y versiones posteriores] Ediciones en vivo requiere AGP 8.1 o versiones posteriores. Si tu proyecto usa una versión anterior de AGP, Ediciones en vivo está inhabilitada.

  • Ediciones en vivo requiere un dispositivo físico o un emulador que ejecute el nivel de API 30 o superior.

  • Ediciones en vivo solo admite la edición del cuerpo de una función, es decir, no puedes cambiar el nombre de la función ni la firma, agregar o quitar funciones ni cambiar los campos que no correspondan a funciones.

  • Ediciones en vivo restablece el estado de la app la primera vez que cambias una función de Compose en un archivo. Esto solo sucede después del primer cambio de código; el estado de la app no se restablece con los cambios de código posteriores que realices en las funciones de Compose en ese archivo.

  • Es posible que se apliquen penalizaciones al rendimiento en las clases que se modifiquen con Ediciones en vivo. Ejecuta tu app y usa una compilación de lanzamiento limpia si evalúas su rendimiento.

  • Debes realizar una ejecución completa para que el depurador funcione en las clases que modificaste con Ediciones en vivo.

  • Es posible que la app que se esté ejecutando falle cuando realices cambios en esta con Ediciones en vivo. En ese caso, puedes volver a implementar la app con el botón Run Botón de la IU.

  • Ediciones en vivo no realiza ninguna manipulación del código de bytes que está definido en el archivo de compilación de tu proyecto; por ejemplo, la manipulación del código de bytes que se aplicaría cuando se compila el proyecto con las opciones del menú Build o con un clic en los botones Build o Run.

  • Las funciones no componibles se actualizan en vivo en el dispositivo o el emulador, y se activa una recomposición completa. Es posible que la recomposición completa no invoque la función actualizada. Para las funciones que no sean de componibilidad, debes activar las funciones que se actualizaron recientemente o volver a ejecutar la app.

  • Ediciones en vivo no se reanuda cuando se reinicia la app. Debes volver a ejecutarla.

  • Ediciones en vivo solo admite procesos depurables.

  • Ediciones en vivo no admite proyectos en los que se usen valores personalizados para moduleName en kotlinOptions, en la configuración de compilación.

  • Ediciones en vivo no funciona con implementaciones múltiples. Esto significa que no puedes realizar implementaciones en un dispositivo y, luego, en otro. Ediciones en vivo solo está activa en el último conjunto de dispositivos en el que se implementó la app.

  • Ediciones en vivo funciona con implementaciones multidispositivo (implementaciones en varios dispositivos que se crearon a través de Select multiple devices en el menú desplegable del dispositivo de destino). Sin embargo, no tiene compatibilidad oficial y puede haber problemas. Si tienes problemas, infórmalos.

  • Apply Changes/Apply Code Changes no son compatibles con Ediciones en vivo y requieren que se reinicie la app en ejecución.

Preguntas frecuentes sobre Ediciones en vivo

  • ¿Cuál es el estado actual de Ediciones en vivo?

    Ediciones en vivo está disponible en Android Studio Giraffe. Para activarla, ve a File > Settings > Editor > Live Edit (Android Studio > Settings > Editor > Live Edit en macOS).

  • ¿Cuándo debería usar Ediciones en vivo?

    Usa Ediciones en vivo cuando quieras ver rápidamente el efecto de las actualizaciones en los elementos de UX (como las actualizaciones de modificadores y las animaciones) en la experiencia general de la app.

  • ¿Cuándo debo evitar el uso de Ediciones en vivo?

    Ediciones en vivo se centra en cambios de código que se relacionan con la IU y la UX. No admite cambios, por ejemplo, actualizar firmas de métodos, agregar métodos nuevos o cambiar la jerarquía de clases. Para obtener más información, consulta Limitaciones de Ediciones en vivo.

  • ¿Cuándo debo usar la Vista previa de Compose?

    Usa Vista previa de Compose cuando desarrolles elementos componibles individuales. La vista previa visualiza los elementos de Compose y se actualiza automáticamente para mostrar el efecto de los cambios de código. Además, admite la visualización de los elementos de la IU con diferentes configuraciones y estados, como el tema oscuro, las configuraciones regionales y la escala de fuentes.

Ediciones en vivo de literales (obsoleto)

Android Studio puede actualizar en tiempo real algunos literales constantes que se usan en elementos componibles dentro de vistas previas, el emulador y el dispositivo físico. Estos son algunos tipos compatibles:

  • Int
  • String
  • Color
  • Dp
  • Boolean

Video en el que el usuario cambia literales en el código fuente y la vista previa se actualiza de forma dinámica

Puedes ver literales de constantes que activan actualizaciones en tiempo real sin el paso de compilación habilitando decoraciones literales a través del indicador de IU de Ediciones en vivo de literales:

Cómo habilitar la Edición en vivo de literales

Apply Changes

Apply Changes te permite actualizar el código y los recursos sin tener que volver a implementar tu app en un emulador o dispositivo físico (con algunas limitaciones).

Cada vez que agregas, modificas o borras elementos componibles, puedes hacer clic en el botón Apply Code Changes para actualizar la app sin tener que volver a implementarla:

Un usuario que hace clic en el botón "Aplicar cambios"