Me doy cuenta de que esta pregunta es realmente antigua, pero resolví el problema de manera ligeramente diferente y me tomó un tiempo descubrir esta solución trivial.
Por lo general, uso una PC o computadora portátil con Windows7 (dependiendo de dónde esté trabajando) como mi interfaz porque me gusta la GUI, sin embargo, prefiero hacer toda mi edición / compilación / depuración en un servidor Ubuntu sin cabeza debido a todas las el poder de línea de comandos que proporciona. Mi objetivo es hacer que cada sistema de Windows sea lo más cliente ligero posible sin servicios adicionales (como sshd) o agujeros de firewall.
Entonces aquí está el senario:
- System-A: sistema Windows7 con emulador de Android en ejecución
- System-B: servidor Ubuntu con SDK instalado
El problema, como se describió anteriormente, es que el emulador en System-A se une a localhost, no a la interfaz Ethernet externa, por lo que adb en System-B no puede acceder al emulador en System-A. Todo lo que necesita hacer es configurar el reenvío de puerto remoto en PuTTY para su conexión SSH a System-B. El truco consiste en marcar el botón de opción "Remoto" cuando crea los dos túneles para que la dirección del túnel se invierta (tunelización desde el servidor en el que está iniciando sesión hasta el cliente desde el que está iniciando sesión).
Finalmente, conéctese con adb a "localhost" en System-B después de establecer la conexión SSH:
System-B$ adb connect localhost
connected to localhost:5555
System-B$ adb devices
List of devices attached
localhost:5555 device
Ahora puede descargar imágenes / depurar como de costumbre, y es una cuestión trivial cambiar a un sistema Windows diferente si desea sacar su computadora portátil y tomar un café.
Además, al hacer un túnel en el puerto 5037 de la misma manera, puede reenviar la conexión del servidor adb para que pueda conectar un dispositivo Android real a través de USB en el Sistema-A y descargar imágenes desde el Sistema-B. Para que esto funcione, debe asegurarse de que el servidor adb se esté ejecutando en System-A y no en System-B antes de comenzar su sesión SSH:
Primero, inicie el servidor adb en System-A (símbolo del sistema)
C:\> adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
C:\> adb devices
List of devices attached
3435F6E6035B00EC device
A continuación, elimine el servidor adb en System-B
System-B$ adb kill-server
Finalmente, reinicie su sesión ssh en System-B y verifique
System-B$ adb devices
List of devices attached
3435F6E6035B00EC device