Android Debug Bridge
Android Debug Bridge (ADB) 是一个命令行工具,可以用来安装、卸载和调试应用程序,传输文件以及访问设备的 shell。
安装
ADB 是 Platform-Tools SDK 包和 android-tools 包的一部分。
用法
连接设备
要在 Arch 下通过 ADB 连接到真机或手机,您必须
- 如果您希望将设备连接到正确的
/dev/
条目,您可能需要安装 android-udev。 - 通过 USB 插入您的安卓设备。
- 在您的手机或设备上启用 USB 调试
- Jelly Bean (4.2) 及更高版本:转到设置 > 关于手机,点击版本号 7 次,直到您收到已成为开发者的弹出窗口。 版本号可能位于较新 Android 操作系统版本上的名为软件信息的菜单下。 然后转到设置 > 开发者选项 > USB 调试并启用它。 设备将要求允许具有其指纹的计算机连接。 选中永久允许选项会将
~/.android/adbkey.pub
复制到目标手机的/data/misc/adb/adb_keys
位置。 - 旧版本:这通常从设置 > 应用程序 > 开发 > USB 调试完成。 选中此选项后重启手机,以确保 USB 调试已启用。
- Jelly Bean (4.2) 及更高版本:转到设置 > 关于手机,点击版本号 7 次,直到您收到已成为开发者的弹出窗口。 版本号可能位于较新 Android 操作系统版本上的名为软件信息的菜单下。 然后转到设置 > 开发者选项 > USB 调试并启用它。 设备将要求允许具有其指纹的计算机连接。 选中永久允许选项会将
如果 ADB 识别您的设备(adb devices
将其显示为 "device" 而不是 "unauthorized"
,或者它在 IDE 中可见且可访问),您就完成了。 否则,请参阅以下说明。
找出设备 ID
每个安卓设备都有一个 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 备份和恢复您的设备。 此外,无需 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-color3AUR – 一款色彩丰富且高度可配置的替代标准
adb logcat
命令的工具。 - scrcpy – 显示和控制您的 Android 设备。
- qtscrcpyAUR – Android 实时显示控制软件。
- adbmanager-binAUR - 该程序旨在可视化且轻松地管理 ADB 服务器和 Android 智能手机的连接。 允许您监视 adb 服务的状态、管理它以及控制连接设备的列表。 允许您管理您的智能手机:按部分名称搜索已安装的软件包、安装、删除 APK、屏幕截图、重启(正常、Bootloader、Recovery 模式)和关闭设备。 对于高级用户,有一个 Android Shell 终端和一个 SD 卡文件管理器。
故障排除
设备列表为空
您的设备未显示的可能原因
- 未在您的设备上启用 USB 调试。 请参阅启用 USB 调试。
- 使用仅供电(仅充电)的 USB 数据线,而不是 USB 数据传输线。
没有权限错误
如果设备显示带有“没有权限”标签,则它可能具有与 android-udev 收集的 vendor/product ID 不同的 ID。
例如,当设备使用自定义 ROM,或者从 MTP 切换到 USB 网络共享模式、侧载和/或 fastboot 模式时,可能会发生这种情况。 使用 lsusb 和 #添加 udev 规则 验证设备的实际 ID。
守护进程退出并显示权限不足错误
如果您在运行 adb 时看到以下错误
E adb : usb_libusb.cpp:571 failed to open device: Access denied (insufficient permissions)
检查您是否在 adbusers
组中。