Android Debug Bridge
Android 调试桥(ADB)是一种命令行工具,可用于安装、卸载和调试应用程序,传输文件和访问设备的 shell。
安装[编辑 | 编辑源代码]
ADB 是平台-工具 SDK 软件包 和 android-tools包 软件包的一部分。
使用[编辑 | 编辑源代码]
连接设备[编辑 | 编辑源代码]
要在 Arch 下通过 ADB 连接实体设备或手机,你必须:
- 如果希望将设备连接到适当的
/dev/
项,可能需要安装 android-udev包。 - 通过 USB 插入你的 Android 设备。
- 在你的手机或设备上启用 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 – 从 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 规则。