Editing
ADB Commands
(section)
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== WSL Support == '''Environment Automatically for WSL ''' === Setup TCP port forwarding === We can use socat to do port forwarding if the local and remote machine are in the same network and can connect directly. We can also use ssh to do port forwarding if we can access remote machine with ssh. Donβt forget to configure firewall if exists. ==== For WSL, we chose socat to do port forwarding. Run in WSL: ==== # get host Windows IP HOST_IP=`cat /etc/resolv.conf | tail -n1 | cut -d " " -f 2` # start socat port forward socat TCP-LISTEN:5037,reuseaddr,fork TCP:${HOST_IP}:5037 ==== For remote Linux machine, we chose ssh to do port forwarding. Run in local Linux machine: ==== # change this to your remote Linux machine user and address, make sure you have already configured ssh key, or you can input password manaully USER='root' HOST='192.168.1.100' ssh -R 5037:localhost:5037 -f -N $USER@$HOST -o ServerAliveInterval=240 ----------------------- Install adb on Windows and change $WSL_HOST_ADB to the adb location following the example format. Install adb and socat on WSL. Make sure you are using the same adb in terminal and Android Studio. And make sure you installed the same version of adb in Windows and WSL. Add the following content to your WSL ~/.bashrc and run source ~/.bashrc to refresh. Run wsl-start-adb-daemon / wsl-stop-adb-daemon to start/stop adb environment. ------------------------------------------- WSL_HOST_ADB='/mnt/d/AndroidSdk/platform-tools/adb.exe' wsl-start-adb-daemon() { if ! [ -x "$(command -v socat)" ]; then echo 'Please install socat first:' >&2 echo 'sudo apt update && sudo apt install -y socat' return 1 fi # stop service wsl-stop-adb-daemon echo echo "Get adb devices on host..." $WSL_HOST_ADB devices sleep 1 $WSL_HOST_ADB kill-server sleep 1 local HOST_IP=`cat /etc/resolv.conf | tail -n1 | cut -d " " -f 2` echo "Start services..." nohup $WSL_HOST_ADB -a nodaemon server start > /dev/null 2>&1 & nohup socat TCP-LISTEN:5037,reuseaddr,fork TCP:${HOST_IP}:5037 > /dev/null 2>&1 & sleep 1 echo "Forward adb to ${HOST_IP}:5037." echo echo "Get adb devices..." adb devices } wsl-stop-adb-daemon() { echo "Kill running processes..." pkill -9 socat # $WSL_HOST_ADB kill-server > /dev/null 2>&1 # adb kill-server > /dev/null 2>&1 pkill -9 adb.exe pkill -9 adb sleep 1 echo "Complete" } === Start the Environment Automatically for Remote Linux Machine === Usage Setup ssh key for remote machine. Install adb on local machine. Install adb on remote machine and change REMOTE_ADB_PATH value to the adb location. Make sure you are using the same adb in terminal and Android Studio. And make sure you installed the same version of adb in local and remote machine. Add the following content to your local ~/.bashrc and run source ~/.bashrc to refresh. Run startRemoteAdb USER HOST / stopRemoteAdb USER HOST to start/stop adb environment. ------- REMOTE_ADB_PATH='$HOME/Android/Sdk/platform-tools/adb' _remoteCmd() { local USER=$1 local HOST=$2 ssh $USER@$HOST $3 } _remoteAdb() { local USER=$1 local HOST=$2 _remoteCmd $USER $HOST "$REMOTE_ADB_PATH $3" } startRemoteAdb() { if [ $# -ne 2 ]; then echo 'Usage: startRemoteAdb USER HOST' echo 'Example: startRemoteAdb jzj 192.168.5.200' return 1 fi local USER=$1 local HOST=$2 stopRemoteAdb $USER $HOST echo echo 'Get adb devices on local...' adb devices sleep 1 adb kill-server sleep 1 echo 'Start services...' nohup adb -a nodaemon server start > /dev/null 2>&1 & ssh -R 5037:localhost:5037 -f -N $USER@$HOST -o ServerAliveInterval=240 sleep 1 echo "Forward localhost:5037 to $HOST:5037." echo echo 'Remote get adb devices...' _remoteAdb $USER $HOST devices } stopRemoteAdb() { local USER=$1 local HOST=$2 echo 'Kill running processes...' _remoteAdb $USER $HOST kill-server adb kill-server # kill ssh command which contains 5037 ps -lef | grep ssh | grep 5037 | awk "{print \$2}" | xargs kill sleep 1 echo 'Complete' } ==== For WSL ADB kill: ==== ''' Run in windows: ''' adb kill-server ''' Run in WSL: ''' adb kill-server # kill adb process pkill -9 adb # kill Windows adb.exe process in WSL pkill -9 adb.exe # kill socat process pkill -9 socat ==== For remote linux machine adb kill: ==== ''' Run in local: ''' adb kill-server # kill adb process pkill -9 adb # kill ssh command which contains 5037 (used for port forward) ps -lef | grep ssh | grep 5037 | awk "{print \$2}" | xargs kill ''' Run in remote: ''' adb kill-server pkill -9 adb
Summary:
Please note that all contributions to SafeCodeGroup may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
SafeCode Wiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Page
Discussion
English
Views
Read
Edit
View history
More
Search
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Tools
What links here
Related changes
Special pages
Page information