Contexto
Uso Mockoon para mockear APIs cuando desarrollo con React Native. Mockoon levanta un servidor local (generalmente en el puerto 3001) que responde con los endpoints y datos que configures — sin necesidad de tener el backend real corriendo.
El problema aparece cuando levantás un emulador de Android: la app hace un request a
http://localhost:3001 pero no llega a Mockoon. La pantalla queda cargando o
tira error de red.
Por qué pasa
localhost dentro del emulador de Android apunta a la interfaz loopback del propio
emulador, no a tu máquina. Son redes distintas. Tu Mockoon está escuchando en el
localhost de tu máquina, pero el emulador busca en el suyo.
Android ofrece 10.0.2.2 como alias del host, pero implica cambiar las URLs en tu
código solo para desarrollo en Android, y no funciona con dispositivos físicos.
La solución
adb reverse crea un túnel que redirige un puerto del emulador/dispositivo al mismo
puerto en tu máquina:
adb reverse tcp:3001 tcp:3001
Con esto, cuando la app haga un request a http://localhost:3001, el tráfico llega
directo a Mockoon en tu máquina. No necesitás cambiar ninguna URL en el código.
Cada vez que levantás un emulador nuevo o reiniciás el dispositivo, tenés que correr el comando de nuevo — el reverse no persiste.
Verificar
adb reverse --list
(reverse) tcp:3001 tcp:3001
Remover
# Uno específico
adb reverse --remove tcp:3001
# Todos
adb reverse --remove-all