• info@moldeointeractive.com.ar
  • +54-911-25601603

Instalar Android Studio (SDK) en WSL

Android en Windows Subsystem for Linux, ni más ni menos

Ignacio Buioli
- 01/02/2019

Esta relación "familiar" que se ha producido últimamente entre Windows 10 y Linux le ha dado beneficios a todos. Windows ha logrado mantener a grupos de desarrolladores para que no dediquen el 100% de su tiempo con Linux; Linux ha logrado meterse cual "caballo de troya" en Windows; los desarrolladores podemos saltar entre sistemas operativos sin perder el uso de una buena Terminal como la de Linux; y los usuarios tienen la oportunidad de entrar al mundo Linux sin miedo a romper nada. El WSL (Windows Subsystem for Linux) permite instalar una distro de Linux en una suerte de Bash, lo que da las funciones de Git, SSH, npm, tmux, y tantas cosas que podemos hacer con una Terminal de Linux pero sin salir de Windows. Sin ir más lejos, hemos estado usando este sistema para ciertos proyectos en Angular, haciendo la compilación y la ejecución del server en la Terminal de Linux, pero viendo dicho server en una navegador ejecutando en Windows sin salir de la misma computadora. Se lo que se piensa en estos momentos: Si se puede usar npm, node y Angular, ¿puedo usar Cordova? En principio la respuesta es si, claro, Cordova se instala por medio de NPM, es lógico que se pueda utilizar en el WSL. Sin embargo, ¿qué pasa con Android? Los que han usado Cordova con Android seguramente sepan que necesitan Android Studio para instalar el SDK y la Api (lo minimo para hacerlo andar), pero tanto el Android Studio como el SDK y la Api se instalan por medio de una interfaz gráfica (GUI). WSL es una Terminal Bash, no tiene GUI.

¡Ayuda! ¡Quiero instalar Android Studio sin interfaz!

Un Linux es un Linux, no importa que sea solo Bash. Es cierto que hay pruebas muy interesantes de ejecutar programas desde la Bash WSL que se muestren con interfaz gráfica por medio de Xserver. Es una opción, funciona, pero los programas se ejecutan con muchas limitaciones sin contar los constantes bugs. Y aún así, enoja mucho saber que necesitamos abrir el Android Studio con interfaz gráfica solo una vez para que podamos usarlo en Cordova. ¿Por qué razón Google no ofrece Android Studio directamente desde la línea de comandos? Sus razones tiene, no nos importan ahora, y la realidad es que sin Xserver podemos instalar y configurar perfectamente el SDK de Android con la Api para utilizarlo en Apache Cordova.

Instalando Android Studio en WSL

Haciendo pruebas logré la instalación del Android SDK en WSL, sin embargo, encontré un SH tan sintético, elegante y simple que prefiero compartirlo mejor:

Install Android SDK on WSL

Solo es necesario reemplazar <user> con el nombre de usuario y estar seguro de que estemos usando un sistema de 64 bits (en caso de estar en una de 32, modificar los nombres de las dependecias de Java). En rigor lo que hace es descargar el ZIP del SDK por su cuenta (sin Android Studio), descomprimirlo en la carpeta Android en home, instalar todo lo necesario de Java, configurar las variables globales del sistema e instalar mediante ./sdkmanager lo que solemos necesitar para compilar una App de Android. Finalmente actualiza el SDK, instala el grandle (necesario para compilar en Cordova) e inicia el server de debug de Android. Más simple de lo que se piensa. 

Paso a paso, que es lo que hace cada línea

cd /home/<user>/

Vamos a la carpeta del usuario [donde <user> es el nombre de usuario]

sudo apt-get install unzip

Instala unzip en caso de no tenerlo, para descomprimir el ZIP del SDK

wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip

Descarga el SDK Tools

unzip sdk-tools-linux-4333796.zip -d Android

Descomprime el SDK Tools en la carpeta Android (lo que normalmente haría la instalación de Android Studio)

rm sdk-tools-linux-4333796.zip

Borra el ZIP del SDK

sudo apt-get install -y lib32z1 openjdk-8-jdk

Instala las dependencias de Android

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin

Configura las variables de entorno de Java

printf "\n\nexport JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64\nexport PATH=\$PATH:\$JAVA_HOME/bin" >> ~/.bashrc

Configura las variables en el archivo .bashrc

cd Android/tools/bin

Ingresa al directorio donde se encuentra el sdkmanager

./sdkmanager "platform-tools" "platforms;android-26" "build-tools;26.0.3"

Instala las herramientas del SDK y las Api

export ANDROID_HOME=/home/<user>/Android
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools

Configura las variables de entorno Android (recordar modificar <user>)

printf "\n\nexport ANDROID_HOME=/home/<user>/Android\nexport PATH=\$PATH:\$ANDROID_HOME/tools\nexport PATH=\$PATH:\$ANDROID_HOME/platform-tools" >> ~/.$android update sdk --no-ui

Configura las variables en el archivo .bashrc (recordar modificar <user>)

sudo apt-get install gradle

Instala Gradle

gradle -v

Verifica instalación de Gradle

adb start-server

Inicia el server ADB (esto comprueba la instalación de Android SDK)