Para ver el aspecto y el comportamiento de tu app en un dispositivo, debes compilarla y ejecutarla. Android Studio configura proyectos para que puedas implementar tu app en un dispositivo virtual o físico con unos pocos clics.
Esta descripción general se centra en cómo usar Android Studio para compilar y ejecutar tu app para pruebas y depuración. Si deseas obtener información para usar Android Studio al compilar tu app antes de lanzarla para los usuarios, consulta Cómo compilar tu app para el lanzamiento a los usuarios. Puedes obtener información más detallada para administrar y personalizar tu compilación, con o sin Android Studio, en Cómo configurar tu compilación.
Compilación y ejecución básicas
Para compilar y ejecutar la app, sigue estos pasos:
- En la barra de herramientas, selecciona la app en el menú de configuración de ejecución.
En el menú del dispositivo de destino, selecciona el dispositivo en el que deseas ejecutar la app.
Si no tienes ningún dispositivo configurado, debes crear un dispositivo virtual de Android para usar Android Emulator o conectar un dispositivo físico.
Haz clic en Run
.
Android Studio te advertirá si intentas iniciar el proyecto en un dispositivo que tiene un error o una advertencia asociados. La iconografía y los cambios estilísticos diferencian entre errores (selecciones de dispositivos que dan como resultado una configuración dañada) y advertencias (selecciones del dispositivo que pueden dar como resultado un comportamiento inesperado, pero aún se pueden ejecutar).
Cómo supervisar el proceso de compilación
Para ver los detalles del proceso de compilación, selecciona View > Tool Windows > Build o haz clic en Build , en la barra de ventanas de herramientas. En la ventana de herramientas Build, se muestran las tareas que ejecuta Gradle para compilar tu app, como se muestra en la Figura 1.

