歡迎轉載,轉載請註明:http://blog.csdn.net/zhgxhuaa
1. 前言
1.1. 寫在前面的話
在之前的一篇文章《360電視助手實現研究》中介紹了在局域網內直接通過adb安裝應用,本文接下來繼續介紹adb一點有意思的小東東。本系列之所以取名《adb的那點小事》是因爲,只想介紹一些有意思的而且平時大多數人關注不多的方面,類似於“adb原理”、“adb如何使用”之類的老生常談不在本文的介紹範圍內。
言歸正傳,本文介紹的內容是:在局域網內,如果進行adb遠程調試,即:在沒有數據線的情況下,如何在局域網內使用adb開發。
1.2. 本文的背景
作爲一名Android程序員,每天接觸最多的就是eclipse和adb了。在開發的過程中,這幾種場景我們應該並不陌生:
A. 手機正在測試同學手中,但是我們想要抓log。那麼接下來會有兩種選擇:
a) 讓測試的同學幫忙抓log,但可能抓不到自己想要的;
b) 讓測試同學把手機送過來,或者自己去取,但需要浪費至少10幾分鐘。
B. 電腦連接一臺剛纔其他同學(開發或測試)手機拿過來的機器。那麼接下來可能需要等待幾分鐘的時間來安裝手機驅動。
C. 長時間的使用,adb數據線損壞或者不太靈敏。
那麼有沒有一種好的辦法可以解決上述問題呢?本文接下來將做一個探討。
2. 技術實現研究
2.1. 遠程調試的原理
要了解爲什麼可以遠程調試,首先還是要簡單的說一下adb的原理。我們平時所說的adb在Android中是被實現爲一種C/S結構的,其中Server端被稱爲adbd,也即adb守護進程,該進程運行在手機中。對於C/S結構的命令的執行響應過程,大家應該都比較熟悉,不再做介紹。這裏繼續說一下adbd,adbd提供了兩種監聽客戶端請求的方式:USB和TCP/IP,其中USB方式是系統的默認監聽方式。
所以,結合《360電視助手實現研究》中的介紹,接下來我們應該怎麼做就比較明顯了:
1. 首先,設置手機的adbd爲TCP/IP方式;
2. 其次,設置adbd監聽某一特定的端口;
3. 最後,在遠程(電腦上)通過adb connect連接到手機。
通過以上三部,我們就可以遠程adb調試和打印log了。接下來將介紹具體的實現,及需要注意的一些問題。
2.2. 具體技術實現
要實現adb遠程調試,首先需要手機具有root權限,可以通過下面的代碼進行簡單的判斷:
在判斷手機具有臨時root權限後,接下來就是設置adbd監聽的端口和重啓adbd使端口生效了,代碼如下:
在默認情況下adbd監聽的端口爲“5555”,這裏可以根據需要(比如5555是否被佔用)進行修改。
在完成上一部的操作後,可以到手機“設置->WLAN->當前正在使用的wifi熱點的信息”中查看IP信息,也可以通過下面的方法獲取:
接下來就可以在電腦上的cmd下通過“adb connect”連接剛纔的IP,進行遠程adb的調試了,如果成功會顯示“connected to xxxxx”;連接失敗則提示”unable to connect to xxxxx”,下面是我電腦操作的截圖:
最後,在遠程調試完成後,記得將手機adb恢復到usb模式:
好了,到這裏,本文就介紹完了,有問題環境交流討論。