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:

1.Close the Eclipse if running
2.Go to the Android SDK tools directory in Command Prompt
3.type adb kill-server
4.then type adb start-server
5.No error message is thrown while starting ADB server, then adb is started successfully.
6.Now you can start Eclipse again.
7.個人再補一條,重啟電腦。
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”的問題。

 

You May Also Like