ADB使用技巧

ADB

ADB,即 Android Debug Bridge,是 Android 开发中通过 PC 端控制 Android 设备的重要命令行工具。

ADB 是一个客户端-服务端程序,包含以下三部分功能:

  • 一个客户端,运行在开发 PC 上。可以通过 ADB 命令行来调用客户端。其他的 Android 工具,例如 ADTDDMS 都是由 ADB 创建的。
  • 一个服务端,以后台进程运行在开发 PC 上。服务端用于客户端与模拟器或者 Android 设备上的守护进程的通讯。
  • 一个守护进程,以后台进程运行在模拟器或者 Android 设备上。

如何使用 ADB

  1. 配置 ADB 环境变量
    • Windows
      <Android SDK>/platform-tools/ 添加在系统环境到 path
    • Mac
      在配置文件中写入 export PATH=${PATH}:<Android SDK>/platform-tools/
  2. 打开手机中的 USB调试 功能。
  3. 将手机通过 USB 连接至 PC(可能需要安装驱动),在手机上同意授权。允许调试

无线连接

ADB还可以通过无线连接,仅需要简单配置即可实现在 Wi-Fi 下使用 ADB

  1. 将 PC 与手机连接至同一 Wi-Fi 下。

  2. 通过 USB 连接手机。

  3. 设置手机监听 TCP/IP 5555 端口

    1
    $ adb tcpip 5555

    若PC连接多个手机,需要指定设备

    1
    2
    3
    4
    5
    6
    $ adb devices
    List of devices attached
    [serialNumber1] device
    [serialNumber2] device
    $ adb tcpip 5555 -s <serialNumber1>
  4. 查询手机的内网 ip 地址。

  5. 连接手机

    1
    $ adb connect <device-ip-address>
  6. 确定是否已连接

    1
    2
    3
    $ adb devices
    List of devices attached
    <device-ip-address>:5555 device

录制视频

在 Android 4.4(API 19)之后的设备上,可以通过 screenrecord 命令方便地录制视频。录制的视频格式为 MPEG-4

注意:录制的视频只有画面,没有声音。

部分设备不支持原生屏幕分辨率,尝试低分辨录制
录制过程中不支持屏幕旋转,若发生旋转,则部分画面会被裁剪。

基本用法

1
screenrecord [options] <filename>

例如:

1
$ adb shell screenrecord /sdcard/demo.mp4

视频默认时长 180 秒,按 Ctrl-C 可提前中断录制。
使用 adb pull 命令复制录制的视频文件

1
$ adb pull /sdcard/demo.mp4

默认视频分辨率为手机的原始分辨率
默认比特率为 4 Mbps

修改时长

添加 --time-limit <TIME>
例如调整为 60 秒:

1
$ adb shell screenrecord /sdcard/demo.mp4 --time-limit 60

调整视频分辨率

添加 --size <WIDTHxHEIGHT>
例如调整为 1280 x 720 :

1
$ adb shell screenrecord /sdcard/demo.mp4 --size 1280x720

调节比特率

添加 --bit-rate <RATE>
例如调整比特率为 2 Mbps:

1
$ adb shell screenrecord /sdcard/demo.mp4 --bit-rate 2000000

其他

在命令行显示录制信息
--verbose
将视频方向旋转90°
--rotate
帮助
--help


常用命令

查看已连接设备

查看已连接的设备,包括 USB 连接与 TCP/IP 5555 端口连接的设备。

1
2
3
4
5
$ adb devices
List of devices attached
[serialNumber1] [state]
[serialNumber2] [state]
...

  • Serial number
    • 真实设备显示为控制台序号
    • 通过 TCP/IP 5555 端口连接的会显示 192.168.xxx.xxx:5555
    • 模拟器会显示为 emulator-xxxx
  • state
    • offline - 已连接但设备无响应。
    • device - 已连接至adb服务。adb服务在设备开机时即开始加载,故设备可能处于开机状态。
    • no device - 没有设备或模拟器连接。
      添加 -l 可查看设备限定词
      1
      2
      $ adb devices -l
      [serialNumber] [state] product:[...] model:[...] device:[...]

远程shell

运行手机内的 /system/bin/... 的命令

  • 进入连接设备的shell命令行

    1
    2
    adb shell
    shell@ $

    输入 exit 退出远程shell或者按 CTRL+D

  • 单次使用远程shell命令
    1
    adb shell [command]

选择设备

当只连接单个设备或者模拟器时,adb shell会默认选择已连接的设备。当连接多个设备时,有些命令需要指定选择的设备。可通过 -d|-e|-s <specific device> 选择设备。

1
2
3
adb [-d|-e|-s <specific device>] [command]
adb [-d|-e|-s <specific device>] shell
adb [-d|-e|-s <specific device>] shell [command]

-d - 选择通过USB连接的设备,当有多个设备通过USB连接时返回错误。
-e - 选择模拟器,当有多个模拟器时返回错误。
-s <specific device> - 根据设备序列号或者限定词选择设备。

安装APK

1
adb install [-lrtsdg] <file>