Skip to content

Most visited

Recently visited

navigation

Compilar y ejecutar tu app

De manera predeterminada, Android Studio configura nuevos proyectos para implementarlos en el emulador o en un dispositivo físico con solo unos clics. Con Instant Run, puedes aplicar los cambios en los métodos y los recursos de apps existentes a una app en ejecución sin compilar un nuevo APK, de modo que los cambios en el código se visualicen casi de forma instantánea.

Para compilar y ejecutar tu app, haz clic en Run . Android Studio compila tu app con Gradle, solicita que selecciones un destino de implementación (un emulador o un dispositivo conectado) y, luego, implementa la app en dicho destino. Puedes personalizar parte de este comportamiento predeterminado (por ejemplo, la selección de un destino de implementación automático) cambiando la configuración de ejecución.

Si deseas usar Android Emulator para ejecutar tu app, debes preparar un Android Virtual Device (AVD). Si todavía no creaste uno, haz clic en Run y luego en Create New Emulator, en el diálogo Select Deployment Target. Sigue las instrucciones del asistente Virtual Device Configuration para definir el tipo de dispositivo que deseas emular. Para obtener más información, consulta Creación y administración de dispositivos virtuales.

Si usas un dispositivo Android físico, debes habilitar la depuración USB en el dispositivo. Para obtener más información, consulta Ejecutar apps en un dispositivo de hardware.

Nota: Además, puedes implementar tu app en el modo de depuración. Para ello, haz clic en Debug . La ejecución de tu 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, y también ejecutar herramientas de depuración. Para obtener más información, consulta Depuración de tu app.

Seleccionar y compilar un módulo diferente

Si tu proyecto tiene varios módulos más allá del módulo predeterminado de la app, puedes compilar un módulo específico de la siguiente manera:

Android Studio compila el módulo con Gradle. Una vez que esté compilado el módulo, puedes ejecutarlo y depurarlo si compilaste un módulo para una app o un dispositivo nuevos, o bien usarlo como dependencia si compilaste una biblioteca o un módulo de Google Cloud.

Para ejecutar un módulo compilado de una app:

Modificar la configuración de ejecución y depuración

La configuración de ejecución y depuración especifica el módulo que se ejecutará, el paquete que se implementará, la actividad que se iniciará, el dispositivo de destino, la configuración del emulador y las opciones de logcat, entre otros aspectos. La configuración predeterminada de ejecución y depuración inicia la actividad predeterminada del proyecto y ofrece el diálogo Select Deployment Target para seleccionar el dispositivo de destino. Si la configuración predeterminada no se adapta a tu proyecto o módulo, puedes personalizar la configuración de ejecución y depuración, o incluso crear una nueva, en los niveles de proyecto, configuración predeterminada y módulo. Para editar una configuración de ejecución y depuración, selecciona Run > Edit Configurations. Para obtener más información, consulta Creación y edición de configuraciones de ejecución y depuración.

Modificar la variante de compilación

En la configuración predeterminada, Android Studio compila la versión de depuración de la app, prevista únicamente para pruebas, al hacer clic en Run. Debes compilar la versión de lanzamiento a fin de preparar la app para el lanzamiento al público.

Para modificar la variante de compilación que usa Android Studio, dirígete a Build > Select Build Variant y selecciona una variante diferente en el menú desplegable. En la configuración predeterminada, los nuevos proyectos se configuran con una variante de compilación de depuración y versión.

Usando clases de productos, puedes crear variantes de compilación adicionales para diferentes versiones de tu app, cada una con distintas funciones o requisitos de dispositivo. Para obtener más información sobre las variantes de compilación y clases de productos, consulta Configurar tu compilación.

Controlar el proceso de compilación

Para ver información detallada sobre el proceso de compilación, haz clic en Gradle Console. En la consola, se muestra cada tarea que Gradle ejecuta para compilar tu app, como se muestra en la figura 1.

Figura 1: Consola de Gradle en Android Studio.

