APP(二)adb 日志分析
- 掌握常见adb命令
- 了解 Android 系统日志文件
- 示例分析ANR & crash 日志
APP性能测试工具:
- 移动全平台性能测试:PerfDog性能狗
- soloPi
1、ADT、SDK、ADB?
- ADT (Android development tools) --- Android 开发工具。 在 Eclipse 上调用各种与 android 有关的插件,便要ADT
- SDK (software development kit) ---- 软件开发部件。要用到各种 android 平台,好比 android2.3 等,便要有SDK
- ADB (Android debug bridge) 是用来连接 安卓手机 和 PC端 的桥梁,通过 adb服务,在PC端命令行界面对手机或者模拟器进行全面的操作。
adb (Android Debug Bridge ) 是 android sdk (software developmentkit) 的一个工具
adb 是用来连接 安卓手机 和 PC端 的桥梁,要有 adb 作为二者之间的维系,才能让用户在电脑上对手机进行全面的操作。
Android 的初衷是用 adb 这样的一个工具来协助开发人员在开发 android 应用的过程中更快更好的调试 apk,因此 adb 具有 安装 卸载app、拷贝推送文件、查看设备硬件信息、查看应用程序占用资源、在设备执行 shell 命令等功能。
adb 组件
客户端
- 该组件发送命令,客户端在开发计算机上运行,可以通过发出 adb 命令从命令行终端调用客户端。
后台程序
- 该组件在设备上运行命令,后台程序在每个模拟器或设备实例上作为后台进程运行。
服务器
- 该组件管理 客户端 和 后台程序 之间的通信,服务器 在开发计算机上作为后台进程运行。
如何连接手机:https://www.cnblogs.com/yyoba/p/12401481.html
2、adb常见命令
adb --help
-
- 查看帮助手册
adb devices
-
- 检测连接到电脑的安卓设备,这个是我们会经常用到的检测命令。
adb connect/disconnect ip:端口号 通过wif进行远程连接手机进行调试,手机和电脑在连接同一个路由器5555
adb shell
-
- 登录设备 shell (命令行的人机界面),II Is命令都可以用,进入到 linux 命令环境了,相当于执行远程命令
adb pull <手机文件路径> <本机路径>
-
- (铺欧)从手机中拉取信息放到本地电脑上,ll相当于开门
adb push <本机文件路径> <手机路径>
-
- (朴实)从本地推送信息到手机上去
adb install xxxx.apk(安装包的路径,直接拖安装包)
-
- 为了获取 apk 的安装包所在地址,可以直接把 apk 拖到 cmd 的窗口获取,返回 success 就说明安装成功了
adb install -r xxxx.apk:(卸载应用时需要保留数据和缓存文件,与下面蓝色命令一起使用)
-
- 保留数据和缓存文件,重新安装APK
adb uninstall com.tencent.mobileqq(应用包名)
-
- 卸载应用
adb uninstall -k com.tencent.mobileqq(应用包名)
-
- 卸载应用,但保留数据和缓存文件
adb shell dumpsys activity | find "mFocusedActivity"
-
- 查看前台应用包名
adb 服务相关命令:
adb kill-server
-
- 终止adb服务
adb start-server
-
- 启动 adb 服务,通常在 adb 出现问题时,结合 kill server 命令一起使用
adb shell pm list packages
-
- 列出所有包名
- 命令最后加上 -f 列出所有 apk 路径及包名
- 命令最后加上 -s 列出系统 apk 路径及包名
- 命令最后加上 -3 列出用户 apk 路径以及包名
adb shell am start -n App包名/App启动入口
-
- 启动App
- App包名:adb shell dumpsys activity | find "mFocusedActivity"
- 获取入口:输入 cmd ,进入命令行窗口,输入命令:aapt dump badging apk安装包路径
- 启动App
adb shell pm clear 包名
-
- 清除应用的数据和缓存
adb shell input tap x轴坐标 y轴坐标
- 坐标点击
打印日志命令:
adb logcat
-
- 查看实时日志信息
adb logcat -v time
-
- 存在时间信息的日志信息
adb logcat -v time > 存放在本地那个文件的路径地址
-
- 把日志文件放在本地
- 示例:adb logcat -v time > D:\app_日志目录\logcat.txt
获取到日志后在日志文件中搜索:Error 日志文件中Error表示报错提示
3、logcat日志文件
- android 日志系统提供 了记录和查看系统调试信息的功能,日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过logcat命令来查看和使用
- 使用方式:
- [adb] logcat [<option>]... [<fiter-spec>].
- logcat是以如下开头的:
- 1. ------- beginning of xox
- 开发者选项,有个选项叫做” 日志记录器缓冲区大小”,默认是256K,日志是循环写入环形缓冲区的。在通常情况下,写满时最旧的日志会被删除以给新输出的日志留内存空间一真机设置,模拟器一般没有
4、logcat日志文件分析
输出的日志格式如下所示:
由五部分组成:
-
- 1.写下日志时的时间,如上中01-11 09:39:35.209
-
- 2.优先级,在Android中, 日志的优先级从低到高分以下几种:
- V- -Verbose (嘜嗦,最低级别,开发调试中的一些详细信息,仅在开发中使用,不可在发布产品中输出)
- D-Debug (调试,用于调试的信息,可以在发布产品中关闭,比较常见)
- I- -Info (信息,一般提示性的消息)
- W-Warning (警告)
- E- Error (爱若儿)(错误,已经出现可影响运行的错误,比如应用crash时输出的日志)
- 2.优先级,在Android中, 日志的优先级从低到高分以下几种:
-
- 3.标签(tag),标明日志发起者和方便日志的过滤筛选,如上中ActivityManager. 类和模块。
-
- 4. PID (进程ID),如上中491
-
- 5.正文,本日志的主体内容
5、发生crash如何分析---产生运行崩溃的报错
发生 crash,adb logcat 获取日志分析:
-
- 1、搜索 exception 关键字,根据时间,包名定位
- 2、搜索fatal 、caused by关键字
实际操作步骤:
1、当软件产生运行停止报错信息
-
- 马上执行
- adb logcat -v time > d:\app_日志目录\crash.txt
- 等待十秒
- 按Ctrl + C 结束截取日志
- 在本地查看 crash.txt 截取到的日志文件
搜索 exception 关键字、时间,包名定位
搜索fatal /caused by fatal:致命的 caused by:原因
6、何为ANR===应用无响应的报错?
ANR全名 Application Not Responding,也就是应用无响应当操作在一段时间内系统无法处理时
ANR对话框
-
- 为用户在主线程长时间被阻塞时提供处理交互, 提高用户体验
-
- Android 系统一 种自身检测机制
6.1发生 ANR 如何分析==应用没有响应
系统在发生ANR时,会通过三种方式记录信息:
-
- Logcat日志
- Trace文件
- DropBox服务
ANR分析-01
通过 Logcat 日志进行分析:
日志格式
-
- ActivityManager: ANR in [进程名]([部件名])
- ActivityManager: PID:[应用进程ID]
- ActivityManager: Reason:[原因提示]
- [Process CPU state]
ps:通过搜索 anr 关键字,若无具体 java 报错信息,继续另一种方法获取日志
ANR分析-02
通过 Trace(译:锤死)文件进行分析: /data/anr/
Dump stack trace信息
Dump的进程包括:当前应用进程,父进程,主进程,persistent进程, 以及CPU占用率排在前几位的(最多5个)进程
ps:只能记录最后-次发生的anr的信息
示例操作步骤:
前提:当软件产生ANR报错信息后:通过 trace 文件进行分析
- 进入手机adb shell
- 进入cd /data/anr
- 详细信息ll
- 按Ctrl + C 退出
- 拉取文件到本地
- adb pull /data/anr/traces.txt d:\app_日志目录\
- 把整个文件给开发
ANR分析-03
Dropbox:(译:这儿巴格斯)服务方法分析
data/anr/traces.txt 文件里面只能保留最后一次发生ANR时的traces信息
-
- 通过 dropbox 可以收集系统一段时间内的异常信息 (包括ANR、crash)
- /data/system/dropbox是dropbox指定的文件存放位置
示例操作步骤:
前提:当软件产生ANR报错信息,通过服务方法分析
- 进入手机
- adb shell
- 进入
- cd /data/anr
- 详细信息
- ll 显示最新的报错
- 进入服务: cd /data/system
- 查看详细信息ll
- 进入(cd /data/system/dropbox):cd dropbox
- 查看详细信息:ll 查看是否有anr和crash关键字
- 按Ctrl + C 退出
- 拉取文件到本地目录下(logs):
- adb pull /data/system/dropbox d:\app_日志目录\logs
- 把整个文件给开发
实例操作:
1、连接到真机
使用USB数据线,手机处于开发者模式
检测是否连接到电脑:adb duvices
-
- (如果检测不到可以使用默认端号:5555,IP是手机IP地址,同一个WiFi
- :adb connect 127.0.0.1:5555使用这个链接手机)
查看安装包位置:
adb devices 检测连接到电脑的安卓设备,
可能检测不到,需要进行一下操作
adb connect 127.0.0.1:62001 手动连接 手机端口号是5555
adb disconnect 127.0.0.1:62001 手动断开
2、链接成功后,登录到安卓设备
命令:adb shell
ls 显示根目录下的所有文件
ll 显示所有文件的属性
cd data 进入data目录
ll 显示data目录下的所有文件
再次输入cd data 可以查看应用程序的包名
退出登录状态:Ctrl + C
必须要根目录才可拉取文件
7、安装/卸载软件:
安装软件命令:
-
- adb install 安装包的路径(直接拖安装包)
卸载软件:
-
- 在模拟器打开应用后,获取当前打开应用的包名,然后卸载
- adb shell dumpsys activity | find "mFocusedActivity" :获取前台正在运行的应用包名
- 在模拟器打开应用后,获取当前打开应用的包名,然后卸载
- 下图:com.xxzb.fenwoo 及 页面的应用名(每个页面都有一个)
- adb uninstall 应用包名 :卸载程序
- adb uninstall com.xxzb.fenwoo
*******请大家尊重原创,如要转载,请注明出处:转载自:https://www.cnblogs.com/shouhu/,谢谢!!*******