adb是什么? adb就是Android調試橋,很形象啊。 先來看adb原理的邏輯圖:
ADB架構
adb由兩個物理文件組成:
adb/adb.exe
運行於PC端,包括Linux、Windows、Mac OS等系統之中,通常是x86架構上(下文中,ADB指整個模塊,而adb單獨指這一部分);
adbd
運行於Android設備的底層Linux之中,ARMv5架構上。
構建不同文件,通過傳入Android.mk的$(BUILD_SIMULATOR)變量是否為真。源碼中由ADB_HOST宏用來區分本地主機(adb)和目標機(adbd)。
區分不同OS,通過傳入Android.mk的$(HOST_OS)。它的有效取值包括linux、darwin、freebsd和windows。不同平台的主要差異是USB的控制方法和文件路徑。
ADB各模塊定義:
adb server: 計算機上的一個服務進程,進程名為adb
adbd (adb daemon) : Android 手機上的一個服務進程,進程名為adbd
adb client:你可以認為是計算機上的一個終端窗口,進程名也為adb
DDMS:Dalvik Debug Monitor Service
Jdwp: Java Debug Wire Protocol
adbd (ADB daemon):
運行於device/emulator的守護進程(Local service)。其作用如下:
1,用來連接device/emulator和adb server,device通過USB連接,emulator通過TCP連接。
2,為device/emulator提供服務--> adb service(adb服務,注意與adb服務端的區別)的概念,指adbd提供的功能。
在emulator/device端,adbd也創建local socket和remote socket,前者與通過jdwp與dalvik VM進層通信,后者通過TCP/USB與adb server通信。