Android Debug Bridge

出自 ArchWiki
(重定向自 Adb

Android Debug Bridge (ADB) 是一个命令行工具,可以用于安装、卸载和调试应用程序,传输文件以及访问设备的 shell。

安装

ADB 是 Platform-Tools SDK 软件包android-tools 软件包的一部分。

用法

连接设备

提示
  • 对于某些设备,您可能需要在设备上启用 MTP,然后 ADB 才能工作。某些其他设备需要启用 PTP 模式才能工作。
  • 许多设备的 udev 规则包含在 libmtp 中,因此如果您已安装此软件包,则可能不需要以下步骤。
  • 确保您的 USB 数据线能够同时充电和数据传输。许多移动设备捆绑的 USB 数据线不包含 USB 数据引脚。

要在 Arch 下通过 ADB 连接到真机或手机,您必须

  1. 如果您希望将设备连接到正确的 /dev/ 条目,您可能需要安装 android-udev
  2. 通过 USB 插入您的安卓设备。
  3. 在您的手机或设备上启用 USB 调试
    • Jelly Bean (4.2) 及更高版本:转到设置 > 关于手机,点击版本号 7 次,直到您收到已成为开发者的弹出窗口。版本号可能位于较新 Android 操作系统版本上的名为软件信息的菜单下。然后转到设置 > 开发者选项 > USB 调试并启用它。设备将要求允许具有其指纹的计算机连接。选中永久允许选项会将 ~/.android/adbkey.pub 复制到目标手机的 /data/misc/adb/adb_keys 位置。
    • 旧版本:这通常在设置 > 应用程序 > 开发 > USB 调试中完成。选中此选项后重启手机,以确保 USB 调试已启用。

如果 ADB 识别您的设备adb devices 将其显示为 "device" 而不是 "unauthorized",或者它在 IDE 中可见且可访问),则您已完成。否则,请参阅以下说明。

找出设备 ID

每个 Android 设备都有一个 USB 供应商/产品 ID。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] 替换为 您的设备的 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 仍然在您的设备旁边显示 unauthorized,请确保该设备本身已允许调试权限。当您物理连接设备时,应该会弹出一个允许 USB 调试?对话框。选择始终允许...,然后点击确定。如果从未出现该对话框,请尝试设置 > 开发者选项 > 撤销 USB 调试授权,然后点击确定,并重复本节中的步骤。如果您仍然没有看到允许 USB 调试?对话框,并且设备被列为未经授权,请进入设备上的开发者选项,首先取消选中USB 调试,然后再次选中它。

传输文件

您现在可以使用 adb 在设备和计算机之间传输文件。要将文件传输到设备,请使用

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

要从设备传输文件,请使用

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

另请参阅 #基于 ADB 构建的工具

备份与恢复

注意: adb backup/restore 已被弃用,并且可能会在未来的版本中移除。

您还可以使用 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 构建的工具

本文或本节需要语言、wiki 语法或样式改进。请参阅 Help:Style 以供参考。

原因: 使用 Template:App。(在 Talk:Android Debug Bridge 中讨论)
  • adbfs-rootless-gitAUR – 挂载通过 USB 连接的 Android 设备。
  • adb-sync-gitAUR – 一个使用 ADB 协议在 PC 和 Android 设备之间同步文件的工具。
  • androidscreencast-binAUR – 通过 PC 从 ADB 查看和控制您的 Android 设备。
  • logcat-color3AUR – 标准 adb logcat 命令的一个色彩丰富且高度可配置的替代品。
  • scrcpy – 显示和控制您的 Android 设备。
  • qtscrcpyAUR – Android 实时显示控制软件。
  • adbmanager-binAUR - 该程序旨在可视化且轻松地管理 ADB 服务器和 Android 智能手机的连接。允许您监视 adb 服务的状态、管理它以及控制已连接设备的列表。允许您管理智能手机:按部分名称搜索已安装的软件包、安装、删除 APK、屏幕截图、重启(正常、Bootloader、Recovery 模式)和关闭设备。对于高级用户,有一个 Android Shell 终端和一个 SD 卡文件管理器。

故障排除

设备列表为空

您的设备未显示的可能原因

  • 未在您的设备上启用 USB 调试。请参阅启用 USB 调试
  • 使用仅供电(仅充电)USB 数据线,而不是 USB 数据传输线。

没有权限错误

如果设备显示带有“no permissions”标签,则它可能具有与 android-udev 收集的不同的供应商/产品 ID。

例如,当设备使用自定义 ROM,或者从 MTP 切换到 USB 网络共享模式、侧载和/或 fastboot 模式时,可能会发生这种情况。使用 lsusb#添加 udev 规则 验证设备的实际 ID。

守护进程退出并显示权限不足错误

如果您在运行 adb 时看到以下错误

E adb     : usb_libusb.cpp:571 failed to open device: Access denied (insufficient permissions)

检查您是否在 adbusers 组中。