Setup completo: Node.js, Android Studio, Appium Server y emulador

Node.js, Android Studio, SDK, variables de entorno, emulador Pixel 8, Appium 3.3.1, UiAutomator2. Setup paso a paso con errores reales en 8GB RAM.

Emulador Android Pixel 8 con Android 15 corriendo mostrando home screen con apps de Google y fecha Mon May 4
Pixel 8 con Android 15 corriendo en el emulador. Primera vez que bootea tarda un rato.

Lo que hay que instalar (y en qué orden)

Este es el Post 2 de mi serie de mobile automation con Appium + Java + Android. En el Post 1 expliqué por qué Appium, por qué Java, por qué Android primero.

Appium no es una sola herramienta. Son varias piezas que tienen que funcionar juntas.

Hay 3 cosas que se sincronizan para que Appium funcione:

[ Appium Server (Node.js) ]
        ↓
[ UiAutomator2 Driver ]
        ↓
[ Android SDK + Emulador/Dispositivo ]

Si alguna de las tres falla o no se encuentra, no funciona.

El orden de instalación importa porque unas dependen de otras:

  1. Node.js (requisito de Appium Server)
  2. Android Studio (por el SDK, el emulador y las platform-tools)
  3. Variables de entorno (ANDROID_HOME, JAVA_HOME, PATH)
  4. Appium Server (vía npm)
  5. UiAutomator2 Driver (vía Appium)
  6. Emulador Android (AVD desde Android Studio)

Java 17 no lo incluyo porque ya lo tengo instalado de la serie Selenium. Si no lo tenés, instalá Eclipse Temurin JDK 17 desde adoptium.net.


1. Node.js

Appium Server corre sobre Node.js. Sin Node, no hay Appium.

Bajé la versión LTS desde nodejs.org. Instalación estándar en Windows, sin tocar nada.

Verificación:

PS C:\Users\Usuario> node -v
v24.14.0
PS C:\Users\Usuario> npm -v
11.9.0
Terminal PowerShell mostrando node -v v24.14.0 y npm -v 11.9.0 instalados correctamente en Windows
Node.js v24.14.0 y npm 11.9.0 verificados. Requisito base para instalar Appium Server.

Listo. Siguiente.


2. Android Studio

Esto es lo más pesado de todo el setup. Android Studio pesa varios GB y la instalación lleva un rato. Pero lo necesito por tres cosas: el SDK de Android, el emulador y las platform-tools (adb).

No voy a crear ningún proyecto de Android. Solo necesito lo que viene adentro.

Descarga e instalación

Bajé Android Studio Panda 4 (2025.3.4) desde developer.android.com/studio.

Durante la instalación:

  • Componentes: Android Studio + Android Virtual Device (ambos tildados)
  • Tipo de setup: Standard
  • Telemetría: Don't send

El wizard descargó 635 MB en componentes del SDK:

  • Android Emulator (399 MB)
  • Android SDK Build-Tools 36.1 y 37
  • Android SDK Platform 36.1
  • Android SDK Platform-Tools (7.72 MB)
  • Sources for Android 36.1

El error del hypervisor driver

Al final de la descarga de componentes apareció esto:

Running Android Emulator hypervisor driver installer
[SC] StartService con error 4294967201.
Android Studio Downloading Components mostrando error StartService con error 4294967201 al instalar hypervisor driver
El error del hypervisor driver al final de la instalación. No es bloqueante — Windows ya maneja la virtualización con Hyper-V o WHPX.

Este error es común en Windows. Si el equipo ya tiene Hyper-V o WHPX manejando la virtualización, el driver adicional no se necesita y el emulador funciona igual. Si te aparece, ignoralo — no es bloqueante.

El SDK quedó instalado en

C:\Users\Usuario\AppData\Local\Android\Sdk
Android Studio Setup Wizard mostrando SDK Folder y componentes a descargar incluyendo Emulator Build-Tools y Platform-Tools
Android Studio descarga 635 MB en componentes del SDK. El SDK Folder queda en C:\Users\Usuario\AppData\Local\Android\Sdk.

Esta ruta es importante. La vamos a necesitar para configurar ANDROID_HOME.


3. Variables de entorno

Windows necesita saber dónde están el SDK de Android y Java. Sin esto, Appium no puede encontrar adb, el emulador ni el JDK.

ANDROID_HOME

Abrí PowerShell y corrí:

[System.Environment]::SetEnvironmentVariable("ANDROID_HOME", "C:\Users\Usuario\AppData\Local\Android\Sdk", "User")

