awesome-adb屏幕录制与截图:调试必备功能
ADB(Android Debug Bridge,安卓调试桥)是Android开发/测试人员不可替代的强大工具,也是Android设备玩家的好玩具。在日常开发和测试过程中,屏幕截图和录制功能是定位问题、记录操作步骤的重要手段。本文将详细介绍如何使用ADB命令实现屏幕截图和录制,帮助你更高效地完成调试工作。
功能概述
ADB提供了直接的命令行工具来捕获设备屏幕和录制屏幕活动,无需依赖第三方应用。这些功能在以下场景特别有用:
- 应用崩溃前的界面状态记录
- 用户操作流程的可视化记录
- 自动化测试过程中的结果验证
- 远程设备的屏幕内容获取
项目的README.md中详细介绍了这些功能,本文将重点讲解实际应用方法。
屏幕截图功能
基本截图命令
ADB截图功能通过adb shell screencap命令实现,基本语法如下:
adb shell screencap -p /sdcard/screenshot.png
这条命令会将当前屏幕内容保存为PNG格式图片到设备的/sdcard/screenshot.png路径。其中-p参数指定输出为PNG格式。
截图并传输到电脑
通常我们需要将截图从设备传输到电脑,可通过以下命令组合实现:
adb shell screencap -p /sdcard/screenshot.png
adb pull /sdcard/screenshot.png ~/Desktop/
第一条命令在设备上截图,第二条命令将截图文件从设备拉取到电脑的桌面目录。
高级用法
自动命名截图
为避免每次截图覆盖之前的文件,可以使用日期时间自动命名:
adb shell screencap -p /sdcard/$(date +%Y%m%d%H%M%S).png
这条命令会生成类似20231015143022.png这样的文件名,方便按时间管理截图。
直接输出到电脑
通过管道命令,可以无需中间文件直接将截图传输到电脑:
adb exec-out screencap -p > ~/Desktop/screenshot.png
这种方式更高效,尤其适合需要频繁截图的场景。
屏幕录制功能
基本录制命令
ADB屏幕录制功能通过adb shell screenrecord命令实现,基本语法如下:
adb shell screenrecord /sdcard/recording.mp4
执行命令后,ADB会开始录制设备屏幕,默认录制时间为3分钟。按Ctrl+C停止录制。
常用参数
screenrecord命令支持多种参数来自定义录制效果:
| 参数 | 说明 |
|---|---|
| --size | 设置视频分辨率,如1280x720 |
| --bit-rate | 设置视频比特率,默认4Mbps,如--bit-rate 8000000表示8Mbps |
| --time-limit | 设置最大录制时长(秒),默认180秒(3分钟) |
| --rotate | 旋转视频90度 |
| --verbose | 显示录制过程的详细信息 |
示例:录制720p、5Mbps、最长10分钟的视频
adb shell screenrecord --size 1280x720 --bit-rate 5000000 --time-limit 600 /sdcard/recording.mp4
录制步骤
- 开始录制:
adb shell screenrecord /sdcard/my_recording.mp4
-
进行需要录制的操作
-
停止录制:按
Ctrl+C组合键 -
将录制文件传输到电脑:
adb pull /sdcard/my_recording.mp4 ~/Videos/
注意事项
- 音频录制:ADB屏幕录制默认不包含音频,这是Android系统的限制
- 设备支持:需要Android 4.4(API级别19)或更高版本
- 存储空间:确保设备有足够的存储空间,尤其是高分辨率和高比特率的录制
实际应用场景
场景一:应用崩溃问题定位
当应用发生崩溃时,可通过以下步骤记录现场:
- 持续截图捕获崩溃前的界面状态:
while true; do adb exec-out screencap -p > ~/Desktop/crash_$(date +%Y%m%d%H%M%S).png; sleep 1; done
-
执行可能导致崩溃的操作
-
找到崩溃前后的截图,分析问题原因
场景二:用户操作流程记录
要记录用户完成某个任务的完整流程:
adb shell screenrecord --size 1920x1080 --bit-rate 8000000 /sdcard/user_flow.mp4
录制完成后,可使用视频工具添加说明和标注,用于文档编写或问题报告。
场景三:自动化测试集成
在自动化测试脚本中集成截图功能,可在测试失败时自动捕获当前界面:
# 在测试脚本中
if [ $TEST_RESULT -ne 0 ]; then
adb exec-out screencap -p > ~/test_results/failure_$(date +%Y%m%d%H%M%S).png
fi
常见问题解决
截图为黑屏或空白
如果截图结果为黑屏或空白,可能的原因及解决方法:
- 应用处于全屏或DRM保护状态,尝试切换到其他界面再截图
- 设备不支持
-p参数,移除该参数并手动指定文件格式 - 权限问题,尝试使用
adb root获取root权限后再截图
录制文件无法播放
录制的视频文件无法播放通常是由于:
- 录制未正常结束:确保使用
Ctrl+C正确停止录制 - 播放器不支持视频编码:尝试使用VLC等支持更多编码格式的播放器
- 文件损坏:检查设备存储空间是否充足,尝试降低录制分辨率
命令执行缓慢
如果截图或录制命令执行缓慢,可尝试:
- 关闭设备上的不必要应用,释放系统资源
- 降低截图/录制的分辨率
- 使用有线连接代替无线连接
总结
ADB提供的屏幕截图和录制功能是Android开发调试的得力助手。通过本文介绍的命令和技巧,你可以轻松实现屏幕内容的捕获和记录,提高调试效率。更多ADB功能请参考项目的README.md文件。
掌握这些技巧后,你将能够:
- 快速捕获应用界面状态
- 记录完整的用户操作流程
- 为bug报告提供直观的视觉证据
- 集成到自动化测试流程中
希望本文对你的Android开发调试工作有所帮助!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




