Android 調試橋
Android 調試橋(ADB)是一種命令行工具,可用於安裝、卸載和調試應用程式,傳輸文件和訪問設備的 shell。
安裝[編輯 | 編輯原始碼]
ADB 是平台-工具 SDK 軟件包和 android-tools包 軟件包的一部分。
使用[編輯 | 編輯原始碼]
連接設備[編輯 | 編輯原始碼]
要在 Arch 下通過 ADB 連接實體設備或手機,你必須:
- 如果希望將設備連接到適當的
/dev/
項,可能需要安裝 android-udev包。 - 將你的 Android 設備通過 USB 插入到電腦。
- 在你的手機或設備上啟用 USB 調試功能:
- Jelly Bean(4.2)及更新的版本:進入設置>關於手機點擊版本號七次,直到出現一個彈出窗口説你已經成為開發者。在較新的 Android 作業系統版本上,版本號可能在一個名為軟件信息的菜單中。然後進入設置>開發者>USB 調試並啟用它。設備會要求允許有特定指紋的電腦進行連接。勾選永久允許選項會把
~/.android/adbkey.pub
複製到設備的/data/misc/adb/adb_keys
位置中。 - 較早的版本:這通常是在設置>應用程式>開發>USB 調試中進行。檢查該選項後重新啟動手機,以確保 USB 調試被啟用。
- Jelly Bean(4.2)及更新的版本:進入設置>關於手機點擊版本號七次,直到出現一個彈出窗口説你已經成為開發者。在較新的 Android 作業系統版本上,版本號可能在一個名為軟件信息的菜單中。然後進入設置>開發者>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 – 通過 ADB 從 PC 查看和控制你的 Android 設備。
- logcat-colorAUR – 一種豐富多彩、高度可配置,可替代標準
adb logcat
命令。 - scrcpy包 – 顯示和控制你的 Android 設備。
- qtscrcpyAUR – Android 實時顯示控制軟件。
- adbmanager-binAUR - 該出現設計用於可視化並簡化 ADB 伺服器管理及 Android 手機連接。它可以讓你監控 adb 服務狀態,進行管理並控制已連接的設備。它也可以管理你的手機:使用名稱搜索已安裝的軟件包,安裝/刪除 APK,截屏,重啟(正常重啟,重啟到 Bootloader 或恢復模式)及關機。對於高階用户,它同時提供了 Android Shell 終端和 SD 卡管理器。
故障排除[編輯 | 編輯原始碼]
空設備列表[編輯 | 編輯原始碼]
可能的原因有:
- 未啟用 USB 調試。參見啟用 USB 調試。
- USB 線只提供充電功能,沒有數據傳輸功能。
無權限錯誤[編輯 | 編輯原始碼]
如果設備顯示「無權限」標籤,它可能與 android-udev包 收集的製造商/產品標識符不同。
例如,當設備使用定製 ROM,或者從 MTP 模式切換到 USB 連接模式、sideload 和/或 fastboot 模式時,就會發生這種情況。 用 lsusb 驗證實際設備標識符,並#添加 udev 規則。
守護進程出現權限不足報錯[編輯 | 編輯原始碼]
如果在運行 adb 時出現以下報錯:
E adb : usb_libusb.cpp:571 failed to open device: Access denied (insufficient permissions)
請檢查你是否在 adbusers
用户組中。