APP测试中常用的ADB命令和日志获取及分析

关于ADT\SDK\ADB

1.ADT(Android development tools)

Android开发工具,使用它在eclipse上调用各种与Android有关的插件。

2.SDK(software development kit)

软件开发部件。提供各种软件开发所用到的方法。

3.ADB(Android debug bridge)

是用来连接安卓手机和PC端的桥梁,通过adb服务,在PC端命令行界面对手机或者模拟器进行全面的操作。

  • ADB常见命令
  1. 连接设备

为了实现通过PC端命令行对手机或模拟器进行操作,需要先连接设备,连接的方式如下。

设备类型

连接方式

具体步骤

模拟器

命令连接

  1. 打开本地电脑cmd命令提示符界面;
  2. 输入命令:adb connect 设备IP:端口号;(夜神模拟器的设备IP为127.0.0.1,默认端口号为62001)
  3. 输入命令:adb devices,查看设备列表中是否有刚添加的设备;

真机

数据线

  1. 用数据线将PC与设备连接起来;
  2. 设备弹出“是否同意调试”界面,点击同意;
  3. 自动连接成功,可输入命令adb devices确认是否连接上;

命令连接(设备与PC在同一局域网下)

  1. 将设备与PC连接到同一个wifi;
  2. 用数据线连接设备和电脑;
  3. 运行命令:adb devices测试是否连接成功,能出现设备列表即可;
  4. 运行命令:adb tcpip 5555,然后断开数据线连接;
  5. 找到设备的IP地址;
  6. 运行命令:adb connect 设备IP,若出现connected to 设备IP:5555,说明连接成功;
  7. 输入adb devices检查是否连接成功;

2.其他命令

Adb 命令

说明

Adb –-help

查看帮助手册;

Adb devices

检测连接到电脑的安卓设备,这是经常会用到的检测命令;

Adb connect/disconnect ip:端口号

通过wifi进行远程连接手机进行调试,手机和电脑连接同一路由器;

Adb shell

登录设备shell,进入命令行人机界面(退出用ctrl+c)可以通过ll ls等linux命令查看设备目录文件等;

Adb pull <手机文件路径> <本机路径>

从手机中拉取信息放到本地电脑上,例:

Adb pull /data/log.txt D:\works

Adb push <本机文件路径> <手机路径>

从本地推送信息到手机上去,例:

Adb push D:\works\monkey.txt /data

Adb install xxx.apk(安装包地址)

在设备上安装应用,为获取apk的安装包所在地址,可以直接把apk拖到cmd的窗口获取;

Adb uninstall 应用包名

查询包名的方法(先把待查应用打开至前台运行):

  1. 针对安卓7.0及以下版本:

Adb shell dumpsys activity | find “mFocusedActivity”

  1. 针对安卓8.0以上:

Adb shell dumpsys activity | find “mResumedActivity”

以Com开头,到斜杠前面的部分为止即为包名,

Com.Tencent.mm即为微信包名;

  1. Adb logcat
  2. Adb logcat -v time (> d:\logcat.txt)
  1. 查看日志文件(实时呈现,退出用ctrl+c);
  2. 查看(打印)带有时间戳的日志文件(实时呈现,退出用ctrl+c);
  3. 关于logcat日志文件:

Android日志系统提供了记录和查看系统调试信息的功能,日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过logcat命令来查看和使用;但缓冲区大小有限,在通常情况下,写满时最旧的日志会被删除以给新输出的日志留出空间(真机设置,模拟器一般没有),因此将来的测试工作当中,出现类似崩溃,无响应等不容易重现的bug时,要赶紧打印出日志

  • Logcat日志文件分析
  1. 日志格式

输出的日志格式由五部分组成:

项目

说明

时间

写下日志的时间;

优先级

在Android中,日志的优先级从低到高分以下几种:

V——verbose(最低级别,开发调试中的一些详细信息,仅在开发中使用,不可在发布产品中输出)

