Contamos con el hallazgo a esta contrariedad, al menos eso pensamos. Si continuas con alguna inquietud dínoslo, que con placer te responderemos
Solución:
Brian, una solución alternativa que podría considerar es hacer que su host de VM también sea un host ADB. Luego, puede conectar su cliente VM a través de TCP / IP. Aquí está la idea general para esa configuración:
- Instale el SDK de Android en la máquina host. Solo debe requerir el paquete de herramientas de plataforma que incluye
adb
. - No permita que su cliente VM tome posesión del dispositivo Android, así que deshabilite cualquier regla de filtro USB de VirtualBox que tenga y tampoco estaría de más desconectar y volver a conectar el dispositivo.
- Desde su cliente VM, ejecute
adb kill-server
. hazlo untskill adb
por certeza Si tiene instancias de Eclipse en ejecución, querrá cerrarlas primero porque en realidad se iniciaráadb
en el fondo. No te saltes este paso. -
Desde el host, ejecute
adb devices
. Si todo va bien (y debería), verá su dispositivo en la lista. Debería verse así (tenga en cuenta el número de puerto y perdón por la manipulación):* daemon not running. starting it now on port 5037 * * daemon started successfully * List of devices attached 015d2994ed200409 device
En este punto, su host debería tener un servidor ADB ejecutándose en el puerto 5037. Puede verificar esto desde el cliente VM ejecutando telnet 10.0.2.2 5037
donde 10.0.2.2
es la IP predeterminada para los hosts de VirtualBox y 5037
es el puerto ADB predeterminado mencionado anteriormente.
-
Ahora debe reenviar los puertos de su host a su cliente VM o, de lo contrario, conectar ADB directamente a su host IP: puerto. Si es como yo, encontrará que las variables ADBHOST y ANDROID_ADB_SERVER_PORT están mal documentadas y son fáciles de estropear. Por esta razón, considere el reenvío de puertos simple sobre
ssh
(tal vez a través de Cygwin) así desde el cliente VM:autossh -nNL5037:localhost:5037 -oExitOnForwardFailure=yes 10.0.2.2
-
Finalmente, ejecuta
adb devices
desde su cliente VM. Si ve “el demonio no se está ejecutando”, significa que su reenvío de puertos está jodido. De lo contrario, debería ver su dispositivo y poder hacer logcat todo el día. Un punto digno de mención es que usted no tendrá unadb
daemon que se ejecuta en su cliente VM, excepto cuando en realidad está usando el puente de depuración, por supuesto.
Usé un mecanismo similar para depurar dispositivos a través de la red que están conectados a máquinas remotas y funcionó bien.
No estoy seguro de qué ha cambiado en VirtualBox desde que se publicó la pregunta, pero seleccionando el dispositivo USB del menú de VirtualBox Dispositivos -> USB -> Nombre del dispositivo funcionó a la perfección. Estoy trabajando en VirtualBox 5.1.2 r108956.
También estaba teniendo problemas con ADB ejecutándose sobre VM. Tenía un host de Windows 10 y un cliente de Ubuntu 14.04. Él autossh
el metodo no me funciono. Encontré una solución más fácil de otra pregunta de StackOverflow. Requiere que tanto su PC como su dispositivo estén en la misma red WiFi.
-
En su cliente VM, ejecute lo siguiente:
adb tcpip 5555
El dispositivo se desconectará de la VM porque ADB ahora está en modo TCP en lugar de USB.
-
Para la siguiente parte, necesita la dirección IP de su dispositivo. Para encontrarlo, simplemente ejecute
adb shell ip -f inet addr show wlan0
-
Ahora puede conectarse a su dispositivo. En su cliente VM, ejecute:
adb connect
:5555
¡Desde aquí, todas mis sesiones de adb shell, logcat y monkey se ejecutaron sin interrupción!
Recuerda que tienes la capacidad de glosar si te fue de ayuda.