Estoy tratando de usar adb sobre 'wifi' para mi dispositivo emulado. Estoy emulando un dispositivo en mi ordenador y quería usar Android Studio para enviarle un APK pero a través de las tomas de red, no a través del USB emulado. Sé que en Android Studio todo funciona de forma inmediata pero necesito hacerlo de esta forma
Estoy siguiendo este tutorial: https://developer.Android.com/studio/command-line/adb.html#wireless
Lo empiezo con
~/Android/Sdk/emulator$ ./emulator -avd Pixel_XL_API_27
Entonces veo que la depuración USB está activada. Entonces hago
./adb tcpip 5555
restarting in TCP mode port: 5555
Tenga en cuenta que . /adb tcpip 5555
es arbitraria. Ni siquiera he especificado qué dispositivo debe reiniciarse y conectarse al 5555. ¿Qué pasa si tengo 2 emuladores funcionando?
Debería desconectar ahora para un dispositivo USB normal, pero entonces voy a las opciones de desarrollador en mi teléfono emulado y desactivo la depuración USB.
También veo que la dirección IP en la configuración del sistema telefónico emulado es 192.168.232.2
entonces termino con:
./adb connect 192.168.232.2
unable to connect to 192.168.232.2:5555: Connection timed out
También he hecho esto:
./adb devices
List of devices attached
emulator-5554 device
./adb connect 192.168.232.2:5554
unable to connect to 192.168.232.2:5554: Connection timed out
ACTUALIZACIÓN:
Según Tutorial de Android sobre ADB Mi ordenador mantiene un servidor funcionando en el puerto 5037. El dispositivo Android (mi emulador en este caso) ejecuta un demonio y mi adb script en Sdk/platform-tools es un cliente. Si quiero ejecutar un cliente dentro de mi máquina virtual debo tener un servidor corriendo en ella. Pero en cambio puedo simplemente reenviar el puerto TCP 5037 de la VM al puerto TCP 5037 de la máquina anfitriona. Lo hice con tcptunnel haciendo lo siguiente:
./tcptunnel --local-port=5037 --remote-host=192.168.122.1 --remote-port=5037 --stay-alive
entonces si ejecuto adb en mi VM, se va a conectar con el demonio adb en mi máquina anfitriona que va a hablar con el servidor adb de mi emulador. Cuando ejecute adb devices
en la VM sin el forward tcp intenta iniciar un nuevo servidor. Si mato este servidor y abro el tcpforwarded y lo vuelvo a hacer, no intenta crear un nuevo servidor. Esta es una buena señal. Sin embargo, el tcptunnel me da esto:
build_tunnel: connect(): Connection refused
Algo está bloqueando la conexión
ACTUALIZACIÓN 2:
Resulta que tcptunnel no es necesario, porque adb
tiene el H
que me permite especificar la IP donde se ejecuta el servidor. Sin embargo no sé si es posible en Android Studio especificarla. De todos modos:
./adb -H 192.168.122.1 devices
List of devices attached
* cannot start server on remote host
error: cannot connect to daemon at tcp:192.168.122.1:5037: Connection refused