测试常见的adb命令

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

adb命令的使用是移动端测试必备的技能,所以在这里简单介绍下几个常见的命令


一、常见的关于adb问题

1.最常出现的问题就是这个“adb不是内部或外部命令,也不是可运行的程序或批处理文件”,80%通常是环境配置的问题。

在这里插入图片描述
解决办法:
第一种办法是删除之前的adb,重新下载adb的压缩包解压。最后cmd中再次输入adb version查看adb是否已经安装配置成功。

第二种办法是因为下载好了Andriod SDK,其中是自带adb命令,出现如上情况,可直接将 Android SDK的绝对路径放到环境变量中path中去(保证以后不移动位置即可),kill-server和start-server后再次输入adb version查看adb是否已经安装配置成功

2.windows下自己下载的adb版本与夜神模拟器提示版本不匹配。
解决办法:
<1>. 将 Android SDK里面的adb复制,进入到夜神模拟器的安装目录–>bin
<2>.替换夜神里面的adb.exe,还需要把nox_adb.exe也需要替换
<3>.输入adb devices命令检测

二、常见的adb命令

1.adb部署

adb version展示了当前安装的adb版本号以及adb安装运行的位置。
adb version

  1. 解压Android SDK2. 进入到系统环境变量配置页面
  2. 添加环境变量ANDROID_HOME,变量值SDK所在路径:D:\software\android-sdk-windows-appium
  3. 进入Path里面,追加三行配置:%ANDROID_HOME%\platform-tools,%ANDROID_HOME%\tools,%ANDROID_HOME%\build-tools\28.0.33.
  4. 再在命令行窗口输入adb version验证

2.adb help

1.adb help(adb 帮助手册,可以查看命令的-a,-d等的含义,版本号等)
adb help

3.adb devices

adb devices(查看连接到pc端的安卓设备-夜神模拟器)
adb devices

4.adb shell

adb shell(进入shell模式)
adb shell

5.adb pull

adb pull <拉取手机路径> <本机路径>(把设备中的截图放到本机上)
adb pull

6.adb push

adb push <本机路径> <手机路径>(本机图片都放置设备cdcard文件的图片文件当中)
adb push

7.adb install

adb install D:\APK\包.apk(安装apk应用),返回success即为安装成功
adb pull

8.adb uninstall

adb uninstall 包名(卸载apk应用),返回success即为卸载成功
adb uninstall

9.adb shell dumpsys activity | find “mFocusedActivity”

adb shell dumpsys activity | find “mFocusedActivity”(查询前台应用的包名,使用安卓版本为7.0以下的版本),Android7.0版本以上需要用adb shell dumpsys activity | find "mResumedActivity"来查询前台应用的包名
start

9.adb kill-server与adb start-server

终止adb服务/启动服务
kill and start

10.adb shell am start -n 包名/启动入口

启动应用(启动app)start

12.adb shell pm clear 包名

清除数据缓存
clear

13.adb shell input tap X Y

点击坐标(x,y)点的应用,例如(807,508)取整数即可
click

14.adb logcat

adb logcat …(查询日志分析)
例:adb logcat -b [main] > D:\log\log_main.txt
logcat
logcat缓冲区:因为每时每刻android输出的日志量非常大,所以会把输出的log内容输出到不同的缓冲区中。
·Radio:输出通信系统的log(硬件模块:wifi,4G,3G,NFC,蓝牙等)
·System:输出系统组件的log(权限高,运行于后台的)
·Events:输出event模块的log(事件模块:触摸事件,点击事件等)
·Main:所有java层的log(不属于上三层的log)
输出的模块语句模型:adb logcat -v radio/system/events/main,查看对应的日志

logcat分析:
例:
04-02 14:15:26.797 1751 1751 I vold : Vold 3.0 (the awakening) firing up
04-02 14:15:26.797 1751 1751 V vold : Detected support for: exfat ext4 iso9660 ntfs vfat

1.日志时间:
2.优先级:
* V-verbose(最低级别,开发调试的一些详细信息,线上版本的话建议关掉,其中有性能上的问题)
* D-debug(调试,调试信息,在发布产品中建议关闭)
* I-info(信息,一般提示性信息)
* W-warning(警告信息,优先级高)
* E-error(重点!错误信息,可能出现了影响运行的错误信息,比如在应用crash时输出的日志)
3.标签(tag):标明日志的发起者和方便日志的过滤筛选,开发自己定义的
4.PID(进程ID):系统分配的进程号
5.正文:日志的主体内容

(常见的线上版本重点问题)Crash和ANR
Crash:崩溃问题→一般提示框内容“很抱歉,某某应用已定制运行”等相似内容
一般步骤:
1.既然出现崩溃,那么就已经产生了相应的日志,使用adb的命令去抓取日志,adb logcat -v time > D:\log\logcat_crash.txt打印至指定位置.
2.使用Notepad++,查找关键词“Crash”或者“FATAL EXCEPTION”,个人比较倾向后者,使用起来最为保险,他表示出现了严重的错误,开头信息便是Fatal excetion
3.从这个Fatal excetion往下的E(error)级别的信息便是出现问题的日志。提交给开发就可以了。若实在是找不到问题所在,把日志直接提交给开发,求助并解决问题。
输出:Crash问题一般会提交一个文件:logcat_xx.txt