PATH (platform-tools y emulador)

Agregué las carpetas de adb y del emulador al PATH:

[System.Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Users\Usuario\AppData\Local\Android\Sdk\platform-tools;C:\Users\Usuario\AppData\Local\Android\Sdk\emulator", "User")

JAVA_HOME

Ya tenía Java 17 instalado de la serie Selenium, pero no tenía JAVA_HOME configurado como variable de entorno. Esto no me había afectado con Selenium (IntelliJ lo resuelve internamente), pero Appium lo necesita explícitamente.

[System.Environment]::SetEnvironmentVariable("JAVA_HOME", "C:\Program Files\Eclipse Adoptium\jdk-17.0.14.7-hotspot", "User")

Importante: después de configurar las variables, hay que cerrar y reabrir PowerShell para que tome los cambios.

Verificación

Terminal PowerShell mostrando ANDROID_HOME configurado adb version 37.0.0 y emulator list-avds vacío
ANDROID_HOME apunta al SDK, adb responde, emulator todavía sin dispositivos creados.

adb responde. El emulador responde (pero sin dispositivos todavía). Las variables están bien.


4. Appium Server

Con Node.js instalado, instalar Appium es un comando:

PS C:\Users\Usuario> npm install -g appium

Aparecieron algunos warnings de glob deprecated y un notice de npm nuevo disponible. Nada que afecte.

added 357 packages in 50s

Verificación:

Terminal PowerShell mostrando npm install -g appium con 357 paquetes y appium -v 3.3.1
Appium Server 3.3.1 instalado vía npm. Los warnings de glob deprecated no afectan la instalación.
PS C:\Users\Usuario> appium -v
3.3.1

Appium 3.3.1 instalado. En el Post 1 mencioné que la versión actual era 3.2.2 — entre que escribí ese post y este, salió una nueva versión. Así funciona npm: siempre instala la última.


5. UiAutomator2 Driver

El driver es lo que conecta Appium con Android. Sin él, Appium no puede interactuar con el emulador ni con un dispositivo.

PS C:\Users\Usuario> appium driver install uiautomator2

Apareció un DeprecationWarning de Node.js sobre shell option true. No afecta la instalación.

✓ Installing 'uiautomator2'
✓ Validating 'uiautomator2'
ℹ Driver [email protected] successfully installed
- automationName: UiAutomator2
- platformNames: ["Android"]

Verificación:

Terminal mostrando appium driver install uiautomator2 versión 7.2.0 instalado y appium driver list confirmando instalación
UiAutomator2 7.2.0 instalado. El driver que conecta Appium con Android.
PS C:\Users\Usuario> appium driver list --installed
✓ Listing installed drivers (rerun with --verbose for more info)
- [email protected] [installed (npm)]

UiAutomator2 7.2.0 instalado.


6. Emulador Android (AVD)

Crear el dispositivo virtual

En Android Studio → Device Manager → Create virtual device.

Elegí:

  • Hardware: Pixel 8 (1080 × 2400, 420 dpi)
Android Studio Device Manager mostrando lista de dispositivos virtuales disponibles desde Pixel 10 Pro XL hasta Pixel 6
Selección de hardware para el emulador. Elegí Pixel 8 (1080 × 2400, 420 dpi).
  • System image: Google Play Intel x86_64 Atom System Image, API 35 (Android 15 "VanillaIceCream")
Device Manager mostrando Pixel 8 con Google Play Intel x86_64 Atom System Image API 35 seleccionada
API 35 (Android 15 VanillaIceCream), versión estable. Esta es la que uso para la serie.

Un detalle: Android Studio me ofrecía por defecto una imagen Pre-Release de API 37 (Android 17). La cambié por API 35 que es estable. Para automation no querés imágenes pre-release — querés estabilidad.

Device Manager mostrando Pixel 8 con system image Pre-Release API 37 Android 17 CinnamonBun seleccionada por defecto
Android Studio ofrece por defecto una imagen Pre-Release de API 37. Para automation no querés imágenes inestables.

La descarga de la system image fue de 1.6 GB.

Arrancar el emulador

Desde Device Manager le di play al Pixel 8. La primera vez tarda un rato en bootear.

Emulador Android Pixel 8 con Android 15 corriendo mostrando home screen con apps de Google y fecha Mon May 4
Pixel 8 con Android 15 corriendo en el emulador. Primera vez que bootea tarda un rato.

Verificación con el emulador corriendo:

Terminal PowerShell mostrando emulator list-avds con Pixel_8 y adb devices con emulator-5554 device conectado
El emulador está corriendo y adb lo detecta como emulator-5554.

El emulador está corriendo y adb lo ve.

La realidad de 8GB de RAM

Esto es lo que quería documentar.

Con el emulador corriendo + Android Studio + Chrome + PowerShell:

  • RAM: 7.5 de 8 GB usados (97%)
  • CPU: 91%
  • qemu-system-x86_64.exe consumiendo 41.8% de CPU solo
Administrador de tareas Windows mostrando 7.5 de 8 GB de RAM usados al 97 por ciento con CPU al 96 por ciento
La realidad de 8GB de RAM con el emulador corriendo: 97% de memoria, 96% de CPU. La máquina queda al límite.

Mi máquina tiene 8GB. Eso es una restricción real que mucha gente en LATAM tiene. El emulador funciona, pero la máquina queda al límite.

Tips para equipos con poca RAM:

  • Cerrar Android Studio después de crear el AVD. Solo necesito que el emulador corra, no el IDE.
  • Cerrar Chrome o al menos minimizar las pestañas. El browser compite fuerte por RAM.
  • No correr IntelliJ al mismo tiempo que el emulador. Uno o el otro.
  • Si la máquina se pone muy lenta, la alternativa es usar un dispositivo físico por USB (eso lo cubro en un post mas adelante (Post 8)).

Esto no es un problema de Appium. Es la realidad de correr emuladores en equipos con 8GB, y conviene tenerlo claro antes de escribir el primer test.


7. Verificación final: appium driver doctor

Appium tiene un comando para verificar que todo esté en orden:

PS C:\Users\Usuario> appium driver doctor uiautomator2

Resultado:

Appium driver doctor mostrando 0 required fixes needed con ANDROID_HOME y JAVA_HOME verificados y 3 warnings opcionales
Después de configurar JAVA_HOME: 0 required fixes. Los 3 warnings restantes son opcionales (bundletool, ffmpeg, gstreamer).

Los 3 warnings son opcionales:

  • bundletool.jar: para manejar Android App Bundles (.aab). No lo necesito — voy a usar .apk directamente.
  • ffmpeg.exe: para grabar la pantalla del dispositivo. Útil para debugging, pero no es bloqueante.
  • gst-launch / gst-inspect: para streaming de pantalla. Tampoco bloqueante.

Lo importante: 0 required fixes needed.

El fix de JAVA_HOME que casi me frena

La primera vez que corrí appium driver doctor tenía 2 required fixes:

✗ JAVA_HOME environment variable is NOT set!
✗ %JAVA_HOME% environment variable must be set
Appium driver doctor mostrando JAVA_HOME environment variable is NOT set con 2 required fixes needed marcados en rojo
Primera corrida de appium driver doctor: JAVA_HOME no estaba configurado. IntelliJ no necesita esta variable, pero Appium sí.

Ya tenía Java 17 instalado y funcionando en IntelliJ sin problemas. Pero no tenía la variable de entorno JAVA_HOME configurada.

En Selenium con IntelliJ esto no importa porque IntelliJ detecta el JDK por su cuenta. Pero Appium busca JAVA_HOME explícitamente. Si no la encuentra, no arranca.

La solución fue configurar la variable apuntando a la carpeta del JDK. Después de eso, todo verde.

Terminal PowerShell ejecutando SetEnvironmentVariable para configurar JAVA_HOME apuntando a Eclipse Adoptium jdk-17
El fix: configurar JAVA_HOME apuntando al JDK de Eclipse Adoptium.

Estado actual

Instalé:

Herramienta Versión
Node.js v24.14.0
npm 11.9.0
Android Studio Panda 4 (2025.3.4)
Android SDK Platform-Tools 37.0.0
Android SDK Build-Tools 36.1 y 37
Appium Server 3.3.1
UiAutomator2 Driver 7.2.0
Emulador Pixel 8, API 35 (Android 15)
Java Temurin 17.0.14

Variables de entorno configuradas:

  • ANDROID_HOMEC:\Users\Usuario\AppData\Local\Android\Sdk
  • JAVA_HOMEC:\Program Files\Eclipse Adoptium\jdk-17.0.14.7-hotspot
  • PATH incluye platform-tools y emulator

appium driver doctor uiautomator2 → 0 required fixes.

Con la infraestructura verificada, en el próximo post arranco con el proyecto Maven, las dependencias de Appium y el primer test abriendo la app en el emulador.