Resumen del Proyecto
Docker-Android proporciona un entorno de desarrollo Android basado en contenedores, permitiendo ejecutar emuladores de Android dentro de Docker. Este proyecto facilita la creación de imágenes de Android con soporte para múltiples versiones y configuraciones personalizadas, ideal para desarrollo, pruebas y automatización.
Ventajas Principales
- Compatibilidad con diversas configuraciones de dispositivos, como Samsung Galaxy S10 y la serie Google Nexus.
- Integración de VNC para visualización remota del emulador a través de un navegador web.
- Acceso a registros de eventos mediante una interfaz web centralizada.
- Conexión externa al emulador mediante adb para control remoto.
- Soporte para soluciones en la nube, incluyendo Genymotion Cloud.
- Capacidad para compilar proyectos Android directamente en el contenedor.
- Integración con marcos de pruebas como Appium y Espresso.
Preparación del Entorno
Requisitos del Sistema
- Docker instalado y configurado en el sistema host.
- Soporte de virtualización por hardware habilitado.
- Se recomienda utilizar un sistema operativo como Ubuntu para mejor compatibilidad.
Verificación de Virtualización
Para sistemas Linux, ejecute los siguientes comandos para confirmar el soporte de KVM:
sudo apt install cpu-checker
kvm-ok
Inicio Rápido
Despliegue Básico
Ejecute el siguiente comando para iniciar un contenedor con un emulador de Android:
docker run -d -p 6080:6080 -e EMULATOR_DEVICE="Google Pixel 5" -e WEB_VNC=true --device /dev/kvm --name mi-contenedor-android budtmo/docker-android:emulator_11.0
Acceso a la Interfaz
Una vez iniciado el contenedor, acceda a la interfaz VNC mediante un navegador en la dirección http://localhost:6080 para interactuar con el emulador.
Monitoreo del Estado
Para verifciar el estado del emulador en ejecución, utilice el comando:
docker exec -it mi-contenedor-android cat device_status
Configuración de Persistencia de Datos
De manera predeterminada, los datos del emulador se pierden al reiniciar el contenedor. Para conservar la información, monte un volumen en el directorio /home/androidusr:
docker run -v datos-persistentes:/home/androidusr budtmo/docker-android:emulator_11.0
Casos de Uso Detallados
Pruebas Automatizadas con Appium
Inicie el servidor Appium dentro del contenedor para ejecutar pruebas automatizadas en aplicaciones y sitios web móviles:
docker run -d -p 6080:6080 -p 4723:4723 -e EMULATOR_DEVICE="Nexus 5" -e WEB_VNC=true -e APPIUM=true --device /dev/kvm --name contenedor-appium budtmo/docker-android:emulator_11.0
Compilación de Proyectos Android
Use Docker-Endroid para construir y probar proyectos Android. Ejemplo de compilación mediante Gradle:
docker run -it --rm -v $PWD/proyecto-android:/home/androidusr/tmp -w /home/androidusr/tmp --entrypoint "/bin/bash" budtmo/docker-android:emulator_11.0 -c "./gradlew build"
Control del Emulador desde el Host
Para controlar el emulador desde la máquina host:
- Al iniciar el contenedor, exponga los puertos 5554 y 5555.
- Conéctese al emulador mediante adb:
adb connect <ip-del-contenedor>:5555
Versiones de Android Soportadas
| Versión de Android | Nivel de API | Etiqueta de Imagen |
|---|---|---|
| 9.0 | 28 | budtmo/docker-android:emulator_9.0 |
| 10.0 | 29 | budtmo/docker-android:emulator_10.0 |
| 11.0 | 30 | budtmo/docker-android:emulator_11.0 |
| 12.0 | 32 | budtmo/docker-android:emulator_12.0 |
| 13.0 | 33 | budtmo/docker-android:emulator_13.0 |
| 14.0 | 34 | budtmo/docker-android:emulator_14.0 |
Configuraciones de Dispositivos Soportadas
Dispositivos Móviles
- Samsung Galaxy S10
- Samsung Galaxy S9
- Samsung Galaxy S8
- Samsung Galaxy S7 Edge
- Samsung Galaxy S7
- Samsung Galaxy S6
- Nexus 4
- Nexus 5
- Nexus One
- Nexus S
Dispositivos de Tableta
- Nexus 7
- Pixel C
Funcionalidades Avanzadas
Integración con Genymotion
Docker-Android se integra con servicios de nube como Genymotion SAAS, AWS, GCP y Alibaba Cloud para pruebas escalables.
Temas del Emulador
Los temas visuales del emulador provienen de Android Studio y sitios de desarrolladores de Samsung, ofreciendo una experiencia visual realista en los dispositivos virtuales.