Cuando falla la instalación de Appium en Ubuntu, reinstalar todo rara vez descubre la causa. Conviene diagnosticar cada capa y registrar sus versiones. Así el entorno se puede reproducir en otro servidor o en CI.
Comprueba el runtime antes de Appium
Ejecuta node --version, npm --version y which node. Appium puede haberse instalado con una versión de Node.js mientras la terminal usa otra, sobre todo si conviven paquetes del sistema y un gestor de versiones. Usa una versión compatible, conserva una sola ruta activa y evita sudo npm install -g: los ficheros propiedad de root provocarán después errores de permisos.
Instala Appium y el driver Android por separado
Appium moderno separa el servidor de los drivers de plataforma. Instala el driver UiAutomator2 y compruébalo con appium driver list --installed. El servidor puede arrancar bien y rechazar sesiones Android porque el driver falta o es incompatible. Consulta UiAutomator2 explicado para desarrolladores backend para entender su arquitectura.
Corrige JAVA_HOME y ANDROID_HOME
Verifica java -version y haz que JAVA_HOME apunte al directorio real del JDK, no al ejecutable. Define de forma coherente la ruta del Android SDK y añade platform-tools al PATH. Prueba adb version desde una terminal nueva. Recuerda que una terminal interactiva y un worker de systemd no heredan necesariamente el mismo entorno.
Resuelve errores de dispositivos y permisos ADB
Ejecuta adb devices -l. Un dispositivo unauthorized requiere aceptar el aviso de depuración. Si solo aparece con sudo, normalmente faltan una regla udev adecuada, el grupo correcto o recargar las reglas. No ejecutes toda la automatización como root para ocultar el fallo. Cuando conectes varios teléfonos, asigna cada trabajo por serial; también es esencial en la guía práctica de Appium para Android.
Lee el primer error útil de Appium
Conserva la petición completa de sesión, versión del driver, serial y marcas de tiempo. La última traza suele ser una consecuencia; el primer comando fallido acostumbra a señalar la causa. Valida plataforma, motor de automatización, ruta de la aplicación o package/activity, y no copies capacidades obsoletas de versiones antiguas.
Errores comunes
- mezclar instalaciones de Node.js de apt, snap y un gestor de versiones
- instalar Appium sin instalar UiAutomator2
- usar sudo para npm o ADB en vez de arreglar permisos
- definir el SDK solo en una terminal interactiva
- usar versiones incompatibles de Java o Node.js
- no aceptar la autorización de depuración USB
- enviar capacidades obsoletas
- cambiar varias capas antes de volver a probar
- descartar logs del servidor, ADB y dispositivo
Checklist práctico de instalación
- registra versiones de Ubuntu, Node.js, npm, Java, Appium y driver
- confirma un único binario de Node.js y directorios npm con permisos
- valida las rutas de Java y Android SDK en una terminal nueva
- instala y lista el driver UiAutomator2
- comprueba que ADB muestra el serial como device
- prueba una sesión mínima antes de añadir lógica
- guarda capacidades exactas y el log completo
- repite la prueba con el usuario que ejecutará producción
- fija dependencias estables y documenta actualizaciones
Cuándo tiene sentido contratar a una persona técnica
Busca un especialista en automatización Android cuando el sistema deba soportar varios dispositivos, recuperación desatendida, colas, workers remotos o monitorización. Lo difícil no es abrir una sesión: es hacer predecibles las versiones, la asignación de dispositivos, los reintentos y los logs. Esto puede abordarse dentro de un proyecto de automatización móvil a medida.
Conclusión
Trata Appium en Ubuntu como una cadena de dependencias y valida cada eslabón por separado. Si tus sesiones siguen siendo inestables o necesitas una arquitectura reproducible, contacta conmigo.