Android测试必备神器:ADB常用命令汇总,让你效率翻倍!

作为Android测试工程师,常会遇到APP卡死、多设备批量操作繁琐、性能数据获取不精准、日志抓取不完整等问题,而ADB(Android Debug Bridge)是解决这些问题的高效工具,本文将详细介绍ADB的基础使用及各类常用核心命令。

一、ADB是什么?简单来说,它是“桥梁”

ADB全称Android Debug Bridge(安卓调试桥),是连接电脑与安卓设备/模拟器的桥梁,可在电脑端通过命令行对连接设备执行安装应用、拷贝文件、运行命令、抓取日志等操作。

准备工作

  1. 开启手机的开发者选项:连续点击“设置”->“关于手机”中的“版本号”7次;
  2. 开启USB调试:在“开发者选项”中找到并开启;
  3. 安装ADB工具:下载Android SDK Platform-Tools或直接搜索“ADB工具包”,将其路径添加到系统环境变量PATH中;
  4. 连接手机:用USB线连接手机和电脑,在手机上授权调试;
  5. 验证连接:打开命令行(CMD/Terminal),输入adb devices,若显示设备序列号且后跟device,则连接成功。

二、ADB核心命令

类别一:设备管理

# 查看已连接设备/模拟器
adb devices  

# 指定设备执行命令(多设备时使用)
adb -s <设备号> ... // 示例:adb -s <设备号> install app.apk  

# 无线连接设备
adb connect <IP>:端口号  // 摆脱数据线

# 断开无线连接设备
adb disconnect <IP>:端口号  

# 重启ADB服务(连接异常时使用)
adb kill-server

类别二:应用管理

# 安装APK
adb install <apk路径>  // 示例:adb install ~/downloads/demo.apk

# 覆盖安装
adb -r install <apk路径> // 示例:adb install -r demo.apk

# 卸载应用
adb uninstall <包名>  // 示例:adb uninstall com.example.demo

# 列出所有应用包名(-3 仅列第三方应用)
adb shell pm list packages  // 示例:adb shell pm list packages -3

# 查看应用详细信息(Activity、权限、版本等)
adb shell dumpsys package <包名>  

# 启动应用
adb shell am start -n <包名>/<主Activity>  // 示例:adb shell am start -n com.demo/.MainActivity

# 模拟系统回收应用进程
adb shell am kill com.example.app

如何找包名和Activity?

adb shell pm list packages | grep demo

# 2. 找启动Activity(需先安装应用)
adb shell dumpsys package com.demo.app | grep -A 5 MAIN

# Tips: 如提示grep不是内部或外部命令,替换为findstr

# 同时获取包名&Activity(前提:进入APP首页)
adb shell dumpsys window w | findstr \/ |findstr name=

类别三:文件操作 – 拉取日志与截图

# 从设备拉取文件到电脑
adb pull <设备路径> <电脑路径>  // 示例:adb pull /sdcard/log.txt ~/Desktop/

# 从电脑推送文件到设备
adb push <电脑路径> <设备路径>  // 示例:adb push ~/test.mp4 /sdcard/

# 在设备端截图(需配合pull拉取到电脑)
adb shell screencap -p <路径>  // 示例:adb shell screencap -p /sdcard/screen.png 后执行 adb pull /sdcard/screen.png

# 录屏(按 Ctrl+C 停止,需pull拉取)
adb shell screenrecord <路径>   // 示例:adb shell screenrecord /sdcard/demo.mp4

 实战场景:发现一个闪退Bug,立即执行以下命令

# 1. 截图保存现场
adb shell screencap -p /sdcard/crash.png
adb pull /sdcard/crash.png ./

# 2. 保存日志(文件名带时间戳,避免覆盖)
adb logcat -v time > "D:\log%time:~0,2%%time:~3,2%%time:~6,2%.txt"  

# 3. 开始录屏准备复现(后台运行)
adb shell screenrecord /sdcard/bug.mp4 &

# ... 执行复现操作 ...

# 按Ctrl+C停止录屏后台进程,拉取录屏文件
adb pull /sdcard/bug.mp4 ./

# 如出现ANR,导出trace/anr文件
adb pull /data/anr d:\trace.txt
adb pull  /data/anr  d:\anr

类别四:系统操作与信息

# 查看/抓取系统日志(带时间戳输出到文件,避免覆盖)
adb logcat  // 示例:adb logcat -v time > log.txt
adb logcat -v time > "D:\log\sunnyfit%time:~0,2%%time:~3,2%%time:~6,2%.txt"

# 过滤特定TAG的日志(示例:只看MyApp的Debug以上日志)
adb logcat -s <TAG>  // adb logcat -s MyApp:D

# 清空日志(抓取前执行,避免干扰)
adb logcat -c

# 查看应用内存详情(性能测试必备)
adb shell dumpsys meminfo <包名>  

# 查看系统属性(示例:查看手机型号)
adb shell getprop  // eg:adb shell getprop ro.product.model

# 模拟按键(示例:电源键26、Home键3)
adb shell input keyevent <键值>  // eg:adb shell input keyevent 26 

# 模拟点击(示例:点击坐标 500,500)
adb shell input tap <x> <y> // eg:adb shell input tap 500 500

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

# CPU信息-监控系统负载
adb shell dumpsys cpuinfo  

# 获取设备WiFi IP
adb shell ifconfig | findstr "inet addr"

类别五:其它实用命令

# 设置全局代理(适用于Android系统无法进入wifi高级设置代理的场景)
adb shell settings put global http_proxy <IP>:端口号  

# 取消全局代理
adb shell settings put global http_proxy :0  

# 查询是否设置代理(未设置返回null或0)
adb shell settings get global http_proxy

三、实战进阶:构建你的效率工作流

场景一:快速问题排查组合(一键抓取所有证据)

adb bugreport > bugreport.zip &
adb logcat -v time > logcat.log &
adb shell screencap -p /sdcard/error.png
adb pull /sdcard/error.png ./
THE END
喜欢就支持一下吧
赞赏 分享