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”的問題。