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
用户组中。