Si las variantes de compilación usan clases de productos, Gradle también invoca tareas para compilar esas clases de producto. Para ver una lista de todas las tareas de compilación disponibles, haz clic en Gradle en el lado derecho de la ventana IDE.

Si se produce un error durante el proceso de compilación, aparecerá la ventana Messages, en la que se describirá el problema. Es posible que Gradle recomiende algunas opciones de la línea de comandos para ayudarte a resolver el problema. Por ejemplo, --stacktrace o --debug. Para usar opciones de la línea de comandos con el proceso de compilación:

  1. Abre el cuadro de diálogo Settings o Preferences:
    • En Windows o Linux, selecciona File > Settings en el menú principal.
    • En Mac OSX, selecciona Android Studio > Preferences en el menú principal.
  2. Dirígete a Build, Execution, Deployment > Compiler.
  3. En el campo de texto junto a Command-line Options, ingresa las opciones de la línea de comandos.
  4. Haz clic en OK para guardar y salir.

Gradle aplicará estas opciones de la línea de comandos la próxima vez que intentes compilar tu app.

Generar APK

Cuando haces clic en Run, Android Studio genera un APK de depuración y lo implementa en tu dispositivo de destino. Sin embargo, para que puedas generar una versión de tu app pensada para la distribución al público, primero debes saber firmar tu app. Luego, puedes generar múltiples APK firmados de las variantes de compilación de depuración o versión. Para buscar los archivos de APK generados, haz clic en el vínculo que aparece en el cuadro de diálogo emergente, como se muestra en la figura 2.

Figura 2: Haz clic en el vínculo para buscar los archivos APK generados.

Acerca de Instant Run

Instant Run, presentada en la versión Android Studio 2.0, es una función para los comandos Run y Debug que reduce de manera significativa el tiempo entre las actualizaciones de tu app. Si bien la primera compilación puede demorar más tiempo en completarse, Instant Run aplica actualizaciones posteriores en tu app sin compilar un APK nuevo, de modo que los cambios se visualicen mucho más rápido.

Instant Run solo es compatible cuando implementas la variante de compilación de depuración, usas el complemento de Android para Gradle 2.0.0 o una versión posterior y fijas minSdkVersion en 15 o un valor superior en el archivo build.gradle de nivel de módulo de tu app. Para lograr el máximo rendimiento, fija minSdkVersion en 21 o un valor superior.

Una vez implementada una app, aparece un ícono pequeño y de color amarillo con forma de rayo dentro del botón Run (o el botón Debug ), lo cual indica que Instant Run estará listo para aplicar actualizaciones la próxima vez que hagas clic en el botón. En lugar de compilar un nuevo APK, la función aplica solo esos cambios nuevos y, en algunos casos, ni siquiera se debe reiniciar la app, sino que inmediatamente se muestran los efectos de esos cambios en el código.

Instant Run envía los recursos y el código actualizados a tu dispositivo conectado o al emulador mediante un intercambio directo, intercambio con reinicio o intercambio indirecto. Automáticamente determina el tipo de intercambio que se debe realizar según el tipo de cambio que hayas hecho. En el video que aparece arriba se ofrece información interesante sobre cómo todo esto funciona de manera imperceptible. Sin embargo, consulta la siguiente tabla para hallar un resumen rápido sobre cómo se comporta Instant Run cuando aplicas determinados cambios en el código en un dispositivo de destino.

Cambio en el código Comportamiento de Instant Run
  • Cambiar el código de implementación de un método existente

Compatible con el intercambio directo: se trata del tipo de intercambio más ágil y permite que los cambios se visualicen mucho más rápido. La aplicación continúa ejecutándose y se usa un método de código auxiliar con la nueva implementación la próxima vez que se llama al método.

En los intercambios directos, no se vuelven a inicializar objetos en la app en ejecución. Es posible que debas reiniciar la actividad actual o la app para poder visualizar determinadas actualizaciones. En la configuración predeterminada, Android Studio reinicia automáticamente la actividad actual luego de realizar un intercambio directo. Si no deseas este comportamiento, puedes inhabilitar los reinicios de actividad automáticos.

  • Cambiar o eliminar un recurso existente
