Again, just a note for my future self. Someday I installed android studio in my ubuntu 16.04 elementary os based machine. Then I install npm, react-native and genymotion. But when I try to emulate it using genymotion and check the adb, adb throws error like this :
adb server is out of date. killing…
cannot bind ‘tcp:5037’
ADB server didn’t ACK
* failed to start daemon *
I’ve searched the net and it can’t resolved. Until I found this wisdom sayings :
If you have
adb installed as part of your Linux distribution, then your
PATH probably points there. Chances are this
adb is version 1.0.31 (or earlier).
Genymotion comes with its own
adb in the
tools/ directory, which is version 1.0.32 if you are running the latest Genymotion, currently 2.3.1. Unless you changed it in the settings, Genymotion will start the bridge with that copy.
adb operates in a client-server arrangement, the client version should match the daemon version. In your case, they don't and that's why you're getting the
adb server is out of date. killing... message. If the daemon is killed or dies, the Genymotion launcher automatically and immediately restarts
adb (using its own copy), and that's why your client can't start a new daemon bound to port 5037.
The solution is to make sure that the version of
adb you are invoking on the command line matches the one that Genymotion is bringing up as a daemon when it starts the VMs. The easiest way to ensure this is just to use the
adb binary in Genymotion's
Note that if you have changed Genymotion’s default of using its own tools to use custom SDK tools, then you’ll need to use an
adb client that matches the version contained in the SDK you're pointing to. As far as I can tell, KitKat (4.4.4) and earlier SDKs contain
adb version 1.0.31, while the Lollipop (5.0) SDKs have 1.0.32.
Then what i did is I did :
cp ~/Android/Sdk/platform-tools/adb /usr/bin/adb
chmod +x /usr/bin/adb
And it worked