Android Debug Bridge

出自 Arch Linux 中文维基

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

安裝[編輯 | 編輯原始碼]

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

使用[編輯 | 編輯原始碼]

連接設備[編輯 | 編輯原始碼]

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

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

  1. 如果希望將設備連接到適當的 /dev/ 項,可能需要安裝 android-udev
  2. 將你的 Android 設備通過 USB 插入到電腦。
  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 backup 已被棄用,可能會在未來被移除。

你也可以用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 構建的工具[編輯 | 編輯原始碼]

本文或本章節的語言、語法或風格需要改進。參考:Help:Style

原因:請使用 Template:App 格式。(在Talk:Android Debug Bridge討論)
  • adbfs-rootless-gitAUR – 掛載一台通過 USB 連接的 Android 設備。
  • adb-sync-gitAUR – 一個通過 ADB 協議在 PC 和 Android 設備之間同步文件的工具。
  • androidscreencast-binAUR – 通過 ADB 從 PC 查看和控制你的 Android 設備。
  • logcat-colorAUR – 一種豐富多彩、高度可配置,可替代標準 adb logcat 命令。
  • scrcpy – 顯示和控制你的 Android 設備。
  • qtscrcpyAUR – Android 實時顯示控制軟體。
  • adbmanager-binAUR - 該出現設計用於可視化並簡化 ADB 伺服器管理及 Android 手機連接。它可以讓你監控 adb 服務狀態,進行管理並控制已連接的設備。它也可以管理你的手機:使用名稱搜索已安裝的軟體包,安裝/刪除 APK,截屏,重啟(正常重啟,重啟到 Bootloader 或恢復模式)及關機。對於高階用戶,它同時提供了 Android Shell 終端和 SD 卡管理器。

故障排除[編輯 | 編輯原始碼]

空設備列表[編輯 | 編輯原始碼]

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

無權限錯誤[編輯 | 編輯原始碼]

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

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