提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
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安装运行的位置。
- 解压Android SDK2. 进入到系统环境变量配置页面
- 添加环境变量ANDROID_HOME,变量值SDK所在路径:D:\software\android-sdk-windows-appium
- 进入Path里面,追加三行配置:%ANDROID_HOME%\platform-tools,%ANDROID_HOME%\tools,%ANDROID_HOME%\build-tools\28.0.33.
- 再在命令行窗口输入adb version验证
2.adb help
1.adb help(adb 帮助手册,可以查看命令的-a,-d等的含义,版本号等)
3.adb devices
adb devices(查看连接到pc端的安卓设备-夜神模拟器)
4.adb shell
adb shell(进入shell模式)
5.adb pull
adb pull <拉取手机路径> <本机路径>(把设备中的截图放到本机上)
6.adb push
adb push <本机路径> <手机路径>(本机图片都放置设备cdcard文件的图片文件当中)
7.adb install
adb install D:\APK\包.apk(安装apk应用),返回success即为安装成功
8.adb uninstall
adb uninstall 包名(卸载apk应用),返回success即为卸载成功
9.adb shell dumpsys activity | find “mFocusedActivity”
adb shell dumpsys activity | find “mFocusedActivity”(查询前台应用的包名,使用安卓版本为7.0以下的版本),Android7.0版本以上需要用adb shell dumpsys activity | find "mResumedActivity"来查询前台应用的包名
9.adb kill-server与adb start-server
终止adb服务/启动服务
10.adb shell am start -n 包名/启动入口
启动应用(启动app)
12.adb shell pm clear 包名
清除数据缓存
13.adb shell input tap X Y
点击坐标(x,y)点的应用,例如(807,508)取整数即可
14.adb logcat
adb logcat …(查询日志分析)
例:adb logcat -b [main] > D:\log\log_main.txt
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来显示这些文件生成的时间来判断先后。