ADB 使用备忘

Android Debug Bridge 常用命令和使用技巧

ADB 使用备忘

ADB (Android Debug Bridge) 是 Android 开发和调试的必备工具,用于与 Android 设备通信。本文记录常用命令和使用技巧。

1. 安装

1.1 Windows

1
2
3
4
5
6
7
8
# 方式1: 使用 winget
winget install Google.PlatformTools

# 方式2: 手动安装
# 下载 SDK Platform-Tools
# https://developer.android.com/studio/releases/platform-tools
# 解压后添加到 PATH 环境变量
# 或放入已有 PATH 目录如 C:\Windows

1.2 Linux

1
2
# Ubuntu/Debian
sudo apt install android-tools-adb

1.3 验证安装

1
2
3
adb version
# Android Debug Bridge version 1.0.41
# Version 34.0.5-10900879

2. 连接设备

2.1 USB 连接

  1. 手机开启开发者选项:设置 → 关于手机 → 连续点击"版本号" 7 次
  2. 开启 USB 调试:设置 → 开发者选项 → USB 调试
  3. USB 连接电脑,选择"文件传输"模式
  4. 授权调试
1
2
3
4
5
6
# 查看已连接设备
adb devices

# 输出示例
# List of devices attached
# abc123    device

DEBUG:no permissions (user huluhulu is not in the plugdev group);参考

  1. 确保自己添加在组plugdev中, 第一次添加需要重新登录用户才能生效。
1
sudo usermod -aG plugdev $USER
  1. 添加 udev 规则,创建文件 /etc/udev/rules.d/51-android.rules,内容如下(根据lsusb命令的输出设置):
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
huluhulu@march-dlng:~$ lsusb # 如果修改了手机的连接模式,下面id会随之变化(例如从仅充电修改成文件传输)
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 048d:5702 Integrated Technology Express,  Inc. RGB LED Controller
Bus 001 Device 003: ID 05e3:0608 Genesys Logic,  Inc. Hub
Bus 001 Device 004: ID 05e3:0608 Genesys Logic,  Inc. Hub
Bus 001 Device 005: ID 046d:c31c Logitech,  Inc. Keyboard K120
Bus 001 Device 006: ID 046d:c53f Logitech,  Inc. USB Receiver
Bus 001 Device 011: ID 22d9:2765 OPPO Electronics Corp. Oppo N1 # ----> 这里是连接的手机 记住ID后面的数字
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

# 例如上面手机的 ID 是 22d9:2765,分别表示厂商 ID 和产品 ID,规则内容如下

# 接下来添加`udev`规则
sudo vim /etc/udev/rules.d/51-android.rules
# 把下面内容添加到文件中,保存退出
# SUBSYSTEM=="usb",  ATTR{idVendor}=="22d9",  ATTR{idProduct}=="2765",  MODE="0666" # 这里0666表示所有用户可读写设备

# 修改权限并重启udev
sudo chmod a+rx /etc/udev/rules.d/51-android.rules
sudo service udev restart
# 重启adb服务
sudo adb kill-server
sudo adb start-server

2.2 无线连接

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 首次需要 USB 连接,开启 TCP/IP 模式
adb tcpip 5555

# 查看手机 IP
adb shell ip addr show wlan0

# 断开 USB,通过 WiFi 连接
adb connect 192.168.1.100:5555

# 断开连接
adb disconnect 192.168.1.100:5555

# Android 11+ 可直接扫码配对
# 设置 → 开发者选项 → 无线调试 → 使用配对码配对设备
adb pair 192.168.1.100:37123
# 输入配对码
adb connect 192.168.1.100:5555

2.3 多设备管理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 查看所有设备
adb devices -l

# 指定设备执行命令
adb -s <serial> shell

# 通过 USB 连接
adb -d shell

# 通过 TCP/IP 连接
adb -e shell

3. 基本命令

3.1 设备信息

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 设备序列号
adb get-serialno

# 设备状态
adb get-state

# Android 版本
adb shell getprop ro.build.version.release

# SDK 版本
adb shell getprop ro.build.version.sdk

# 设备型号
adb shell getprop ro.product.model

