Curso Android | #4. Emuladores

En este capítulo, vamos a configurar un emulador y ver alternativas al emulador de Android Studio.

Podés acceder al curso completo desde este link.

También te recomiendo seguir el curso de Kotlin en este link

Podés seguirme a mi en LinkedIn o también a Maxi en LinkedIn o Twitter si querés estar al tanto de las próximas publicaciones de cada capítulo.

Antes de empezar

En el segundo capítulo de este curso nombramos la virtualización.

La virtualización es una tecnología de nuestro procesador, que permite correr una instancia virtual de otro dispositivo.

En nuestro caso, es la posibilidad de ejecutar Android sobre Windows/Linux/MacOS.

Para conocer si nuestro procesador es compatible con la virtualización y no sabemos qué modelo de procesador tenemos, podemos descargar CPU-Z desde este link, es totalmente gratis.

Una vez instalado, procedemos a abrir el programa, y nos mostrará una ventana similar a la imagen a continuación, contiene todos los datos sobre nuestro procesador como el modelo, marca, núcleos, etc.

Si nuestro procesador es Intel las instrucciones de virtualización se llaman VT-x. Para procesadores AMD las instrucciones se llaman AMD-V

Si en este programa, no figuran las instrucciones necesarias para la virtualización, no podremos crear dispositivos virtuales en nuestra PC.

Pero tranquilo, no todo está perdido, aún puedes utilizar un teléfono con Android para probar tus aplicaciones.

Device Manager

Volviendo a Android Studio, a la derecha tenemos una pestaña que dice Device Manager.

El Device Manager es el administrador donde vamos a tener una lista de todos los dispositivos conectados, agregar nuevos y eliminarlos.

Al hacer click en la pestaña de Device Manager, se nos mostrará una lista vacia, donde tenemos un apartado para dispositivos Virtuales y Físicos.

Ahora veremos como crear un dispositivo virtual y luego como añadir un dispositivo físico.

Dispositivo Virtual

Para crear un dispositivo virtual, vamos a hacer click en el botón de Create Device.

Se abrirá la siguiente ventana.

En esta ventana tenemos varias opciones, las principales que nos ofrecen son versiones emuladas de los teléfonos de Google como los Pixel, aplicaciones para televisores con Android, para smart watchs, tablets y para autos.

En nuestro caso vamos a crear un dispositivo Pixel XL, vamos a hacer click en la opción de la lista y darle click a Next.

En esta ventana, tenemos que elegir que versión de Android queremos usar en nuestro emulador.

En el capítulo anterior hablamos de los API Level, si no lo viste podes verlo aqui. Ahora en esta ventana podemos ver a qué versión de Android corresponde cada API Level.

Si no disponemos de la versión que queremos emular podemos descargarla, haciendo click en el botón de Download y la descarga va a comenzar automáticamente.

Para continuar yo voy a seleccionar la versión 11 de Android (API Level 30) y vamos a hacer click de nuevo en Next

Ahora vamos a configurar nuestro emulador, para ver todas las opciones como en la imagen solo basta con hacer click en Show Advanced Settings

