對android比較熟悉的開發人員,對adb通過usb(usb連線android裝置)除錯android裝置應該不會陌生,因為大部分資料都是這樣做的。但是假如你的android裝置沒有usb口,只有網口,能不能除錯呢?(比如移植過程中通過nfs啟動的android系統,再比如你的裝置上面usb裝置匱乏。)答案是肯定的。本文我將以我最近的經驗,介紹一下adb怎樣通過tcp/ip來除錯android裝置。
adb早期版本只能通過usb來對裝置除錯,從adb v1.0.25開始,增加了對通過tcp/ip除錯android裝置的功能。
c:/>adbandroid debug bridge version 1.0.26...................... connect :- connect to a device via tcp/ip disconnect :- disconnect from a tcp/ip device........................
如果你想adb通過tcp/ip來除錯裝置,必須要滿足如下條件:
1、裝置上面首先要有網口。沒有網口,那就是「巧婦難為無公尺之炊」了。
2、裝置和研發機(pc機)已經接入區域網,並且裝置設有區域網的ip位址。
3、要確保研發機和裝置能夠相互ping得通。
4、研發機已經安裝了android sdk(要確保sdk版本是2.0之後的版本)。
5、檢查研發機上的adb的版本,是否是1.0.25之後的版本。方法就是在shell中敲入adb,回車,顯示幫助,第一行就是adb版本資訊,如上面所示。
6、確保android裝置中adbd程序(adb的後台程序)已經執行。adbd程序將會監聽埠5555來進行adb連線除錯。
本文假設裝置的ip為192.168.1.5,下文將會用這個ip建立adb連線,並除錯裝置。
1、首先android裝置需要先啟動,如果可以話,可以確保一下adbd啟動。
2、在研發機中,輸入:
adb connect 192.168.1.5:5555
如果連線成功會進行相關的提示,如果失敗的話,可以先kill-server命令,然後重試連線。
adb kill-server
3、如果連線已經建立,在研發機中,可以輸入adb相關的命令進行除錯了。比如adb shell,將會通過tcp/ip連線裝置上面。和usb除錯是一樣的。這裡就不多說了。
4、除錯完成之後,在研發機上面輸入如下的命令斷開連線:
adb disconnect 192.168.1.5:5555
這樣就通過tcp/ip完成了對android裝置的除錯工作了,希望對大家有所幫助。如有錯誤的地方,請不吝指教。
補充:
一直在為windows 7 64bit下面沒有adb驅動而煩擾,前些天還被萬惡的usb adb驅動給困擾,後來雖然東拼西湊的把adb驅動弄好了,不過萬惡的也只能跑在虛擬機器或者linux下面,昨天把那台式電腦裝了ubuntu,但其配置過差,速度真的不盡人意。
還好,今天乙個偶然的機會看了adb的命令幫助,發現其可以使用adb connect連線上裝置進行除錯,既然走網路路線,那麼就不用跟驅動打架了,windows 7 64bit下面一樣可以使用。
在上面這篇文章有提到需要使用
#set service.adb.tcp.port 5555
設定service.adb.tcp.port的值,但很奇怪在我的froyo上面沒有效果,adb驅動一樣不監聽5555埠。
以下是我的配置過程:
裝置端$ stop adbd
$ setprop service.adb.tcp.port 5555
$ start adbd
使用busybox檢視下網路埠的監聽情況
/ # /busybox netstat -l
active internet connections (only servers)
proto recv-q send-q local address foreign address state
tcp 0 0 127.0.0.1:5037 0.0.0.0:* listen
tcp 0 0 0.0.0.0:5555 0.0.0.0:* listen
有在監聽了,下面就在pc機上連線下即可:
pc端先殺死服務,以防萬一
# sudo adb kill-server
# adb connect 192.168.2.231:5555
connected to 192.168.2.231:5555
下面操作就跟usb除錯沒有什麼兩樣了~~~
享受debug之旅~~
Android adb遠端除錯
adb遠端除錯能遠端打包並實時列印出裝置的日誌,再也不需要被資料線束縛。adb遠端除錯主要步驟分為八個部分,如下 關閉防火牆 由於防火牆拒絕鏈結會導致adb服務無法啟動,因此需要關閉區域網的防火牆。配置adb環境 與jdk配置環境相似,在環境變數path下新增sdk的tools和platform t...
Android網路程式設計selector模式
下面上 socketchannel ch null socketaddress addr new inetsocketaddress 172.16 3.194,11904 ch socketchannel.open addr selector selector selector.open ch.co...
Linux Apache和Nginx網路模型詳解
程序阻塞和掛起的定義 阻塞是由於程序所需資源得不到滿足,並會最終導致程序被掛起 程序掛起的原因並不一定是由於阻塞,也有可能是時間片得不到滿足,掛起狀態是程序從記憶體排程到外存中的一種狀態,若在就緒態時,從記憶體調出到外存中,就是就緒掛起態,若在阻塞態時,從記憶體調出到外存中,就轉換成了阻塞掛起態 n...