其實無線真機調試很簡單,走一遍流程就能學會并且記住,無需插件,無需Root,使用插件反而會將這個流程復雜化。
先放上純流程版,方便通篇閱讀之后的快速查閱,接下來還提供詳細版以供參考。
默認讀者可以成功真機調試,控制臺使用 cmd 或者AS的 Terminal 均可。
純流程版
- 將手機與電腦連接在同一局域網內
- 手機用線連接電腦,控制臺輸入命令 adb devices ,有設備編號為連接成功
- 控制臺輸入命令 adb tcpip 5555,將TCP模式在5555端口啟動,無任何輸出為成功啟動
- 拔手機線,控制臺輸入命令 adb connect 192.168.1.246:5555,192.168.1.246為手機在局域網的ip地址,輸出連接成功
- 此時無線連接已經成功,正常調試即可
詳細版
由于公司電腦配置較低,虛擬機運行緩慢,所以我一直傾向于真機調試,但是有線調試空間局限性很大,經常在測試上線的幾天身后圍一屁股人(小公司沒有版本管理跟自動編譯),很不方便,無線調試就是一個很好的解決方案。
很多人傾向與使用AS插件,但是實踐證明手動連接更加方便靈活,插件在某些意義上復雜了這個流程。
檢查連接
首先,你得有一個能正常有線調試的手機,還得有一根數據線,因為未Root的手機需要用電腦的ADB來來打開TCP模式并且綁定端口。
真機用線連電腦,打開Terminal(其實我更習慣用cmd),鍵入 adb devices,這個命令會輸出所有連接到這臺電腦上的設備,每個設備有一個獨一無二的序列號。見圖1。
此時,我電腦上連接了一臺設備,連接方式為有線。
進行無線連接
在確定你的手機與電腦成功聯機之后,輸入命令 adb tcpip 5555,這個命令的作用是打開手機的TCP模式,并且將其綁定到5555接口。其中,5555端口是一個習慣使用的端口,就像MySql一般使用3306端口一樣,也可以隨意指定,只要不產生端口沖突即可。
這條命令執行后沒有任何輸出,但是手機會出現一次,類似于與電腦斷線并且重新插線的反應,代表執行成功。
打開成功之后,就可以拔掉手機數據線了。
接下來執行連接命令,但是首先我們需要進入手機WIFI網絡詳情,找到此時手機WIFI中的IP地址。接下來就可以執行連接命令了,連接命令為 adb connect 手機IP地址:TCP綁定的端口。
例如,我手機的IP地址是192.168.1.246,之前TCP模式綁定的端口為5555,此時我需要執行的連接命令為 adb connect 192.168.1.246:5555。
此時控制臺輸出connected to 192.168.1.246:5555,表示無線連接成功。
TCP模式一旦開啟,只在手機重啟時才會關閉,關閉后如果還需使用需要重新開啟。斷網重連,換WIFI,不會關閉,只要保持手機電腦在統一WIFI下就不需要重新開啟。
不過如果手機一旦斷網,或者切換WIFI,與電腦的無線連接會立即斷開,如果需要重新連接,重新執行一次adb connect命令就好。
之前說過,使用插件反而會將這個流程復雜化,是因為這個過程本來就很簡單,就是幾個命令的事情,這個功能是AS原生支持的,使用插件的話,如果斷網或者換WIFI,插件會認為手機的TCP模式已經關閉,需要重新用線連接一次電腦,來開啟TCP模式。(也可能是我用的插件不夠智能?)
PS:如果執行adb connect命令時候,出現 由于目標計算機積極拒絕,無法連接 的提示,檢查一下TCP模式是否開啟,端口號是否正確。
調試
有線與無線連接,調試方式沒有差別,點擊編譯器上的綠色箭頭 Run app 即可。
如果無線調試時候OFFLINE了,關掉手機無線網絡,重新連接一次,然后重新執行adb connect命令即可,就像有線調試時那樣。
連接多臺設備
之前檢查連接的時候,使用過一個 adb devices命令,可以得到一個已連接設備的序列號表,一次連接多臺設備跟連接一臺設備流程類似,通過序列號指定設備即可。
如圖4,此時我的電腦通過有線接入兩臺設備,通過無線接入一臺設備。
此時如果直接執行大部分adb命令,比如開啟TCP模式,都會得到一個異常提醒,多于一個設備。如圖5。
這種情況下,只要指定設備序列號就可以正常執行。
例如,需要進行TCP模式開啟,adb -s f87c75bb tcpip 5555,但是與電腦建立連接的adb connect命令不需要加序列號,因為IP地址本來就相當于是序列號了。
PS:手機有線連接與無線連接都與一臺電腦進行連接的話,會被識別為兩臺設備。就像筆記本的有線網卡與無線網卡互相獨立。但這種連接沒有意義,所以推薦無線連接完成之后就把線拔了把。
個人理解,難免有錯誤紕漏,歡迎指正。轉載請注明出處。