# 设备品牌
adb shell getprop ro.product.brand

# 所有属性
adb shell getprop

3.2 Shell 操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 进入交互式 Shell
adb shell

# 执行单条命令
adb shell ls /sdcard
adb shell cat /proc/cpuinfo

# 以 root 身份运行(需设备已 root)
adb root
adb shell

# 重新挂载系统分区为可写
adb remount

4. 文件传输

4.1 推送文件到设备

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 基本语法
adb push <本地文件> <设备路径>

# 示例
adb push test.txt /sdcard/
adb push folder/ /sdcard/folder/

# 推送并设置权限
adb push script.sh /data/local/tmp/
adb shell chmod +x /data/local/tmp/script.sh

4.2 从设备拉取文件

1
2
3
4
5
6
# 基本语法
adb pull <设备路径> <本地路径>

# 示例
adb pull /sdcard/test.txt ./
adb pull /sdcard/DCIM/ ./photos/

4.3 同步文件

1
2
3
4
5
# 同步到设备(只传输变化的文件)
adb sync

# 指定同步目录
adb sync /sdcard/

5. 应用管理

5.1 安装应用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 安装 APK
adb install app.apk

# 覆盖安装(保留数据)
adb install -r app.apk

# 允许降级安装
adb install -d app.apk

# 安装到 SD 卡
adb install -s app.apk

# 多个 APK(Split APK)
adb install-multiple base.apk config.arm.apk

5.2 卸载应用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 卸载应用
adb uninstall com.example.app

# 卸载但保留数据
adb uninstall -k com.example.app

# 查看已安装应用
adb shell pm list packages
adb shell pm list packages -3  # 第三方应用
adb shell pm list packages -s  # 系统应用

5.3 清除应用数据

1
2
3
4
5
# 清除数据和缓存
adb shell pm clear com.example.app

# 清除缓存
adb shell rm -rf /data/data/com.example.app/cache/*

5.4 启动应用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 启动应用
adb shell am start -n com.example.app/.MainActivity

# 启动特定 Activity
adb shell am start -n com.example.app/com.example.app.SecondActivity

# 带参数启动
adb shell am start -a android.intent.action.VIEW -d https://baidu.com

# 启动 Service
adb shell am startservice com.example.app/.MyService

# 停止应用
adb shell am force-stop com.example.app

5.5 应用信息

1
2
3
4
5
6
7
8
# 应用路径
adb shell pm path com.example.app

# 应用详细信息
adb shell dumpsys package com.example.app

# 当前前台应用
adb shell dumpsys activity activities | grep mCurrentFocus

6. 日志与调试

6.1 日志查看

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 查看所有日志
adb logcat

# 清除日志缓冲区
adb logcat -c

# 查看特定级别日志
adb logcat *:V    # Verbose
adb logcat *:D    # Debug
adb logcat *:I    # Info
adb logcat *:W    # Warning
adb logcat *:E    # Error

# 过滤特定标签
adb logcat -s TAG_NAME
adb logcat TAG_NAME:V *:S

# 过滤关键字
adb logcat | grep "keyword"

# 过滤应用日志(需要 PID)
adb logcat --pid=$(adb shell pidof com.example.app)

# 保存日志到文件
adb logcat > logcat.txt

# 查看内核日志
adb shell dmesg

6.2 Bug 报告

1
2
3
4
5
# 生成 bug 报告
adb bugreport bugreport.zip

# 快速报告
adb bugreport -k

6.3 内存信息

1
2
3
4
5
6
7
8
9
# 查看内存使用
adb shell dumpsys meminfo

# 特定应用内存
adb shell dumpsys meminfo com.example.app

# 查看 CPU 使用
adb shell top
adb shell dumpsys cpuinfo

7. 截图与录屏

7.1 截图

1
2
3
4
5
6
7
8
# 截图保存到设备
adb shell screencap /sdcard/screenshot.png

# 拉取到电脑
adb pull /sdcard/screenshot.png

# 一行命令截图并拉取
adb exec-out screencap -p > screenshot.png

7.2 录屏

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 开始录屏(最长 180 秒)
adb shell screenrecord /sdcard/video.mp4

# 设置时长(秒)
adb shell screenrecord --time-limit 30 /sdcard/video.mp4

# 设置分辨率
adb shell screenrecord --size 1280x720 /sdcard/video.mp4

# 设置比特率
adb shell screenrecord --bit-rate 4000000 /sdcard/video.mp4

# Ctrl+C 停止录屏,然后拉取
adb pull /sdcard/video.mp4

8. 端口转发与反向代理

8.1 正向端口转发

将电脑端口转发到设备端口:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 电脑 8080 -> 设备 80
adb forward tcp:8080 tcp:80

# 查看转发列表
adb forward --list

# 删除转发
adb forward --remove tcp:8080

# 删除所有转发
adb forward --remove-all

8.2 反向端口转发

将设备端口转发到电脑端口:

1
2
3
4
5
6
7
8
# 设备 8080 -> 电脑 3000
adb reverse tcp:8080 tcp:3000

# 查看反向代理列表
adb reverse --list

# 删除反向代理
adb reverse --remove tcp:8080

9. 备份与恢复

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 备份应用数据
adb backup -f backup.ab com.example.app

# 备份所有应用
adb backup -f all.ab -all

# 备份应用及其 APK
adb backup -f backup.ab -apk com.example.app

# 恢复数据
adb restore backup.ab

10. 设备控制

10.1 重启

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 普通重启
adb reboot

# 重启到 Recovery
adb reboot recovery

# 重启到 Bootloader/Fastboot
adb reboot bootloader

# 重启到 EDL 模式(部分设备)
adb reboot edl

10.2 输入操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 发送按键事件
adb shell input keyevent KEYCODE_HOME
adb shell input keyevent KEYCODE_BACK
adb shell input keyevent KEYCODE_MENU
adb shell input keyevent KEYCODE_POWER
adb shell input keyevent KEYCODE_VOLUME_UP
adb shell input keyevent KEYCODE_VOLUME_DOWN

# 常用键值
# 3: HOME
# 4: BACK
# 24: VOLUME_UP
# 25: VOLUME_DOWN
# 26: POWER
# 27: CAMERA

# 点击屏幕
adb shell input tap 500 500

# 滑动
adb shell input swipe 100 500 1000 500      # 水平滑动
adb shell input swipe 500 1000 500 100 500  # 垂直滑动,持续 500ms

# 输入文本
adb shell input text "hello"

# 长按
adb shell input swipe 500 500 500 500 1000  # 长按 1 秒

11. 网络调试

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 查看 IP 地址
adb shell ifconfig wlan0
adb shell ip addr show wlan0

# ping 测试
adb shell ping baidu.com

# 查看网络连接
adb shell netstat

# 查看 DNS
adb shell getprop net.dns1

12. 快速参考

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
┌─────────────────────────────────────────────────────┐
│                    ADB 常用命令                      │
├─────────────────────────────────────────────────────┤
│  设备管理                                            │
│  adb devices              列出设备                   │
│  adb -s <id> shell        指定设备                   │
│  adb connect IP:PORT      无线连接                   │
├─────────────────────────────────────────────────────┤
│  文件操作                                            │
│  adb push <local> <remote>  推送文件                 │
│  adb pull <remote> <local>  拉取文件                 │
├─────────────────────────────────────────────────────┤
│  应用管理                                            │
│  adb install app.apk      安装应用                   │
│  adb uninstall pkg        卸载应用                   │
│  adb shell pm clear pkg   清除数据                   │
│  adb shell am start -n pkg/.Activity  启动应用       │
├─────────────────────────────────────────────────────┤
│  日志调试                                            │
│  adb logcat               查看日志                   │
│  adb logcat -c            清除日志                   │
│  adb logcat *:E           只看错误                   │
├─────────────────────────────────────────────────────┤
│  截图录屏                                            │
│  adb exec-out screencap -p > ss.png  截图           │
│  adb shell screenrecord /sdcard/v.mp4  录屏         │
└─────────────────────────────────────────────────────┘

参考链接

Licensed under CC BY-NC-SA 4.0