adb使用指南
- 一、介绍
- 二、连接
- 一、有线连接方式
- 二、无线连接方式
- **Android 10及以下版本**
- **Android 11及以上版本**
- 三、指令
- 1、设备连接管理
- 2、应用调试
- 3、文件传输
- 4、系统控制
- 6、日志分析
- 7、其他
- 速查表总结
- python脚本实例:
提示:以下是本篇文章正文内容,,参考下面博客:
程序员–青青
一、介绍
- ADB(Android Debug Bridge)是Android官方提供的多功能命令行工具,主要用于连接计算机与Android设备(包括模拟器和真机),实现设备调试与管理。其核心功能包括:设备连接管理(通过USB或Wi-Fi建立通信并查看设备状态);应用调试(安装/卸载APK、启动Activity、捕获崩溃日志);文件传输(通过
push/pull
命令在设备与电脑间传输文件);日志分析(实时查看logcat
日志或过滤特定错误);系统控制(重启设备、进入Recovery模式、模拟用户输入如点击或文本输入);以及高级功能如端口转发、屏幕录制、性能监控(CPU/内存数据)等。 - 连接:
可以通过模拟器连接,也可以通过数据线连接,通过数据线连接时,手机进入“开发者选项”,打开“usb调试”。
不同品牌安卓机型,首次打开“开发者选项”方式不一样,大多是双击手机版本号3~5次,会toast提醒“开发者模式已打开”,具体打开方式可根据手机品牌进行百度查询
二、连接
一、有线连接方式
-
基础准备
- 确保电脑已安装ADB工具(包含在Android SDK的platform-tools中)并配置环境变量。
- 使用原装或可靠的数据线连接手机与电脑。
-
手机端设置
- 进入手机【设置】→【关于手机】,连续点击【版本号】7次激活开发者模式。
- 返回设置,开启【开发者选项】→【USB调试】,并在连接时选择【MTP(多媒体传输)】模式。
-
验证连接
- 电脑端执行命令:
若显示设备序列号且状态为adb devices
device
,则连接成功;若为unauthorized
,需在手机弹出的授权窗口中点击允许。
- 电脑端执行命令:
二、无线连接方式
Android 10及以下版本
-
初始有线配置
- 先用USB线连接手机和电脑,执行:
成功后拔掉数据线。adb tcpip 5555 # 启用TCP/IP模式并指定端口(可自定义)
- 先用USB线连接手机和电脑,执行:
-
获取设备IP
- 在手机【WLAN设置】中查看IP地址,或执行:
adb shell ip addr show wlan0 # 查看wlan0接口的IP。
- 在手机【WLAN设置】中查看IP地址,或执行:
-
无线连接
- 电脑端运行:
使用adb connect <设备IP>:5555 # 如:adb connect 192.168.1.100:5555
adb devices
确认连接状态。
- 电脑端运行:
Android 11及以上版本
- 直接无线配对
- 手机端开启【开发者选项】→【无线调试】,选择【使用配对码配对】或扫描二维码。
- 电脑端执行:
adb pair <IP:配对端口> # 输入手机显示的6位数配对码 adb connect <IP:调试端口> # 连接成功后端口可能与配对端口不同。
三、指令
1、设备连接管理
- 查看adb版本
adb version
- 查看已连接设备列表
adb devices
- 无线连接设备
adb connect <IP:端口>
- 断开设备连接
adb disconnect
- 启动服务
adb start_server
- 终止服务
adb kill-server
2、应用调试
- 安装apk
adb install <APK路径>
- 覆盖安装(升级)
adb install -r <APK路径>
- 卸载应用
adb uninstall <包名>
- 列出所有应用
adb shell pm list packages
- 强制退出该应用
adb shell am force-stop <包名>
3、文件传输
- 上传到设备
adb push <电脑路径> <设备路径>
- 下载到电脑
adb pull <设备地址> <电脑路径>
- 查看文件
adb shell ls /sdcard/
4、系统控制
- 模拟事件
点击命令:adb shell input tap <x> <y>
长按命令:adb shell PressAndHold <x> <y> <Duration_time_ms>
滑动命令:adb shell input swipe <x1> <y1> <x2> <y2> <Duration_time_ms>
物理按键:adb shell input keyevent <keycode>常用keycode列表:3:HOME键4:返回键24:音量+25:音量-26:电源键82:菜单键66:回车键67:删除键
文本输入:adb shell input text "要输入的文本"## 5、高级功能
- 屏幕截图
```c
adb shell screencap -p /sdcard/myphoto.png
- 录屏
adb shell screenrecord --time-limit 录屏时间s <存放路径/xxx.mp4>
- 帮助
adb help
- 管理员权限
adb root
- shell命令(输入以下命令即可使用linux命令,退出使用exit)
adb shell
- 查看已连接设备列表
adb devices
6、日志分析
adb shell logcat -c:清理现有日志
adb shell logcat -v time :输出日志,信息输出在控制台
adb shell logcat -v time > <存放路径\log.txt>:输出日志并保存在本地文件
Ctrl+C:终止日志抓取
adb shell logcat -v time *:E > <存放路径\log.txt>:打印级别为Error的信息
日志的等级:
-v:Verbse(明细)
-d:Debug(调试)
-i:Info(信息)
-w:Warn(警告)
-e:Error(错误)
-f:Fatal(严重错误)
抓取日志的步骤先输入命令启动日志,然后操作 App,复现 bug,再 ctrl+c 停止日志,分析本地保存的文件。
:日志是记录手机系统在运行app时有什么异常的事件
EXCEPTION
也可以把更详细得Anr日志拉取出来:adb shell pull /data/anr/traces.txt <存放路径>
7、其他
- 获取设备型号
adb shell getprop ro.product.model
- 获取Android系统版本
adb shell getprop ro.build.version.release
- 获取设备的序列号(设备号)
adb get-serialno
- 获取设备屏幕分辨率
adb shell wm size
- 获取手机内存信息
adb shell cat /proc/meminfo
- 获取手机存储信息
adb shell df
速查表总结
分类 | 命令/操作 | 说明 | 注意事项 |
---|---|---|---|
设备连接管理 | adb devices | 查看已连接设备列表,状态为device 表示授权成功 | 若显示unauthorized ,需在设备端点击授权弹窗 |
adb connect <IP:端口> | 无线连接设备(默认端口5555) | Android 11+需先通过adb pair 配对 | |
adb kill-server / adb start-server | 重启ADB服务,解决连接异常 | 可能需管理员权限 | |
应用调试 | adb install -r <APK路径> | 覆盖安装应用(升级) | 若失败可尝试-d 强制安装 |
adb shell pm list packages -3 | 仅列出用户安装的应用 | 需USB调试授权 | |
adb shell am force-stop <包名> | 强制停止应用 | 可能影响后台服务 | |
文件传输 | adb push <本地路径> <设备路径> | 上传文件到设备(如/sdcard/ ) | 部分系统路径需root权限 |
adb pull <设备路径> <本地路径> | 下载文件到电脑 | 路径需存在且可读 | |
系统控制 | adb shell input tap <x> <y> | 模拟点击屏幕坐标 | 坐标需根据设备分辨率调整 |
adb shell input keyevent 3 | 模拟物理按键(如3=HOME键) | 键值表需参考官方文档 | |
高级功能 | adb shell screencap -p /sdcard/screen.png | 截图并保存到设备 | 需设备存储权限 |
adb shell screenrecord --time-limit 10 /sdcard/demo.mp4 | 录屏(默认3分钟,可设时长) | 部分设备不支持高比特率录制 | |
日志分析 | adb logcat -v time *:E > error.log | 记录带时间戳的错误日志到文件 | 可结合grep 过滤关键词 |
设备信息查询 | adb shell getprop ro.product.model | 获取设备型号 | 部分属性可能因厂商定制不同 |
adb shell dumpsys battery | 查看电池状态(如电量、充电方式) | 需设备支持 |
python脚本实例:
import os
import timedef click(x,y):os.system(f"adb shell input tap {x} {y}")def swipe(x1,y1,x2,y2,duration):os.system(f"adb shell input swipe {x1} {y1} {x2} {y2} {duration}")def screen_photo(name):os.system(f'adb shell screencap -p /sdcard/{name}.png')os.system(f'adb pull /sdcard/{name}.png')if __name__=='__main__':while True:swipe(138,1272,668,0,100)time.sleep(0.01)click(678,1070)screen_photo('test')
声明:
本文为本人的学习笔记,旨在记录和分享个人在学习过程中的心得体会和原创代码。由于本人刚入门,对相关知识的理解可能还存在不足之处,文章中难免会有错误或不准确的地方。在此,我诚挚地欢迎各位读者在阅读过程中,如果发现任何问题或有其他建议,随时在评论区或通过其他方式与我交流。我将虚心听取大家的意见,及时修正和改进文章内容,以便更好地学习和成长。感谢大家的关注和支持!