Compatible con el intercambio con reinicio: este intercambio es muy rápido, pero Instant Run debe reiniciar la actividad actual cuando envía los recursos modificados a tu app. Tu app continúa ejecutándose, pero es posible que observes un leve parpadeo en la pantalla mientras se reinicia la actividad. Esto es normal.
Cambios estructurales en el código. Por ejemplo:
  • Agregar, quitar o cambiar:
    • una anotación;
    • un campo de instancia;
    • un campo estático;
    • una firma de método estático;
    • una firma de método de instancia.
  • Cambiar la clase primaria de la cual recibe herencia la clase actual
  • Cambiar la lista de interfaces implementadas
  • Cambiar el inicializador estático de una clase
  • Reordenar los elementos de diseño que usan ID de recursos dinámicos

Compatible con el intercambio indirecto (nivel de API 21 o superior): este intercambio es un poco más lento porque, si bien no se requiere un nuevo APK, Instant Run debe reiniciar por completo la app cuando aplica cambios estructurales en el código.

En el caso de los dispositivos de destino en los que se ejecuta un nivel de API 20 o inferior, Android Studio implementa un APK completo.

  • Cambiar el manifiesto de la app
  • Cambiar los recursos a los que hace referencia el manifiesto de la app
  • Cambiar un elemento de IU de widget de Android (se requiere Clean and Rerun)

Cuando realizas cambios en el manifiesto de la app o en los recursos a los que se hace referencia en este, Android Studio automáticamente implementa una nueva compilación para aplicar estos cambios. Esto se debe a que determinada información sobre la app, como el nombre, los recursos de ícono y los filtros de intenciones, se determina a partir del manifiesto cuando se instala el APK en el dispositivo.

Si el proceso de compilación automáticamente actualiza cualquier parte del manifiesto de la app, como la iteración automática de versionCode o versionName, no podrás aprovechar Instant Run al máximo. Al usar Instant Run, debes inhabilitar las actualizaciones automáticas de cualquier parte del manifiesto de la app en las variantes de compilación de depuración.

Cuando actualizas un elemento de IU de widget de Android, debes aplicar Clean and Rerun para ver los cambios. De forma alternativa, debido a que las compilaciones de limpieza pueden demorar más cuando se usa Instant Run, puedes inhabilitar Instant Run temporalmente mientras realizas actualizaciones en la IU de tu widget.

Nota: Si necesitas reiniciar la app luego de una falla, no la inicies desde el dispositivo de destino. Si reinicias tu app desde el dispositivo de destino, no se aplicará ninguno de los cambios que hayas hecho en el código luego del intercambio indirecto o de la compilación incremental que se hayan tenido lugar en última instancia. Para iniciar tu app con todos los cambios recientes, haz clic en Run (o Debug) en Android Studio.

Usar Rerun

Cuando se aplican cambios en el código que afectan a determinados inicializadores (por ejemplo, los cambios en el método onCreate() de una app), debes reiniciar la app para que dichos cambios tengan efecto. Para realizar una compilación incremental y reiniciar la app, haz clic en Rerun .

Si debes implementar una compilación limpia, selecciona Run > Clean and Rerun en el menú principal o mantén presionada la tecla Shift y haz clic en Rerun . Mediante esta acción se detiene la app en ejecución, se realiza una compilación limpia completa y se implementa el nuevo APK en el dispositivo de destino.

Inhabilitar el reinicio de actividad automático

Cuando realizas un intercambio directo, la app continúa ejecutándose, pero Android Studio automáticamente reinicia la actividad actual. Para inhabilitar esta configuración predeterminada:

  1. Abre el cuadro de diálogo Settings o Preferences:
    • En Windows o Linux, selecciona File > Settings en el menú principal.
    • En Mac OSX, selecciona Android Studio > Preferences en el menú principal.
  2. Dirígete a Build, Execution, Deployment > Instant Run.
  3. Desmarca la casilla junto a Restart activity on code changes.

