Getting "error: closed" twice on "adb reverse"

AndroidAdbForwarding

Android Problem Overview


I am trying to reverse-forward port through ADB, but it just returns cryptic error of error: closed. Normal forwarding works. Session snippet:

$ adb forward tcp:59778 tcp:59778
$ adb forward --list
015d2109ce0c1a0f tcp:59778 tcp:59778
$ adb forward --remove-all
$ adb forward --list
$ adb reverse --list
error: closed
error: closed
$ adb reverse tcp:59778 tcp:59778
error: closed
error: closed

I am connecting via USB to non-rooted Nexus 7 2012 Android 4.4.4 from Windows 7 Pro x64 on Boot Camp.

Android Solutions


Solution 1 - Android

adb reverse was introduced in Android 5.0

Solution 2 - Android

Since adb reverse is not supported in Android versions lower than 5.0, you need to use an alternative method, for example connecting via Wi-Fi instead. If you are using React Native, Facebook has added official documentation to connect to the development server via Wi-Fi. Quoting the instructions for MacOS, but they also have them for Linux and Windows:

> Method 2: Connect via Wi-Fi > >You can also connect to the development server over Wi-Fi. You'll first need to install the app on your device using a USB cable, but once that has been done you can debug wirelessly by following these instructions. You'll need your development machine's current IP address before proceeding. > >You can find the IP address in System Preferences → Network. > >Make sure your laptop and your phone are on the same Wi-Fi network. Open your React Native app on your device. You'll see a red screen with an error. This is OK. The following steps will fix that. Open the in-app Developer menu. Go to Dev Settings → Debug server host for device. Type in your machine's IP address and the port of the local dev server (e.g. 10.0.1.1:8081). Go back to the Developer menu and select Reload JS.

Solution 3 - Android

Follow these steps carefully.

Note: All commands need to run inside a project only.

  1. Run this command first:

     npm react-native start
    
  2. Open another window in the same project and run:

     curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle"
    
  3. This will create index.android.bundle in the assets folder

  4. Run:

     npm react-native run-android
    

Now you can get apk in the build folder which will work fine.

Solution 4 - Android

adb reverse requires Android 5.0+. For devices previous to that, you'll need to use a workaround like so.

If you have busybox installed on your Android device (most Genymotion images do), you can emulate adb reverse using this incantation:

adb shell busybox nc -ll -p {guest port} -e busybox nc {host IP} {host port}

In this case, "guest" is the Android OS running in the emulator and "host" is the computer running the emulator.

Solution 5 - Android

cause of adb reverse isnt working on android prior 5 you could propably use adb forward with a service listening on android and tunneling other connections through this inbound connection. I am doing this mostly with ssh, but you would need an ssh server on android. you than can connect using ssh -R incommingreverseportonandroid:hostyouwanttoforwardto:portyouwanttoforwardto sshuseronandroid@localhost -p portyouhaveusedforadbforwaqrdtoaccessandroidssshserver

but i dont know how to enable an ssh server on android and maybe there is a better way cause ssh uses encryption which isnt needed over usb and using up cpu.

i am using this way with my server to share a service when i am forced behind a nat...

hope someone will find a way to bring this teoretical way into practical possibility

Solution 6 - Android

Just use 10.0.2.2 instead of localhost/127.0.0.1 for your hostname. It will directly try to connect to the port on the host machine (same affect as reverse).

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionKonrad JamrozikView Question on Stackoverflow
Solution 1 - AndroidAlex P.View Answer on Stackoverflow
Solution 2 - AndroidJesús CarreraView Answer on Stackoverflow
Solution 3 - AndroidAle PaciottiView Answer on Stackoverflow
Solution 4 - AndroidslipheedView Answer on Stackoverflow
Solution 5 - AndroidTimView Answer on Stackoverflow
Solution 6 - Androida oView Answer on Stackoverflow