1 是什么
adb:Android Debug Bridge (安卓調(diào)試橋)
是一個(gè)命令行工具,用于電腦端和模擬器或者是設(shè)備之間的交互。
它是一個(gè)C/S架構(gòu)程序,由3部分組成:
- 客戶端(client):用于發(fā)送命令。在開(kāi)發(fā)機(jī)上運(yùn)行,可以通過(guò)發(fā)送adb命令來(lái)從命令行終端來(lái)調(diào)用客戶端。
- 守護(hù)進(jìn)程(adbd):在設(shè)備上運(yùn)行命令,在每個(gè)設(shè)備上作為后臺(tái)進(jìn)程運(yùn)行。
- 服務(wù)器(server):管理客戶端和守護(hù)進(jìn)程之間的通信,服務(wù)器在開(kāi)發(fā)機(jī)上作為后臺(tái)進(jìn)程運(yùn)行。

2 原理
我們來(lái)看看adb是如何工作的。
- 1.確保啟動(dòng)adb服務(wù)器:
在開(kāi)發(fā)機(jī)上啟動(dòng)adb客戶端的時(shí)候會(huì)檢查是否有adb服務(wù)器正在運(yùn)行。如果沒(méi)有則會(huì)啟動(dòng)adb服務(wù)器
2.adb客戶端和adb服務(wù)器通過(guò)TCP端口5037進(jìn)行通信。adb服務(wù)器監(jiān)聽(tīng)adb客戶端發(fā)出的命令
-
3.adb與正在運(yùn)行的設(shè)備建立連接。adb服務(wù)器掃描 5555 到 5585 之間的奇數(shù)號(hào)端口查找模擬器,一旦發(fā)現(xiàn)adbd(守護(hù)進(jìn)程),便會(huì)與相應(yīng)的端口建立連接。
- 模擬器:通過(guò)TCP通信
- 真機(jī):通過(guò)USB/TCP通信
注意:
1.端口5555到5585,該范圍供前16個(gè)模擬器使用。
2.每個(gè)模擬器都使用一對(duì)按順序排列的端口,其中偶數(shù)號(hào)端口供控制臺(tái)使用,奇數(shù)號(hào)端口供adb連接。
比如
模擬器 1,控制臺(tái):5554
模擬器 1,adb:5555
如上所示,在端口 5555 處與 adb 連接的模擬器與控制臺(tái)監(jiān)聽(tīng)端口為 5554 的模擬器是同一個(gè)。 adb服務(wù)器與設(shè)備建立連接后,就可以使用adb命令訪問(wèn)這些設(shè)備了。

時(shí)序圖:

3 安裝
這里講的是先安裝了android studio,然后使用adb的步驟。
1.下載:
`adb` 包含在 Android SDK 平臺(tái)工具軟件包中。您可以使用 https://developer.android.google.cn/studio/intro/update#sdk-manager下載此軟件包, 該管理器會(huì)將其安裝在 `android_sdk/platform-tools/` 下。 或者,如果您需要獨(dú)立的 Android SDK 平臺(tái)工具軟件包, 可以到 https://developer.android.google.cn/studio/releases/platform-tools下載。
2.添加環(huán)境變量
這里以MAC系統(tǒng)添加為例
- 1.打開(kāi)terminal
- 2.vim .bash_profile
- 3.添加如下內(nèi)容到bash_profile下
# android export ANDROID_HOME=/Users/{username}/Library/Android/sdk export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools - 4.查看是否能夠訪問(wèn)adb,在命令行輸入adb命令
當(dāng)然,你也可以使用apt命令直接安裝adb
apt-get install adb
4 功能
4.1 安裝apk
如果安裝某個(gè)apk不成功,可以使用adb安裝下,就可以看到具體不成功的錯(cuò)誤。
adb install xxx.apk
4.2 查看連接的設(shè)備
adb devices
4.3 顯示手機(jī)所有應(yīng)用
adb shell pm list packages
4.4 查看手機(jī)電池情況
adb shell dumpsys battery
4.5 屏幕截圖
adb exec-out screencap -p > test.png
參考:
https://developer.android.google.cn/studio/run/device
https://duanqz.github.io/2015-05-21-Intro-adb