- Pestaña Sync: Muestra las tareas que ejecuta Gradle para sincronizarse con los archivos del proyecto. De manera similar a la pestaña Build Output, si encuentras un error de sincronización, selecciona elementos del árbol para obtener más información al respecto.
- Pestaña Build Output: Muestra las tareas que ejecuta Gradle en forma de árbol, donde cada nodo representa una fase de compilación o un grupo de dependencias de tareas. Si recibes errores de compilación o de tiempo de compilación, inspecciona el árbol y selecciona un elemento para leer el resultado del error, como se muestra en la Figura 2.
Figura 2. Inspecciona la pestaña Build Output para ver los mensajes de error. - Pestaña Build Analyzer: Proporciona información del análisis de rendimiento de la compilación sobre tu compilación. Consulta Cómo solucionar problemas de rendimiento de compilación con Build Analyzer para obtener más información.
- Restart: Realiza la misma tarea que elegir Build > Make Project mediante la generación de archivos de compilación intermedia para todos los módulos del proyecto.
- Filtros: Filtra las advertencias, las tareas o ambas acciones que se completaron correctamente. Esto puede facilitar la búsqueda de problemas en el resultado.
Si las variantes de compilación usan variantes de productos, Gradle también invocará tareas para compilar esas variantes de producto. Para ver la lista de todas las tareas de compilación disponibles, haz clic en View > Tool Windows > Gradle o haz clic en Gradle , en la barra de ventanas de herramientas.
Si se produce un error durante el proceso de compilación, Gradle podría recomendar algunas opciones de la línea de comandos que te ayuden a resolver el problema, como --stacktrace
o --debug
. Para usar opciones de la línea de comandos con el proceso de compilación, haz lo siguiente:
- Abre el diálogo Settings o Preferences:
- En Windows o Linux, selecciona File > Settings en la barra de menú.
- En macOS, selecciona Android Studio > Preferences en la barra de menú.
- Navega hasta Build, Execution, Deployment > Compiler.
- En el campo de texto junto a Command-line Options, ingresa las opciones de la línea de comandos.
- Haz clic en OK para guardar los cambios y salir.
Gradle aplicará estas opciones de la línea de comandos la próxima vez que intentes compilar la app.
Funciones avanzadas de compilación y ejecución
La forma predeterminada de compilar y ejecutar tu app en Android Studio debería ser suficiente para probar una app simple. Sin embargo, puedes usar estas funciones de compilación y ejecución para casos de uso más avanzados:
Para implementar la app en modo de depuración, haz clic en Debug
. La ejecución de la app en el modo de depuración te permite configurar puntos de interrupción en el código, examinar variables y evaluar expresiones en el tiempo de ejecución, así como ejecutar herramientas de depuración. Para obtener más información, consulta Cómo depurar tu app.
Si tienes una app más grande y compleja, usa Apply Changes en lugar de hacer clic en Run
. Esto ahorra tiempo, ya que evitas reiniciar la app cada vez que desees implementar un cambio. Para obtener más información sobre Apply Changes, consulta la sección Cómo implementar de forma incremental con Apply Changes.
Si usas Jetpack Compose, Ediciones en vivo es una función experimental que te permite actualizar elementos componibles en tiempo real sin volver a hacer clic en Run
. Esto te permite enfocarte en escribir código de IU con una interrupción mínima. Para obtener más información, consulta la sección Ediciones en vivo (experimental).
Si tienes una app con múltiples variantes de compilación o versiones, puedes elegir qué variante de compilación implementar mediante la ventana de herramientas de variantes de compilación. Para obtener más información sobre cómo ejecutar una variante de compilación específica, consulta la sección Cómo cambiar la variante de compilación.
Para ajustar las opciones de instalación, inicio y prueba de la app, puedes cambiar la configuración de ejecución y depuración. Para obtener más información sobre cómo crear configuraciones personalizadas de ejecución y depuración, consulta la sección Cómo crear configuraciones de ejecución y depuración.
Te recomendamos usar Android Studio para tus necesidades de desarrollo, pero también puedes implementar tu app en un dispositivo virtual o físico desde la línea de comandos. Para obtener más información, consulta Cómo compilar tu app desde la línea de comandos.
Cómo implementar de forma incremental con Apply Changes
En Android Studio 3.5 y versiones posteriores, Apply Changes te permite enviar cambios de código y recursos a la app en ejecución sin reiniciarla y, en algunos casos, sin reiniciar la actividad actual. Esta flexibilidad te permite controlar qué partes de tu app se reinician cuando quieres implementar y probar pequeños cambios incrementales y, al mismo tiempo, preservar el estado actual del dispositivo.
Apply Changes utiliza funciones de la implementación de JVMTI para Android que son compatibles con dispositivos que ejecutan Android 8.0 (nivel de API 26) o versiones posteriores. Para obtener más información acerca de cómo funciona Apply Changes, consulta el artículo Android Studio Project Marble: Apply Changes (en inglés).
Requisitos
La acción de Apply Changes solo está disponible si se cumplen las siguientes condiciones:
- Si compilas un APK de la app mediante una variante de compilación de depuración.
- Si implementas la app en un emulador o un dispositivo de destino que ejecuta Android 8.0 (nivel de API 26) o versiones posteriores.
Cómo usar Apply Changes
Utiliza las siguientes opciones cuando desees implementar los cambios en un dispositivo compatible:
Apply Changes and Restart Activity : Intenta aplicar los cambios de recursos y de código reiniciando la actividad, pero sin reiniciar la app. Por lo general, puedes usar esta opción cuando modificas un código en el cuerpo de un método o cuando modificas un recurso existente.
También puedes realizar esta acción presionando Ctrl+Alt+F10 (Ctrl+Cmd + Mayúsculas + R en macOS).
Apply Change Changes : Intenta aplicar solo los cambios de código sin reiniciar nada. Por lo general, puedes usar esta opción cuando modificas el código en el cuerpo de un método, pero no has modificado ningún recurso. Si modificaste el código y los recursos, entonces usa Apply Changes and Restart Activity.
Para realizar esta acción, también puedes presionar Ctrl + F10 (Ctrl + Cmd + R en macOS).
Run : Implementa todos los cambios y reinicia la app. Usa esta opción cuando los cambios que hayas realizado no se puedan aplicar mediante ninguna de las opciones de Apply Changes. Para obtener más información sobre los tipos de cambios que requieren reiniciar la app, consulta Limitaciones de Apply Changes.
Cómo habilitar la ejecución de resguardo para Apply Changes
Cuando haces clic en Apply Changes and Restart Activity o Apply Code Changes, Android Studio compila un nuevo APK y determina si se pueden aplicar los cambios. Cuando no se pueden aplicar los cambios debido a que se produciría un error en Apply Changes, Android Studio te solicita que vuelvas a hacer clic en Run (ejecutar).
Sin embargo, si no quieres recibir la solicitud cada vez que ocurra esto, puedes configurar Android Studio para que vuelva a ejecutar automáticamente la app cuando no se puedan aplicar los cambios. Para habilitar este comportamiento, haz lo siguiente:
Abre el diálogo Settings o Preferences:
- En Windows o Linux, selecciona File > Settings en la barra de menú.
- En macOS, selecciona Android Studio > Preferences en la barra de menú.
Ve a Build, Execution, Deployment > Deployment.
Selecciona las casillas de verificación para habilitar el resguardo de ejecución automático para cualquiera de las acciones de Apply Changes.
Haz clic en OK.
Cambios que dependen de la plataforma
Algunas funciones de Apply Changes dependen de versiones específicas de la plataforma de Android. Para aplicar estos tipos de cambios, tu app debe implementarse en un dispositivo que ejecute esa versión de Android (o una versión posterior). Por ejemplo, para agregar un método, se requiere Android 11 o una versión posterior.
Limitaciones de Apply Changes
Apply Changes está diseñado para acelerar el proceso de implementación de la app. Sin embargo, existen algunas limitaciones respecto de cuándo se puede usar.
Cambios de código que requieren reiniciar la app
Algunos cambios de código y recursos no se pueden aplicar hasta que se reinicie la app, incluidos los siguientes:
- Agregar o quitar un campo
- Quitar un método
- Cambiar las firmas de métodos
- Cambiar modificadores de métodos o clases
- Cambiar la herencia de clase
- Cambiar los valores de enumeraciones
- Agregar o quitar un recurso
- Cambiar el manifiesto de la app
- Cambiar las bibliotecas nativas (archivos .so)
Bibliotecas y complementos
Algunas bibliotecas y complementos realizan cambios automáticamente en los archivos de manifiesto de la app o en los recursos a los que se hace referencia en el manifiesto. Estas actualizaciones automáticas pueden interferir en Apply Changes de las siguientes maneras:
- Si una biblioteca o un complemento realiza cambios en el manifiesto de la app, no podrás usar Apply Changes. Debes reiniciar la app para ver los cambios.
- Si una biblioteca o un complemento realiza cambios en los archivos de recursos de la app, no podrás usar la opción Apply Code Changes
. Debes usar Apply Changes and Restart Activity
(o reiniciar la app) para ver los cambios.
Si deseas evitar estas limitaciones, inhabilita todas las actualizaciones automáticas para tus variantes de compilación de depuración.
Por ejemplo, Firebase Crashlytics actualiza los recursos de la app con un ID de compilación único durante cada compilación, lo que evita usar Apply Code Changes y requiere que reinicies la actividad de la app para ver los cambios. Inhabilita este comportamiento para usar Apply Code Changes junto a Crashlytics con las compilaciones de depuración.
Código que hace referencia directamente al contenido en un APK instalado
Si el código hace referencia directamente al contenido del APK de la app instalado en el dispositivo, ese código puede causar fallas o comportamientos incorrectos después de hacer clic en Apply Code Changes .
Ese comportamiento se produce porque al hacer clic en Apply Code Changes, se reemplaza el APK subyacente del dispositivo durante la instalación. En esos casos, puedes hacer clic en Apply Changes and Restart Activity
o en Run
.
Si experimentas algún otro problema al usar Apply Changes, informa un error.
Ediciones en vivo (experimental)
Ediciones en vivo es una función experimental del lanzamiento Canary de Android Studio Giraffe 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 dos modos:
- Manual: los cambios de código se aplican cuando se guardan de forma manual mediante Ctrl + S (Cmd + S para 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:
- Configura tu aplicación para que pueda ejecutarse.
- 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.
- Después de realizar un cambio no admitido, haz clic en Run
para reiniciar la app y reanudar Ediciones en vivo.
Figura 3: En el modo automático, cada vez que realizas un cambio compatible con Ediciones en vivo, la app que se está ejecutando en tu dispositivo o emulador se actualiza en tiempo real.
Comienza a usar Ediciones en vivo
Para comenzar rápidamente, 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
Antes de comenzar, asegúrate de tener instalada la versión canary más reciente de Android Studio Giraffe y de que el nivel de API de tu dispositivo físico o emulador sea al menos 30.
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 vas a File > New > New Project.
Elige la plantilla Empty Compose Activity para Phone and Tablet y, luego, haz clic en Next.
Figura 4: Las plantillas que puedes elegir En Ediciones en vivo, elige Empty Compose Activity.
Completa el diálogo New Project con la información requerida: nombre, nombre del paquete, ubicación de almacenamiento, idioma (configurado en Kotlin) y SDK mínimo.
Figura 5: Ejemplo de la configuración del proyecto.
Haz clic en Finish.
Cómo habilitar Ediciones en vivo
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.
Selecciona la opción Live Edit y el modo que quieres ejecutar desde la configuración.
En el modo manual, los cambios de código se aplican cada vez que guardas manualmente, con Ctrl + S (Cmd + S en macOS). En el modo automático, los cambios de código se aplican en tu dispositivo o emulador a medida que los realizas.
Figura 6: La configuración de Ediciones en vivo.
En el editor, abre el archivo
MainActivity
, que es el punto de entrada de tu app.Haz clic en Run
para implementar tu app y, luego, en Split en la parte superior derecha del editor para abrir la vista previa.
Después de activar Ediciones en vivo, aparecerá la marca de verificación verde de Ediciones en vivo en la parte superior derecha del editor:
Cómo realizar y revisar cambios
A medida que realizas cambios compatibles en el editor, la vista previa 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 la vista previa, como se muestra en la Figura 7.
Figura 7: Vista previa en la que se muestran los cambios de Ediciones en vivo al método Greeting
.
Cómo solucionar problemas con Ediciones en vivo
Si no ves tus cambios en el panel de vista previa, es posible que Android Studio no los haya actualizado. Verifica si el indicador de la IU de Ediciones en vivo muestra un ícono de pausa, como se muestra en la Figura 8, 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 de error.
Figura 8: Indicador de estado de Ediciones en vivo.
Limitaciones de Ediciones en vivo
La siguiente es una lista de limitaciones actuales.
- Ediciones en vivo requiere Compose 1.3.0 o una versión posterior. Si tu proyecto usa una versión anterior de Compose, 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.
- Es posible que se apliquen penalizaciones al rendimiento en las clases que se modifiquen con Ediciones en vivo. Ejecuta la 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
.
- 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 en el 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
enkotlinOptions
, 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 es oficialmente compatible y podría haber problemas. Si tienes problemas, infórmalos.
Preguntas frecuentes sobre Ediciones en vivo
- ¿Cuál es el estado actual de Ediciones en vivo?
- Ediciones en vivo está disponible en el canal canary de Android Studio Giraffe como función experimental. Para activarla o desactivarla, ve a File > Settings > Editor > Live Edit (Android Studio > Preferences > Editor > Live Edit en macOS).
- ¿Cuándo debo usar Ediciones en vivo?
- Usa Ediciones en vivo cuando quieras consultar con rapidez 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?
- En la actualidad, Ediciones en vivo se centra en cambios del código relacionado con la IU y la UX. No admite realizar cambios, por ejemplo, actualizar firmas de métodos, agregar métodos nuevos o cambiar la jerarquía de clases, ya que no se admiten. Para obtener más información, consulta Limitaciones de Ediciones en vivo.
- ¿Cuándo debo usar 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 modo oscuro, las configuraciones regionales y la escala de fuentes.
Cómo cambiar la variante de compilación
De forma predeterminada, Android Studio compila la versión de depuración de la app, que está diseñada solo para uso durante el desarrollo, cuando haces clic en Run .
Para cambiar la variante de compilación que usa Android Studio, realiza una de las siguientes acciones:
- Selecciona Build > Select Build Variant en el menú.
- Selecciona View > Tool Windows > Build Variants en el menú.
- Haz clic en la pestaña Build Variants en la barra de ventanas de herramientas.
Para los proyectos sin código nativo/C++, el panel Build Variants tiene dos columnas: Module y Active Build Variant. El valor de Active Build Variant del módulo determina la variante de compilación que el IDE implementa en el dispositivo y que se puede ver en el editor.
Figura 9: El panel Build Variants especifica dos columnas para los proyectos que no tienen código nativo/C++.
Para alternar entre variantes, haz clic en la celda Active Build Variant de un módulo y elige la variante que desees en la lista.
Para los proyectos con código nativo/C++, el panel Build Variants tiene tres columnas:
- Module (Módulo)
- Active Build Variant (Variante de compilación activa)
- Active ABI (ABI activa)
El valor Active Build Variant del módulo determina la variante de compilación que el IDE implementa en el dispositivo y que se puede ver en el editor. En el caso de los módulos nativos, el valor Active ABI determina la ABI que usa el editor, pero no afecta lo que se implementa.
Figura 10: El panel Build Variants agrega la columna Active ABI para los proyectos con código nativo/C++.
Para cambiar la variante de compilación o ABI, haz clic en la celda de la columna Active Build Variant o Active ABI, y elige la variante o la ABI que desees de la lista. Después de cambiar la selección, el IDE sincronizará el proyecto automáticamente. Si modificas cualquiera de las columnas de una app o un módulo de biblioteca, se aplicará el cambio a todas las filas dependientes.
De forma predeterminada, los proyectos nuevos se configuran con dos variantes de compilación: una de actualización y otra de depuración. Debes compilar la variante de actualización para preparar la app para la versión pública. Para definir otras variaciones de la app con diferentes funciones o requisitos de dispositivo, puedes definir variantes de compilación adicionales.
Conflictos en el diálogo Build Variants de Android Studio
Es posible que veas mensajes de error en el diálogo Build Variants de Android Studio que indican conflictos entre variantes de compilación, como las siguientes:
Este error no indica un problema de compilación con Gradle. Indica que el IDE de Android Studio no puede resolver símbolos entre las variantes de los módulos seleccionados.
Por ejemplo, si tienes un módulo M1
que depende de la variante v1
del módulo M2
, pero M2
tiene la variante v2
seleccionada en el IDE, tienes símbolos sin resolver en el IDE. Supongamos que M1
depende de una clase que solo está disponible en v1
. Cuando se selecciona v2
, el IDE no conoce esa clase. Por lo tanto, no resuelve el nombre de la clase y muestra errores en el código del módulo M1
.
Estos mensajes de error aparecen porque el IDE no puede cargar un código para múltiples variantes a la vez. Sin embargo, en términos de la compilación de tu app, la variante seleccionada en este diálogo no tendrá efecto porque Gradle compila tu app con el código fuente especificado en tus filtros predeterminados de compilación de Gradle, no en función de lo que se carga en la actualidad en el IDE.
Cómo cambiar la configuración de ejecución o depuración
Cuando ejecutas la app por primera vez, Android Studio usa una configuración de ejecución predeterminada. La configuración de ejecución especifica si se debe implementar la app desde un APK o desde un Android App Bundle, y también especifica el módulo para ejecutar, el paquete para implementar, la actividad para iniciar, el dispositivo de destino, la configuración del emulador, las opciones de logcat y otros elementos.
La configuración de ejecución y depuración predeterminada compila un APK, lanza la actividad del proyecto predeterminado y usa el cuadro de diálogo Select Deployment Target para seleccionar dispositivos de destino. Si la configuración predeterminada no se adapta al proyecto o al módulo, puedes personalizar la configuración de ejecución y depuración, o bien crear una nueva, en los niveles del proyecto, de la configuración predeterminada y del módulo.
Para editar una configuración de ejecución y depuración, selecciona Run > Edit configurations. Para obtener más información, consulta Cómo crear y editar configuraciones de ejecución y depuración.