Si se inhabilita el reinicio de actividad automático, puedes reiniciar manualmente la actividad actual desde la barra de menú. Para ello, selecciona Run > Restart Activity.

Configurar y optimizar tu proyecto para Instant Run

Android Studio habilita Instant Run de forma predeterminada para los proyectos compilados mediante el complemento de Android para Gradle 2.0.0 y versiones posteriores.

Para actualizar un proyecto existente con la última versión del complemento:

  1. Abre el cuadro de diálogo Settings o Preferences.
  2. Dirígete a Build, Execution, Deployment > Instant Run y haz clic en Update Project, como se muestra en la figura 3.

    Si la opción para actualizar el proyecto no aparece, significa que ya está actualizado con la última versión del complemento de Android para Gradle.

    Figura 3: Actualización del complemento de Android para Gradle para un proyecto existente.

También debes cambiar la variante de compilación a una versión de depuración de tu app para comenzar a usar Instant Run.

Mejorar los tiempos de compilación con la configuración de recursos DEX

Cuando implementas una compilación limpia, Android Studio instrumenta tu app para permitir que Instant Run aplique actualizaciones de códigos y recursos. Si bien la actualización de la app en ejecución se produce mucho más rápido, la primera compilación puede tardar más en completarse. Puedes mejorar el proceso de compilación configurando algunos ajustes de DexOptions:

maxProcessCount
Establece la cantidad máxima de procesos DEX que se pueden iniciar al mismo tiempo. Si el daemon de Gradle ya está en ejecución, debes detener el proceso antes de inicializarlo con un nuevo conteo máximo de procesos. Para terminar el daemon de Gradle, puedes llamar a uno de los siguientes elementos desde la ventana Terminal:
  • En Windows, llama a gradlew --stop
  • En Linux/Mac OSX, llama a ./gradlew --stop
javaMaxHeapSize
Establece el tamaño máximo del grupo de asignación de memoria para la operación dex. Cuando se transmite un valor, puedes anexar la letra “k” para indicar kilobytes, “m” para indicar megabytes o “g” para indicar gigabytes.

En el siguiente ejemplo, se configura maxProcessCount en 4 y javaMaxHeapSize en "2g" en el archivo de nivel de módulo build.gradle:

android {
  ...
  dexOptions {
    maxProcessCount 4 // this is the default value
    javaMaxHeapSize "2g"
  }
}

Debes experimentar con estas configuraciones aumentando los valores asignados y observando el efecto en los tiempos de compilación. Si asignas demasiados recursos al proceso de conversión a archivos dex, podrías experimentar un impacto negativo en el rendimiento.

Habilitar la función de conversión a dex en proceso y compilación Java incremental

La versión 2.1.0 y las versiones posteriores del complemento de Android para Gradle presentan mejoras adicionales en el proceso de compilación, incluidas la compilación Java incremental y la conversión a dex en proceso. La compilación Java incremental está habilitada de manera predeterminada y reduce el tiempo de compilación durante el desarrollo simplemente a través de una nueva compilación de las partes de la fuente que cambiaron o deben compilarse de nuevo.

La conversión a dex en proceso permite realizar la conversión a archivos dex dentro del proceso de compilación en lugar de usar un proceso de VM externo por separado. Esto no solo permite que las compilaciones incrementales sean mucho más rápidas, sino también acelera las compilaciones completas de manera significativa. Para habilitar esta función, debes configurar el tamaño máximo de montón del daemon de Gradle en un valor de al menos 2048 MB. Para ello, incluye lo siguiente en el archivo gradle.properties de tu proyecto:

org.gradle.jvmargs = -Xmx2048m

Si definiste un valor para javaMaxHeapSize en el archivo build.gradle de nivel de módulo, debes fijar el tamaño máximo de montón del daemon en un valor de javaMaxHeapSize superior a 1024 MB. Por ejemplo, si fijaste javaMaxHeapSize en “2g”, debes agregar lo siguiente al archivo gradle.properties del proyecto:

org.gradle.jvmargs = -Xmx3072m

Excluir un proyecto de Windows Defender