Vamos a ir por partes explicando cada uno de los parámetros.

  • Startup orientation: Es la orientación de nuestro dispositivo a la hora de iniciarlo, por defecto está en Portrait
  • Camera: También podemos emular una cámara, entre las opciones podemos no usar cámara, utilizar una escena virtual, simular que tenemos una cámara o utilizar una webcam.
  • Network: Aquí podemos configurar la red, en el apartado de Speed podemos seleccionar tipos de redes LTE(4G), HSPDA(3.5G),UMTS(3G), y podemos agregar una latencia* si gustamos.
  • Emulated Performance: Como estamos emulando, también vamos a emular el rendimiento, la performance no va a ser la misma que el dispositivo físico
    • Graphics: Si tenemos una placa de video, podemos seleccionar la opción Hardware – GLES 2.0 esto nos va a dar un poco más de performance a la hora de emular, si no podemos dejarlo en Software – GLES 2.0 o en Automático.
    • Boot option: Aquí vamos a definir cómo va a iniciar nuestro emulador.
      • Cold boot: Nuestro dispositivo iniciará desde 0
      • Quick boot: Nuestro dispositivo volverá al estado en el que se encontraba al momento de dejar de usarlo.
      • Choose from snapshot: Esta opción está destinada a trabajar con una Imagen del sistema en un cierto estado, es como si capturamos un momento en nuestra vida y lo pudiéramos guardar, bueno afortunadamente podemos hacer esto en varios sistemas no solo en emuladores, y trabajar a partir de un estado concreto.
    • Multi-Core CPU: En esta opción podemos asignar cuantos de los núcleos de nuestro procesador queremos asignar al emulador. Por defecto es 1 solo núcleo, pero si contamos con un procesador de 4 o más núcleos, podemos asignar 2 o más núcleos. Si ponemos todos los núcleos destinados a la emulación podemos causar grandes problemas de rendimiento en nuestra PC.
      En mi caso mi procesador es de 8 núcleos y 16 hilos (Esto es un tema para otro capítulo). Entonces voy a asignar 4 núcleos a la emulación.
  • Memory and Storage: Aquí vamos a asignar el almacenamiento que va a tener nuestro dispositivo.
    • RAM: Es la memoria RAM que queremos que nuestro emulador tenga. Recomiendo entre 2048MB a 4096MB en caso que tengamos 8GB o más de memoria RAM instalada.
    • VM heap: Es la memoria RAM que habilitamos a la JVM(Java Virtual Machine) destinada a correr aplicaciones en el dispositivo.(Otro tema que se merece su propio capítulo)
    • Internal Storage: Es la memoria física, donde se van a instalar nuestras apps. Un buen valor, sería entre 2048MB a 4096MB.
    • SD Card: Consiste en simular que tenemos una tarjeta SD conectada a nuestro dispositivo, si queremos la podemos definir o no, todo depende del desarrollo.
  • Device Frame: Consiste en aplicar una skin a nuestro emulador, esta es una opción estética.
  • Keyboard: Es una sola opción que habilita o bloquea, nuestro teclado físico en el emulador, te recomiendo mantenerlo habilitado.

Latencia: Es el tiempo que tarda enviar un paquete de datos de un dispositivo a otro.

Una vez configurado nuestro emulador, podemos hacer click en Finish.

Si todo salio bien, veríamos algo similar a esta imagen.

Dispositivo Fisico

También podemos usar nuestro teléfono para probar nuestros desarrollos, solo basta con activar el ADB(Android Debug Bridge)

Primero vamos a activar las opciones de desarrollador, para eso vamos a entrar en las opciones de nuestro teléfono, los pasos los voy a realizar en un Samsung S10e, las ubicaciones pueden variar, pero es casi lo mismo para todos.

En mi caso voy a entrar en “Acerca del teléfono”.

Una vez dentro del menú, vamos a tener datos de nuestro teléfono como el IMEI o el número de serie, vamos a continuar tocando en información de software.

Ahora vamos a tener la versión de Android, y más datos sobre el sistema de nuestro teléfono.

Paso siguiente, tenemos que tocar 7 veces donde dice “Número de compilación”, para que nos habilite el modo desarrollador.

Si todo sale bien, podremos ver un mensaje diciendo que se activó el modo desarrollador.

Este tipo de mensaje se llama “Toast

Ahora nos queda volver al menú de configuración del teléfono, y encontrar el menú de Opciones de desarrollador.

Vamos a ingresar al menú y buscar las opciones de Depuración.

En este caso, voy a habilitar la depuración por USB y la depuración inalámbrica solo disponible para versiones de Android 11 o superior.

Podemos probar nuestras apps sin conectar el teléfono a la PC.😮

El futuro es hoy, oiste viejo – Dewey

Bien, ya tenemos la depuración habilitada, ya estamos listos para conectar nuestro teléfono!

Conectando por USB

Solo necesitamos conectar el cable usb de nuestro teléfono a nuestra computadora, te recomiendo un cable en buen estado y de buena calidad, puede que si el cable esté dañado o sea de mala calidad, la depuración no va a funcionar como debería o directamente no lo detecte la computadora.

Al conectar nuestro teléfono automáticamente nos aparecerá una ventana así.

Podemos permitir siempre desde esta computadora y evitar el mismo mensaje cada vez que conectemos nuestro teléfono a la PC.

Si todo sale bien, vamos a ver nuestro teléfono conectado a la PC en el apartado de dispositivos físicos.

En la columna de Type, nos indica el tipo de conexión en este caso USB

Conectando por Wi-Fi

En el apartado de dispositivos físicos, tenemos que hacer click en Pair using Wi-Fi

Automáticamente se nos abrirá una ventana, con dos opciones, emparejar con QR o con un código. Vamos a proceder con el QR.

Para utilizar el escáner de QR, basta con volver al menú de desarrollo en la opción de depuración inalámbrica.

