WiFi(網絡)調試Android手機

adb本身提供了網絡調試的功能,所以,在不能直接用USB連上Android手機的情況下,可以使用WiFi連接adbd進行調試。具體方法如下:


方法一 臨時使用

如果只是暫時需要用WiFi連adb:
1.    手機、PC連上AP,確保兩者能夠正常分配IP(ifconfig查看):
PC:
 
手機:
 
(可以ping一下,驗證互通;若不互通,請檢查AP,PC,手機的網絡設置)

2.    USB連上手機,確保adb devices能夠找到:
 

3.    adb tcpip 5555(端口號,可以指定其他值),該命令將會重啓手機上的adbd,開啓網絡調試功能:
 

4.    斷開手機到PC的USB連接,adb connect 192.168.31.196:5555,提示connected即爲連接成功:
 

5.    此時adb devices就能夠看到通過tcp連接的手機了:
 

6.    此時,使用adb shell,就已經用WiFi連上手機了:
 

7.    斷開連接,手機關機(或重啓)會自動斷開adbd到PC上adb的TCP連接;除此之外,有其他方法:
a)    adb disconnect 192.168.31.120, 可以從adb交互中exit,再執行該命令(TCP連接暢通,交互沒有卡頓情況下);
b)    另外打開一個終端執行上述命令(此時另一個終端的adb交互自動結束);
c)    kill掉PC上的adb,也可結束adb交互,但不會清除adb devices中的設備;

 


方法二 經常使用

方法一需要每次先將手機通過USB連接到PC,使用adb tcpip命令開啓網絡調試功能,一旦手機重啓,又要重複這些步驟,比較麻煩。
一勞永逸的方法是,在手機的/system/build.prop中增加一行配置:service.adb.tcp.port=5555(同樣可以指定爲其他值),實現開機就支持網絡調試,不需要先USB連上手機。
可以先將/system/build.prop從手機中pull出來,修改後再push進去(需要root權限):
 

(注意:上面的adb remount命令需要root)

此後,每次重啓,WiFi連接成功(可在PC上ping一下)後,就能直接使用adb connect 192.168.31.120連上手機了。


進行調試

WiFi連接的adb使用起來和USB連接的沒有任何區別,可以正常使用adb shell, adb logcat, adb am,adb reboot等命令,使用Eclipse單步調試也沒有任何問題(絕對無痛。唔,當然,如果WiFi信號不好,會很卡)。

下面就用Eclipse裝一個了一個HelloWorld,並進行單步調試,沒有任何問題:



總結

adb和adbd分別位於PC和手機上,是典型的C/S模式。通常情況下,二者通過USB連接,而本文介紹的則通過TCP連接。工作原理是,PC端的adb命令通過USB(或TCP)連接發送到手機端的adbd上,adbd執行具體的操作,並將相應的結果返回給adb,最後再終端中顯示出來。感興趣的同學可自行研究其源碼,源碼位於Android項目的system/core/adb目錄(不知道如何獲取Android源碼,請查看《從github獲取最新Android源碼》)。

沒有ROOT手機也可以使用WiFi調試,唯一的要求是啓用手機的網絡調試功能,是不是邪惡感頓生?是不是在想如何通過其他手段打開某手機的tcp調試功能,沒錯,在某知名黑客大賽上,就有黑客使用植入了惡意程序的“充電器”(僞裝,帶有MCU的USB控制器)輕鬆入侵了手機(不只是Android,感興趣的同學自行搜索)。


PS:最近在調Android的USB-OTG功能,手機因爲插上了OTG線,不能繼續用USB連接adbd,所以試了一下WiFi連接,實驗成功,記錄在此,方便日後查閱。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章