image.png
使用adb的無線調試功能十分的方便。
但是實際工作中,總是要手動輸入,十分麻煩。所以就把它寫成腳本文件。
使用步驟
- 連接上USB
- 運行腳本文件(
windows
雙擊運行bat
文件,mac
的話terminal
運行) - 拔掉USB
這樣就可以愉快的開始無線調試了~ - 注意手機和電腦需要在一個無線局域網內!!
window的bat
腳本
adb_wifi.bat
@echo off
adb disconnect
REM 待處理的字符串
adb shell "ip address | grep inet | grep -v inet6 | grep -v 127" >ip.txt
set /P IP=<ip.txt
del ip.txt
echo %IP%
set str="%IP%"
REM set str="inet 192.168.1.137/24 brd 192.168.1.255 scope global wlan0"
REM FOR語句是按行進行遍歷,也就是一行一次循環,對于我們來說,只有一行字符串,
REM 這個FOR循環肯定只進入一次。而我們是要對字符串進行空格分割后再處理。因此這
REM 里用GOTO語句來實現循環。而FOR語句只需看成是一條語句,這條語句實現了這樣的
REM 功能:將字符串分割成兩一部分,一部分是第一個空格前的字串,另一部分是剩余的
REM 字串(tokens=1,*)。第一部分保存在 a 變量中,第二部分保存在 b 變量中,這
REM 個 b 是自動的。
for /f "tokens=2,*" %%a in (%str%) do (
REM 這里可以替換成自己的處理程序,現在只是簡單地顯示值
REM set a = "%%a"
REM echo %a%
REM 將剩余字符串存在b里面
set str="%%a"
)
echo str = %str%
for /f "delims=/ tokens=1,*" %%a in (%str%) do (
REM 這里可以替換成自己的處理程序,現在只是簡單地顯示值
REM set a = "%%a"
REM echo %a%
REM 將剩余字符串賦值給str變量
set str=%%a
)
echo str = %str%
adb tcpip 6666
set _ip=%str%:6666
adb connect %_ip% >result.txt
set /P RESULT=<result.txt
del result.txt
echo %RESULT% |findstr "^connected" >nul
if %errorlevel% equ 0 (
echo "成功連接到%_ip%"
) else (
echo "連接到%_ip%失敗??!"
pause
)
- 注意事項
- 需要配置adb的環境變量。否則需要將腳本中的adb寫成絕對路徑。
- 運行成功,就會直接關掉窗口。運行失敗,則不會自動關閉窗口。
- 因為沒有找到可以直接接受命令返回的方法,所以執行過程中會產生兩個臨時文件。(最后都會自動刪除掉)
-
bat
腳本運行于windows
,雙擊就可以運行。
shell腳本
adb_wifi.sh
#!/bin/bash
_port=":6666"
port=${_port:1-start}
# 將adb先斷開
adb disconnect
#取到ip地址. 這里包括了3鐘獲取IP的方法,ip address應該是通用的方法
ip=`adb shell "ip address | grep inet | grep -v inet6 | grep -v 127"`
len=${#ip}
if [[ $len != 0 ]];
_ip=`echo $ip |cut -f 2 -d ' ' |cut -f 1 -d '/'`${_port}
then
ip=`adb shell "ifconfig | grep inet | grep -v inet6 | grep -v 127"`
len=${#ip}
# 在魅族的手機上,可能獲取不到數據,通過另外的方法來取
if [[ $len == 0 ]];
then
ip=`adb shell "getprop dhcp.wlan0.ipaddress" | head -n 1`
len=${#ip}
val=`expr $len - 1`
_ip=${ip:0:val}${_port}
else
ip=`echo ${ip} | cut -f 2 -d ' '`
_ip=`echo ${ip} | cut -f 2 -d ':'`${_port}
fi
fi
result=`adb tcpip ${port}`
result=`adb connect ${_ip}`
echo $result
- 注意事項
- 需要配置adb的環境變量。否則需要將腳本中的adb寫成絕對路徑。
-
shell
腳本不需要文件做中間變量就可以。 -
shell
腳本的運行
必須先給對應的權限.然后運行。
chmod +x adb_wifi.sh
./adb_wifi.sh