Entramos en la opcion de Vincular dispositivo mediante código QR, escaneamos el codigo QR que nos provee Android Studio, y listo!

Si hicimos bien todos los pasos tendremos disponible nuestro teléfono en el Device Manager

¿Qué elegir? ¿USB o Wi-Fi?

Eliminar la necesidad de cables, es un gran avance en la comodidad, al menos hablando desde mi experiencia. Poder probar mis aplicaciones sin la necesidad de conectar mi teléfono a la PC, es una gran ventaja ya que me permite probar mis desarrollos conectado al debugger o al profiler, mientras hago mi café por ejemplo.

Pero… sip siempre hay un “pero”, nuestra vida es un if anidado, si no sabés que es un if aca tenes un hermoso capítulo en el curso de Kotlin sobre esta estructura condicional, link al capítulo.

Todo va a depender de nuestra red interna, el protocolo con el que nos conectamos a la red por WiFi (802.11ax, ac, n, g, etc) desde nuestro teléfono y nuestra PC en el caso que nos conectemos por WiFi.

Si nuestra PC está conectada por cable ethernet, y si el puerto del cable es Fast Ethernet (100Mbps*) o Gigabit Ethernet (1000Mbps*), hasta el tipo de cable y la ficha del mismo, etc.

Todo esto, influye y mucho.

Son tantos factores a tener en cuenta y los que van a determinar nuestra experiencia, que no hay una respuesta correcta.

Por eso te recomiendo que pruebes por tu cuenta como funciona con y sin cables, a partir de esa experiencia tomar la decisión que mejor se adapte a tus necesidades.

*Mbps = megabits por segundo, cuando se trata de conexiones de red se habla en megabits, para mas info podés ver este link.

Ejecutando nuestra App

Ya tenemos todo configurado, nuestro emulador o nuestro teléfono listos para ejecutar nuestra app.

En mi caso, uso el emulador y mi teléfono para probar cosas, pero dependiendo de lo que hagas vas a tener una opción u otra.

Elegimos cualquier dispositivo, y hacemos click en Run (la flechita verde).

Al hacer click en Run, Gradle comenzará el proceso de compilación, y realizará la instalación de nuestra app en el dispositivo físico o virtual, en este caso voy a mostrar ambos.

Vista desde el emulador

La siguiente imagen, es una captura desde mi teléfono.

La barra de ejecución es la misma que con el emulador.

Es igual que la emulación, con la diferencia de donde estoy ejecutando la app.

Emulador vs Dispositivo físico

Aquí es donde hay varias opiniones.

Para comenzar, emular un dispositivo es muy caro, en el sentido del costo de hardware necesario para lograr hacer la tarea (Hardware es lo que golpeamos cuando falla el Software)

A nuestra computadora le significa tener que destinar recursos a simular otro entorno, esos recursos son limitados y más aún si no tenemos una computadora lo suficientemente grande como para afrontar una tarea tan pesada, probar una aplicación en un emulador puede volverse un infierno, ya que la velocidad de respuesta del emulador está ligada a los recursos de nuestra máquina y si es mala esa velocidad, estás demorando el desarrollo de tu aplicación. Por eso a la hora de probar nuestras aplicaciones, tenemos que tener en cuenta si nuestra computadora va a poder responder bien en el caso que consideremos testear todo en un emulador.

¿Entonces?

Yo recomiendo que uses un teléfono con Android, tu computadora te lo va a agradecer, si te lo podés permitir el emulador es una herramienta muy útil, en mi caso se me hace más cómodo tener el código en la misma pantalla que el emulador. Pero de nuevo, es en base a mi criterio personal y gusto.

Conclusiones

Hoy vimos como crear un emulador desde cero, también como utilizar nuestro teléfono para probar nuestros futuros proyectos, pero este capítulo es solo una pequeña introducción. Existen servicios como Genymotion que ofrecen soluciones en la nube para emular miles de dispositivos al mismo tiempo, de todos los tamaños y marcas que existen, cuando se trata de desarrollos muy grandes y bien financiados, este es uno de los servicios que se utilizan para realizar pruebas automatizadas a las aplicaciones.

Pero por el momento ya estamos listos para comenzar a desarrollar apps para Android!

¡Deja un comentario!

Artículos relacionados

Curso Android | #3. Crear un proyecto

En este capítulo vamos a crear nuestro primer proyecto desde 0, viendo todas las posibilidades que nos ofrece Android Studio Podés acceder al curso completo