En los sistemas Windows, Windows Defender puede ocasionar demoras mientras usas Instant Run. Si usas Windows Defender, debes excluir la carpeta del proyecto de Android Studio de los análisis de software malicioso que realiza Windows Defender.

Mejorar los tiempos de compilación con Crashlytics

Si tu versión del complemento de Fabric Gradle es anterior a la 1.21.6, Crashlytics puede extender los tiempos de compilación. Para mejorar el rendimiento de compilación mientras desarrollas tu app, puedes actualizar el complemento a la versión más reciente o inhabilitar Crashlytics para tu variante de compilación de depuración.

Limitaciones de Instant Run

Instant Run está diseñado para acelerar el proceso de compilación e implementación en la mayoría de las situaciones. Sin embargo, hay algunos aspectos del uso de Instant Run que podrían afectar el comportamiento y la compatibilidad en tu app. Si experimentas algún otro problema mientras usas Instant Run, envía un error.

Implementación en varios dispositivos

Instant Run usa diferentes técnicas para realizar intercambios directos, con reinicio e indirectos que son específicos del nivel de API del dispositivo de destino. Por esta razón, cuando se implementa una app en varios dispositivos al mismo tiempo, Android Studio desactiva Instant Run temporalmente.

Generar varios archivos dex en tu app

Si tu proyecto está configurado para Multidex heredada (es decir, cuando build.gradle presenta la configuración multiDexEnabled true y minSdkVersion 20 o valores inferiores) e implementas la app en dispositivos de destino con Android 4.4 (nivel de API 20) versiones anteriores, Android Studio inhabilita Instant Run.

Si minSdkVersion se fija en 21 o un valor superior, Instant Run configura de forma automática tu app para generar varios archivos dex. Debido a que Instant Run solo funciona con la versión de depuración de tu app, es posible que debas configurar la app para generar varios archivos dex cuando implementes la variante de compilación de versión.

Ejecutar pruebas instrumentadas y perfiladores de rendimiento

En las pruebas instrumentadas se cargan el APK de depuración y el APK de prueba en el mismo proceso en un dispositivo de prueba, lo que permite que los métodos de control anulen el ciclo de vida normal de la app y realicen pruebas. Durante la ejecución o depuración de pruebas instrumentadas, Android Studio no inyecta los métodos adicionales necesarios para Instant Run y desactiva la función.

Cuando perfilas una app, debes inhabilitar Instant Run. El impacto en el rendimiento es leve cuando se usa Instant Run y un poco más importante cuando se anulan los métodos con un intercambio directo. Este impacto en el rendimiento podría interferir con la información proporcionada por las herramientas de generación de perfiles de rendimiento. Además, los métodos de código auxiliar generados con cada intercambio directo pueden suponer complicaciones para los seguimientos de pila.

Usar complementos de terceros

Android Studio inhabilita de manera temporal la biblioteca de cobertura de código Java (JaCoCo) y ProGuard cuando se usa Instant Run. Debido a que Instant Run solo funciona con las compilaciones de depuración, esto no afecta tu compilación de versión.

Determinados complementos de terceros que realizan mejoras de códigos de bytes pueden ocasionar problemas con respecto a la manera en que Instant Run instrumenta tu app. Si experimentas estos problemas, pero deseas continuar usando Instant Run, debes inhabilitar esos complementos para tu variante de compilación de depuración. Además, para mejorar la compatibilidad con complementos de terceros, puedes notificar un error.

Aplicar cambios en apps con varios procesos

Instant Run solo instrumenta los procesos principales de tu app a fin de realizar intercambios directos y con reinicio. Cuando se aplican cambios de código en otros procesos de la app (por ejemplo, cambios en la implementación de un método o en un recurso existente), Instant Run realiza un intercambio indirecto.

Inhabilitar Instant Run

Para inhabilitar Instant Run:

  1. Abre el cuadro de diálogo Settings o Preferences.
  2. Dirígete a Build, Execution, Deployment > Instant Run.
  3. Desmarca la casilla junto a Enable Instant Run.
This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)