Saltar al contenido

Conexión a un dispositivo Android USB en un contenedor Docker a través de ADB

No olvides que en las ciencias informáticas un problema casi siempere puede tener diferentes soluciones, no obstante nosotros aquí mostramos lo más óptimo y mejor.

Solución:

No creo que el demonio ADB que se ejecuta en el dispositivo se pueda conectar a dos servidores ADB. Intente desconectarlo del ADB de su máquina host y luego conéctelo al ADB del contenedor Docker.

Mientras intentaba lo mismo, me encontré con otros problemas relacionados con eso, que me gustaría compartir para que otros puedan ahorrar tiempo:

Problema 1: lsusb no se instaló en el contenedor

En mi caso susb no estaba instalado, así que lo instalé con el siguiente comando:

apt-get update
apt-get install usbutils

Problema 2: no puedo ver el dispositivo incluso después de la instalación de lsusb y ADB SDK

Debe reiniciar su contenedor con el -v opción, y sí, no olvide eliminar el servidor ADB como se indica en una de las respuestas.

En el anfitrión:

adb-kill server
docker run -ti -d --privileged -v /dev/bus/usb:/dev/bus/usb   container_name

En caso de que alguien quisiera hacerlo desde cero, he escrito una entrada de blog sobre ello:

Cómo conectar dispositivos ADB al contenedor de Linux

Esto no responde la pregunta exacta que estaba haciendo, pero aborda lo que estaba tratando de lograr: conectarse a un dispositivo Android conectado a un host acoplable desde un cliente adb que se ejecuta dentro de un contenedor acoplable. Incluyo esto para cualquiera que intente lograr lo mismo (como yo).

El cliente adb admite un -H opción que le dice dónde encontrar el servidor adb para conectarse. Docker admite el nombre de host “host.docker.internal” que siempre se asigna a la dirección IP del host de Docker. Suponiendo que su dispositivo está conectado al host docker, puede hacer lo siguiente para que su cliente adb en contenedor se conecte al servidor adb que se ejecuta en el host docker:

adb -H host.docker.internal devices

Cumple el objetivo sin tener que montar los puertos USB.

Referencia: https://developer.android.com/studio/command-line/adb

Actualización: Hace poco me enteré de que host.docker.internal solo es compatible con Docker para Mac en las versiones 18.0 y superiores.

Aquí puedes ver las reseñas y valoraciones de los lectores

Si haces scroll puedes encontrar los comentarios de otros usuarios, tú igualmente eres capaz mostrar el tuyo si lo deseas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *