Cómo correr emuladores Android sin Android Studio en Mac OSX

Cómo correr emuladores Android sin Android Studio en Mac OSX 1024 683 ResIT

El desarrollo de aplicaciones modernas utilizando frameworks como Ionic o React Native puede ser muy atractivo para equipos pequeños o no tan pequeños. Con estos frameworks, un equipo puede iterar rápidamente y desarrollar aplicaciones lean multiplataforma y validar un producto sin la necesidad de contar con desarrolladores especializados en cada plataforma, Android e iOS.

Dichos frameworks son desarrollados con lenguaje de programación como JavaScript o TypeScript, y el uso de editores como Sublime Text, Atom o Visual Studio Code, como alternativa a los IDES especializados ha ido tomando mayor fuerza en los últimos años. Sin embargo, con el fin de desplegar una aplicación y poder probar su funcionalidad en un ambiente emulado de desarrollo para Android, por lo general es necesario utilizar el IDE oficial de dicha plataforma, Android Studio.

Las herramientas como el SDK de Android y la posibilidad de crear emuladores vienen integradas a dicho IDE, lo que hace simple su uso, pero obliga al usuario a  instalar y gestionar las dependencias y la creación de emuladores desde dicho software. Pero hay gente que, como yo, desean evitar la dependencia a complejos IDE’s solo para utilizar sus funcionalidades de emulación. Esto es especialmente útil en equipos con especificaciones reducidas ya sea por rango del equipo o antigüedad.

Este post fue escrito como una guía para gestionar y utilizar emuladores Android desde el terminal, sin la necesidad de instalar Android Studio.

Instalación del set de herramientas.

En Mac OS, en una terminal, es necesario instalar el paquete Command Line Tools (CLT) de Xcode:

xcode-select –install

Esta guía utiliza el software Homebrew para la instalación de las herramientas. A continuación, ejecutar:
/usr/bin/ruby -e «$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)»
Ahora estamos en condiciones de instalar las herramientas específicas para Android.El primer paso consiste en la instalación de el set de herramientas: JAVA JDK

brew cask install java

SDK y NDK para la gestión de las dependencias.

brew cask install android-sdk
brew cask install android-ndk

Luego, es necesario definir las variables de entorno. Dependiendo de si se utiliza bash o zsh, es necesario editar diferentes archivos.
bash:
~/.bash_profile
zsh:
~/.zshrc
En el archivo correspondiente se debe agregar (teniendo cuidado con reemplazar en JAVA_HOME la versión instalada)

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk{versión instalada}.jdk/Contents/Home
export ANDROID_NDK_HOME=/usr/local/share/android-ndk
export ANDROID_HOME=/usr/local/share/android-sdk
export ANDROID_SDK_ROOT=$ANDROID_HOME
export PATH=$PATH:$ANDROID_SDK_ROOT/tools
export PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools

Luego de recargar el archivo de configuración o reiniciar el terminal, es posible utilizar las herramientas de Android.

Instalación de dependencias

Ahora, es necesario instalar los paquetes “platform-tools”, “platforms” y “build-tools”.
En caso de escoger una versión en particular, al ejecutar el siguiente comando, es posible visualizar los disponibles

sdkmanager list

Para instalar las últimas versiones:

sdkmanager "platform-tools" "platforms" "build-tools"

Para instalar una versión en particular, es posible agregar “<paquete>;<version>”, por ejemplo:

sdkmanager "platforms;android-28"

Para la creación de emuladores, en esta guía utilizaremos la versión android-28.
A continuación, es necesario instalar los paquetes necesarios para la ejecución de los emuladores:

sdkmanager "emulator"
sdkmanager "extras;intel;Hardware_Accelerated_Execution_Manager"
sdkmanager "system-images;android-28;google_apis;x86_64"

En el caso de que algunos paquetes necesiten la aceptación de licencias, se hace necesaria la opción –licenses

sdkmanager --licenses

Con esto, estaremos en condiciones de crear emuladores de Android.

Creación de emuladores

En esta etapa, es necesario determinar las especificaciones que queremos para el emulador. La herramienta avdmanager con la opción -list permite visualizar los emuladores predefinidos disponibles:

avdmanager list

En nuestro ejemplo:

Name: Pixel
Device: pixel (Google)
Path: /Users/aariveros/.android/avd/Pixel.avd
Target: Google APIs (Google Inc.)
Based on: Android API 28 Tag/ABI: google_apis/x86_64
Una vez escogido un emulador, se puede prodecer a crear una instancia de la imágen y las especificaciones escogidas. En nuestro caso, para crear un emulador con:
Nombre a elección: Pixel
Imágen (paquete escogido):
system-images;android-28;google_apis;x86_64
Especificaciones (Name de avdmanager list): “Pixel”

avdmanager create avd --name Pixel --abi google_apis/x86_64 --package 'system-images;android-28;google_apis;x86_64' --device "Pixel" 

Con lo que será posible lanzar dicho emulador con el comando:

emulator -avd Pixel

Con esto se ejecutará por primera vez el emulador, lo que tomará un tiempo dependiendo de las especificaciones de la máquina. En las ejecuciones sucesivas, tomará menos tiempo en lanzar. Ahora es posible utilizarlo como si hubiese sido creado desde Android Studio.
En lo sucesivo, una opción útil para mantener los paquetes actualizados es la de –update:

sdkmanager --update

Esta es la primera guía técnica y práctica de nuestro blog en resIT. Me ha sido de utilidad cada vez que debo realizar una instalación desde un entorno limpio. Espero que sirva como alternativa para los desarrolladores que no se conforman con utilizar las herramientas por defecto.

Andrés Riveros – aariveros@resit.cl