
image.png
使用adb的無線調(diào)試功能十分的方便。
但是實(shí)際工作中,總是要手動(dòng)輸入,十分麻煩。所以就把它寫成腳本文件。
使用步驟
- 連接上USB
- 運(yùn)行腳本文件(
windows雙擊運(yùn)行bat文件,mac的話terminal運(yùn)行) - 拔掉USB
這樣就可以愉快的開始無線調(diào)試了~ - 注意手機(jī)和電腦需要在一個(gè)無線局域網(wǎng)內(nèi)!!
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語句是按行進(jìn)行遍歷,也就是一行一次循環(huán),對(duì)于我們來說,只有一行字符串,
REM 這個(gè)FOR循環(huán)肯定只進(jìn)入一次。而我們是要對(duì)字符串進(jìn)行空格分割后再處理。因此這
REM 里用GOTO語句來實(shí)現(xiàn)循環(huán)。而FOR語句只需看成是一條語句,這條語句實(shí)現(xiàn)了這樣的
REM 功能:將字符串分割成兩一部分,一部分是第一個(gè)空格前的字串,另一部分是剩余的
REM 字串(tokens=1,*)。第一部分保存在 a 變量中,第二部分保存在 b 變量中,這
REM 個(gè) b 是自動(dòng)的。
for /f "tokens=2,*" %%a in (%str%) do (
REM 這里可以替換成自己的處理程序,現(xiàn)在只是簡(jiǎn)單地顯示值
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 這里可以替換成自己的處理程序,現(xiàn)在只是簡(jiǎn)單地顯示值
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
)
- 注意事項(xiàng)
- 需要配置adb的環(huán)境變量。否則需要將腳本中的adb寫成絕對(duì)路徑。
- 運(yùn)行成功,就會(huì)直接關(guān)掉窗口。運(yùn)行失敗,則不會(huì)自動(dòng)關(guān)閉窗口。
- 因?yàn)闆]有找到可以直接接受命令返回的方法,所以執(zhí)行過程中會(huì)產(chǎn)生兩個(gè)臨時(shí)文件。(最后都會(huì)自動(dòng)刪除掉)
-
bat腳本運(yùn)行于windows,雙擊就可以運(yùn)行。
shell腳本
adb_wifi.sh
#!/bin/bash
_port=":6666"
port=${_port:1-start}
# 將adb先斷開
adb disconnect
#取到ip地址. 這里包括了3鐘獲取IP的方法,ip address應(yīng)該是通用的方法
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}
# 在魅族的手機(jī)上,可能獲取不到數(shù)據(jù),通過另外的方法來取
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
- 注意事項(xiàng)
- 需要配置adb的環(huán)境變量。否則需要將腳本中的adb寫成絕對(duì)路徑。
-
shell腳本不需要文件做中間變量就可以。 -
shell腳本的運(yùn)行
必須先給對(duì)應(yīng)的權(quán)限.然后運(yùn)行。
chmod +x adb_wifi.sh
./adb_wifi.sh