D——debug(调试,用于调试的信息,可以在发布产品中关闭,比较常见)

I——info(信息,一般提示性信息)

W——warning(警告,设备中弹出警告窗口时,一般日志中会写入)

E——error(错误,已经出现可影响运行的错误,比如应用crash时输出的日志)

标签

Tag,标明日志发起者,方便日志的过滤筛选;

PID

进程PID;

正文

本日志的主体内容。

2.安卓设备-有用日志获取

在测试工作过程中,常常会出现像应用的闪退,crash,无响应(anr)等比较严重,但又无法重现的bug,此时就需要调出日志提供给开发来进行bug 的修改。日志文件篇幅很长,啰嗦的部分较多,怎么精确的定位出描述bug的部分并提取出来?

方法如下:

Bug类型

日志提取方法

Crash

  1. 发生crash后,立即输入命令adb logcat -v time > (要打印的地址);
  2. 等待十秒钟左右,在运行ctrl+c(输入完上面的打印命令后立即停止的话有可能导致内容不完整,待日志生成完之后在停止);

  1. 用notepad++打开,搜索exception关键字(此关键字适用于所有应用程序的定位),根据时间和包名以及优先级(E)定位;

*不要用包名来定位,因为正常操作也会写入包名信息;

  1. 查找fatal/caused by关键字(此类bug一般会有这些字符描述);

  1. 搜索force finish;

*另,java应用前提下,日志正文内容为缩进at格式时,表示的就是报错,并且会告知java程序的哪一行有错误;

  1. 通过上述关键字锁定到的优先级为E的所有日志,就是crash相关的报错日志(从fatal exception 到 force finishing),单独新建文档贴进去,上传到bug提交单中,发给开发。

ANR-通过提取logcat日志提交bug

  1. 发生anr后,立即输入命令adb logcat -v time > (要打印的地址);
  2. 等待十秒钟左右,在运行ctrl+c(输入完上面的打印命令后立即停止的话有可能导致内容不完整,待日志生成完之后在停止);

  1. 用notepad++打开,搜索ANR,直接定位到报错开始的行;

  1. 从含有关键字ANR的行开始往下优先级为E的日志都是关于ANR的报错内容,是我们要的部分。

*ANR的情况下,logcat日志正文中只会写出一些系统内存、cpu占用量等信息,并没有详细到代码层,所以对开发修改bug没有太大帮助,此方法得到的日志文件并不太适合上传到bug提交单中。

ANR-通过提取trace文件提交bug

除logcat方法外,还可以提取trace文件,trace文件位于/data/anr/中(ps:只能记录最后一次发生的anr的信息)。

  1. 输入命令:adb pull /data/anr/traces.txt (要保存的地址),将该文件拉取到本地;

  1. 把该文件直接附到bug提交单上,交给开发。

*因trace文件只记录最后一次发生的anr信息,所以只适合出现一次anr的情况;像跑monkey程序跑一晚上的情况,可能会出现多次anr,届时该方法并不适用。

ANR-通过dropbox服务提交bug

Dropbox(有些设备可能没有该服务)可以收集系统一段时间内的异常信息(包括anr、crash),所以跑一晚上monkey的情况下出现的异常报错,可以参考该目录下的文件;这些文件都位于/data/system/dropbox目录下。

  1. 输入命令:adb pull /data/system/dropbox (要保存的地址),将需要的文件拉取到本地;

  1. 将文件名为crash、anr的文件直接附到bug提交单上,提供给开发。

*dropbox虽然能保存一段时间的报错文件,但也不是所有的都能保存,也就能保存个差不多一周的。

3.苹果设备-有用日志获取

  1. 当PC为mac OS时:

使用其内部自带的xcode工具。

  1. 当PC为Windows时:

使用itools中的工具箱,点击崩溃日志,即可获取。

  • 6
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值