Conectar emulador Android con localhost

Sobre Android y su emuldaroe, cómo poder hacer alguna petición desde el emulador a algún emulador que estamos desarrollando en local.

Introducción

Normalmente se explica, tanto en varias dudas en stackoverflow como en la documentación de google, que cuando necesitamos conectar el emulador con algún servidor en local que estemos usando durante el desarrollo, con apuntar a 10.0.2.2:<port> es suficiente. En mi caso no fue suficiente, ni siguiendo estas instrucciones ni habilitando únicamente las peticiones http 1.

Sí funcionó una solución más sencilla que nos permite adb: redireccionamos el puerto del localhost del emulador al puerto externo (el localhost de la máquina donde estamos desarrollando).

$ PORT=3345
$ adb reverse tcp:$PORT tcp:$PORT

Las instrucciones de reverse están muy bien explicadas en el --help de adb:

reverse [--no-rebind] REMOTE LOCAL
    reverse socket connection using:
      tcp:<port> (<remote> may be "tcp:0" to pick any open port)
      localabstract:<unix domain socket name>
      localreserved:<unix domain socket name>
      localfilesystem:<unix domain socket name>

  1. Que esto sea recomandable, sobretodo en producción, es discutible↩︎