I'm developing an Android app as a side project and today I learned about
adb forward and
adb reverse. Basically, they allow you to forward or reverse traffic to specific ports between an Android device and your development machine.
Let's say I need my app to fetch something from
http://localhost:3000/some-data. When the app is running on the phone
localhost refers to the phone itself, and my server is running in my dev machine. So, if I do this:
adb reverse tcp:3000 tcp:3000
Now when the app tries to access
localhost:3000 it will actually reach out to my dev machine's
3000 port. Very useful if you're developing the app's backend as well (as I am).
Similarly, if I wanted to access a server inside the phone from my dev machine, I could run:
adb forward tcp:5000 tcp:5000
And now if I run
curl http://localhost:5000 in my dev machine it will hit the server running on the phone. Pretty neat!