ANR:Application Not Responding,无响应操作在一段时间内无处理时弹出ANR的对话框。
一般步骤:
1.与Crash类似,在Notepad++搜索时搜索“ANR in”
2.内容:应用包名,PID,load,cpu(使用率)等
3.因为开发人员需要找到方法的调用栈,所以还需在文件中找到“Wrote stack traces to ‘data/anr/traces.txt’”,一般在关键词ANR in 的上方。
4.在windows中的docs下cd到该文件处,使用cat traces.txt可以查看该文件,但是会有获取不全的问题,所以一般使用adb pull /data/anr/traces.txt D:\log拉取出来放置指定位置再进行操作。两个文件显式的时间会不一样,因为系统写入时间,存在几秒的误差导致两文件时间不同步,为确保日志是有效的,误差时间一般只有几秒的误差是可接受的。
输出:ANR问题一般会提交两个文件:logcat/traces.txt,一般我们个人的手机没有root权限,无法进入到系统当中去,所以直接使用adb pull把想要的日志文件直接拉取出来就可以了,无需root权限。

在工作当中发现了如果出现多次的ANR事件,日志只会保留最近的ANR日志(使用dropbox目录,所有的crash,anr信息可以全部的获取,但是手机厂商会对原生系统进行修改,可能不会有dropbox这个目录存在)
解决办法:
1.adb shell进入shell模式cd data目录下面
2.cd system→cd dropbox目录当中
3.ls查看目录下面的发生anr,crash问题的文件(1)SYSTEM-BOOT(2)data-anr-anr(3)data-app-crash这几种文件,关键词有“app”的是安装的应用所返回的问题记录的信息。
4.回到docs,把这些文件拉取出来(adb pull),若要在提bug时记录这些日志产生的先后时间,可以在dropbox下使用ls -l来显示这些文件生成的时间来判断先后。

### 常用 ADB 命令列表及使用说明 以下是一些常用的 ADB 命令及其详细说明,涵盖了设备管理、文件操作、应用管理等多个方面: #### 1. 查询已连接设备 用于列出所有已连接的设备。 ```bash adb devices ``` 该命令会返回设备的序列号以及其状态(如 `device` 表示正常连接,`offline` 表示设备无响应)[^4]。 #### 2. 获取设备状态 检查当前设备的状态。 ```bash adb get-state ``` 返回值可能是 `device`(正常连接)、`offline`(连接异常)或 `unknown`(未连接)[^4]。 #### 3. 获取 ADB 版本信息 查看当前安装的 ADB 工具版本。 ```bash adb version ``` 此命令有助于确认是否需要更新 ADB 工具[^4]。 #### 4. 安装与卸载 APK 安装一个 APK 文件到设备上。 ```bash adb install path/to/app.apk ``` 卸载指定的应用程序。 ```bash adb uninstall com.example.app ``` 注意:路径和包名中不能包含中文字符[^4]。 #### 5. 启动与关闭 ADB 服务 启动 ADB 服务。 ```bash adb start-server ``` 停止 ADB 服务。 ```bash adb kill-server ``` 这些命令在调试过程中可能需要频繁使用。 #### 6. 文件复制 将文件从本地复制到设备。 ```bash adb push local/path remote/path ``` 将文件从设备复制到本地。 ```bash adb pull remote/path local/path ``` 确保路径正确且具有适当的权限[^4]。 #### 7. 列出设备上的应用 列出所有已安装的应用程序。 ```bash adb shell pm list packages ``` 仅列出系统应用。 ```bash adb shell pm list packages -s ``` 仅列出第三方应用。 ```bash adb shell pm list packages -3 ``` 列出应用及其来源信息。 ```bash adb shell pm list packages -i ``` 列出应用包名及其路径。 ```bash adb shell pm list packages -f ``` 这些命令可以帮助开发者快速定位目标应用[^2]。 #### 8. 查看日志 获取设备的日志信息。 ```bash adb logcat ``` 过滤特定应用的日志。 ```bash adb logcat | grep "com.example.app" ``` 限制日志级别为 `Error`。 ```bash adb logcat *:E ``` 这些命令对于调试应用问题非常有用。 #### 9. 屏幕录制与截图 录制设备屏幕。 ```bash adb shell screenrecord /sdcard/demo.mp4 ``` 截图并保存到设备。 ```bash adb shell screencap /sdcard/screenshot.png ``` 将截图拉取到本地。 ```bash adb pull /sdcard/screenshot.png local/path ``` 这些功能可以用来记录用户行为或生成测试数据[^1]。 #### 10. 模拟输入 发送按键事件。 ```bash adb shell input keyevent KEYCODE_ENTER ``` 发送文本输入。 ```bash adb shell input text "Hello World" ``` 模拟触摸屏点击。 ```bash adb shell input tap x y ``` 这些命令可用于自动化测试场景。 #### 11. 获取当前页面信息 生成当前页面的 XML 文件。 ```bash adb shell uiautomator dump /sdcard/ui.xml ``` 拉取 XML 文件到本地。 ```bash adb pull /sdcard/ui.xml local/path ``` 打印页面的 Log 信息。 ```bash adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp' ``` 这些命令对于 UI 自动化测试非常重要[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值