How to set up ADB for remote machine development and local device deployment

Another setup for remote host + local device testing. This will be useful for lots of people working from home on a laptop, connected to their development host machine still in the office. Note that I assume both devhost/laptop are both running Unix, but other OSes will be able to run the commands on the command prompt/shell.

# Kill old adb server.
devhost$ adb kill-server 

# Activate adb server on client
laptop$ adb start-server

# Start ssh tunnel. Hide/minimize this window not to close it by accident
laptop$ ssh -XC -R 5037:localhost:5037 <your devhost machine>

# Should work by now with the local device connected to the laptop
devhost$ adb logcat 

Beginning Android 4.3 you can:

  1. Make adb server listen on all interfaces. You have two options:
    • Make gListen=1 and recompile adb (I have compiled it on Linux-x64 machine for you and put it here)
    • Start adb server with -a parameter: adb -a -P 5037 fork-server server&
  2. Use adb on your remote machine with extra parameter, e.g. adb -H <remote_host> shell

I had a similar situation. I work on a remote desktop for development but my android device is connected to my local laptop. I wanted to be able to use adb and the android plugin in eclipse on the remote desktop and connect to the device attached to my laptop. After searching on the internet and not finding anything that really helped, I decided to write a port forwarder that would do the trick. You can find it here. I hope it will be helpful to other people as well.