出自 Arch Linux 中文维基

Android 調試橋(ADB)是一種命令行工具,可用於安裝、卸載和調試應用程式,傳輸文件和訪問設備的 shell。

安裝

ADB 是平台-工具 SDK 軟體包android-tools 軟體包的一部分。

使用

連接設備

提示:
  • 對於一些設備,你能需要在設備上啟用 MTP,然後 ADB 才能工作。其他一些設備需要啟用 PTP 模式才能工作。
  • 許多設備的 udev 規則都包含在 libmtp 中,所以如果已安裝,下面的步驟可能不需要。
  • 確保你的 USB 線能夠同時進行充電和數據傳輸。許多與行動裝置捆綁的 USB 線不包括 USB 數據針。

要在 Arch 下通過 ADB 連接實體設備或手機,你必須:

  1. 如果希望將設備連接到適當的 /dev/ 項,可能需要安裝 android-udev
  2. 通過 USB 插入你的 Android 設備。
  3. 在你的手機或設備上啟用 USB 調試功能:
    • Jelly Bean(4.2)及更新的版本:進入設置>關於手機點擊版本號七次,直到得到一個彈出窗口說你已經成為一個開發者。在較新的 Android 作業系統版本,版本號可能在一個名為軟體信息 的菜單中。然後進入設置>開發者>USB 調試並啟用它。設備會要求允許有指紋的電腦連接。勾選永久允許選項會把 ~/.android/adbkey.pub 複製到設備的 /data/misc/adb/adb_keys
    • 較早的版本:這通常是在設置>應用程式>開發>USB 調試中進行。檢查該選項後重新啟動手機,以確保 USB 調試被啟用。

如果 ADB 識別你的設備adb devices 顯示為 "device" 而不是 "unauthorized",或者它在 IDE 中可見並可訪問),那麼你已完成。否則請看下面的說明。

識別設備標識符

每個 Android 設備都有 USB 製造商/產品標識符。例如,HTC Evo:

vendor id: 0bb4
product id: 0c8d

插入你的設備並執行:

$ lsusb
...
Bus 002 Device 006: ID 0bb4:0c8d High Tech Computer Corp.
...

添加 udev 規則

如果你的設備沒有包含在 android-udev(或 android-udev-gitAUR),使用以下模板創建一個自定義的 udev 規則,將 [VENDOR ID][PRODUCT ID] 替換為你的設備標識符

/etc/udev/rules.d/51-android.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="[VENDOR ID]", MODE="0660", GROUP="adbusers", TAG+="uaccess"
SUBSYSTEM=="usb", ATTR{idVendor}=="[VENDOR ID]", ATTR{idProduct}=="[PRODUCT ID]", SYMLINK+="android_adb"
SUBSYSTEM=="usb", ATTR{idVendor}=="[VENDOR ID]", ATTR{idProduct}=="[PRODUCT ID]", SYMLINK+="android_fastboot"

然後重新加載 udev 規則

檢測設備

設置好 udev 規則後,拔掉你的設備並重新插入。

運行之後:

$ adb devices
List of devices attached 
HT07VHL00676    device

如果 adb 在你把設備插回去之後仍然沒有檢測到設備,請以 root 身份殺死並重新啟動 adb 服務,然後再次檢查設備。

# adb kill-server
# adb start-server
$ adb devices

如果 adb devices 仍然在你連接的設備顯示未授權,請確保該設備本身有調試權限。當你實際連接該設備時,應該出現一個允許 USB 調試?的對話框。選擇總是允許...,然後點擊 確定。如果從未出現過該對話框,請嘗試在設置>開發人員選項>撤銷 USB 調試授權,然後點擊確定,並重複本節的步驟。如果你仍然沒有看到允許 USB 調試?對話框,而且設備被列為未授權,那麼進入設備的開發者選項,首先取消 USB 調試,然後再次勾選。

傳輸文件

現在可以使用 adb 在設備和電腦之間傳輸文件。一般來說,安卓設備的文件在/sdcard/目錄下。

要向設備傳輸文件,請用:

$ adb push what-to-copy where-to-place

要從設備傳輸文件,請用:

$ adb pull what-to-pull where-to-place

也可參見#用 ADB 構建的工具

備份和恢復

你也可以用adb備份和恢復你的設備。此外,不需要 root 就可以完成這個操作。下面的命令會將你的設備備份到一份單一的文件,也可以連續恢復。

創建備份的命令是:

$ adb backup -apk -shared -all -f backupFileName.ab

命令參數列表為:

adb backup [-f <file>] [-apk|-noapk] [-shared|-noshared] [-all] [-system|nosystem] [<packages...>]

然後在設備的顯示屏上確認這個操作,並提供一個密碼,無論之前是否已經設置備份密碼。

恢復以前備份的命令為:

$ adb restore backupFileName.ab
注意: 請記住,恢復操作會將你的設備內容替換成備份內容。

用 ADB 構建的工具

  • adbfs-rootless-gitAUR – 掛載一台通過 USB 連接的 Android 設備。
  • adb-sync-gitAUR – 一種使用 ADB 協議在 PC 和 Android 設備之間同步文件的工具。
  • androidscreencast-binAUR – 從 PC 通過 ADB 查看和控制你的 Android 設備。
  • logcat-colorAUR – 一種豐富多彩、高度可配置,可替代標準 adb logcat 命令。
  • scrcpy – 顯示和控制你的 Android 設備。
  • sndcpy-binAUR – 基於 scrcpy 可音頻轉發的工具。
  • qtscrcpyAUR – Android 實時顯示控制軟體。

故障排除

空設備列表

設備不顯示的一個可能原因是你的設備沒有啟用 USB 調試功能。參見啟用 USB 調試

無權限錯誤

如果設備顯示 "無權限 "標籤,它可能與 android-udev 收集的製造商/產品標識符不同。

例如,當設備使用定製 ROM,或者從 MTP 模式切換到 USB 連接模式、 sideload 和/或 fastboot 模式時,就會發生這種情況。 用 lsusb 驗證實際設備標識符,並#添加 udev 規則