adb 的原理以及它总重启等问题详解
1、adb(Android Debug Bridge) 意為android調試橋。
是android系統中的一種命令行工具,通過它可以和android設備或模擬器通信。
ADB是一個C/S架構的應用程序,由三部分組成:
1)adb client, 運行在PC上(為DDMS,即IDE工作)
2)adb daemon(守護進程), 運行于Emulator(為與Emulator中的VM交互工作);
3)adb server(服務進程), 運行在PC(任務管理器上有),管理著adb client和adb daemon的通信。server與client通信的端口是是5037,adb server會與emulator交互的,使用的端口有兩個,一個是5554專門用于與Emulator實例的連接,那么數據可以從Emulator轉發給IDE控制臺了,另一個則是5555,專門與adb daemon連接為后面調試使用。
??? PS:Emulator/Device占用兩個(一組)端口,一個為偶數的5554,一個奇數的5555。
??? 如果還開啟其他的Emulator,則使用的另一組端口是5556,5557,一直到5585.
??? adb server開啟時就是通過查找5555-5585之間端口來建立與模擬器的連接的,建立連接后就可以用adb的相關命令了。
ADB的原理詳圖解
這下總明白了吧。
2.DDMS
在Eclipse開發工具中開發時,右上角可打開DDMS面板。Android 開發環境中的針對設備上Dalvik虛擬機調試監控服務。它為我們提供例如:為測試設備截屏,針對特定的進程查看正在運行的線程以及堆信息、Logcat、廣播狀態信息、模擬電話呼叫、接收SMS、虛擬地理坐標等等服務。DDMS啟動后會自動調用ADB服務,從而啟動ADB服務,而不用開發者手動去啟動ADB工具。 因為當用數據線連接設備到電腦上時,adb就會啟動(前提是android設備上得先打開“USB調試”模式)。像各種手機助手類的軟件主要也是通過調用adb或者ddms來獲取和操作手機上的APP。個人感覺因為涉及的東西比較多,有數據線的問題,硬件接口的問題,還有adb,ddms能否順利啟動的問題,所以會出現有時候adb啟動會了,或者總是重啟。
?3.問題
因為當用數據線連接設備到電腦上時,adb就會啟動(前提是android設備上得先打開“USB調試”模式)。像各種手機助手類的軟件主要也是通過調用adb或者ddms來獲取和操作手機上的APP。個人感覺因為涉及的東西比較多,有數據線的問題,硬件接口的問題,還有adb,ddms能否順利啟動的問題,所以會出現有時候adb啟動會了,或者總是重啟。
4.解決辦法?
有個老外總結的比較全面:
Try below steps:
it worked for me this way, Eclipse should be closed before issuing these commands.
前提是你的adb已經配置好了。 如果這時候依然didn't ACK,那么啟動任務管理器,看看是否有adb.exe.有的話關掉,再重復以上動作就可以了。
這個問題是開發中的老大難問題,通過以上方法,大不了多折騰幾遍應該能解決類似于“ADB server didn't ACK * failed to start daemon”的問題。
?
參考資料:
1.http://game.chinaitlab.com/devdoc/856386.html
2.http://blog.sina.com.cn/s/blog_51335a000101j59n.html
3.http://www.cnblogs.com/miya2012/archive/2012/06/05/2536028.html
4.http://baike.baidu.com/view/2688850.htm
5.http://baike.baidu.com/view/46000.htm#3
?
Author By Andy Zhai
-0:39 16/04/2013
?
?
?
轉載于:https://www.cnblogs.com/carmanloneliness/archive/2013/04/16/3023299.html
總結
以上是生活随笔為你收集整理的adb 的原理以及它总重启等问题详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 后缀数组DC3算法实现
- 下一篇: Codeforces Edu Round