nativescript-cli icon indicating copy to clipboard operation
nativescript-cli copied to clipboard

Android remote emulator lose connection using ANDROID_ADB_SERVER_ADDRESS

Open darkyelox opened this issue 4 years ago • 1 comments

Environment Component nativescript has 7.2.0 version and is up to date. ✔ Component @nativescript/core has 7.2.1 version and is up to date. ✔ Component @nativescript/ios has 7.2.0 version and is up to date. ✔ Component @nativescript/android has 7.0.1 version and is up to date.

Describe the bug The use of the command for running on a remote Android emulator (in my case a Virtualbox with Ubuntu 20.04.1 and Android SDK and emulator running) as follows:

$ ANDROID_ADB_SERVER_ADDRESS={VirtualMachineIP} ns run android --no-hmr

The application is installed and has run successfully but the CLI command seems to timeout when trying to connect to the application log with the error:

Installing on device emulator-5554...
Successfully installed on device with identifier 'emulator-5554'.
Unable to apply changes on device: emulator-5554. Error is: connect ECONNREFUSED 127.0.0.1:51258.

Seems like NativeScript is trying to connect to a port in the local machine ignoring the ANDROID_ADB_SERVER_ADDRESS IP address

To Reproduce

  • Create an Ubuntu virtual machine with android SDK on a VirtualBox or similar on a Mac OS host machine
  • create an Android emulator and run it
  • in the virtual machine OS (Ubuntu in this case) terminal run adb -a -P 5037 nodaemon server
  • in the host machine (Mac OS in my case) execute an android application with the NativeScript CLI ANDROID_ADB_SERVER_ADDRESS={VirtualMachineIP} ns run android --no-hmr

Expected behavior Running an Android application in a remote machine as normal as in host machine with debug and log capabilities.

Additional context The virtual machine should have bridged adapter configured, I don't know if NAT is also working

darkyelox avatar Feb 26 '21 14:02 darkyelox

I've ran into this before & worked around it by changing https://github.com/NativeScript/nativescript-cli/blob/25410b74a411bfa04d0aa968d47e2bd5a3c2cd1a/lib/services/livesync/android-livesync-tool.ts#L15 to the correct IP.

is ANDROID_ADB_SERVER_ADDRESS a standard env name recommended by android docs? If so, we could change that line to read from it.

rigor789 avatar Feb 26 '21 15:02 rigor789