文档章节

Android日志分析工具的开发介绍

S
 Surface-pro
发布于 2017/08/15 19:31
字数 5537
阅读 211
收藏 0



Android日志分析工具的开发介绍

一,软件下载地址:

技术交流QQ群:513138238(用于公布软件最新版本信息和相关技术交流)

[V3.6.3] http://download.csdn.net/detail/u013662621/9945190
[V3.5.3] http://download.csdn.net/detail/u013662621/9880724
[V3.5.2] http://download.csdn.net/detail/u013662621/9854456
[V3.4.2] http://download.csdn.net/detail/u013662621/9834711
[V3.2.2] http://download.csdn.net/detail/u013662621/9826442
[V3.1.1] http://download.csdn.net/detail/u013662621/9823293
[V3.0.0] http://download.csdn.net/detail/u013662621/9821571

 

 

二,软件简介
Android常用开发工具Eclipse和Android Studio本身自带有日志查看工具LogCat,一般性使用基本满足要求。但若长期处于Android的深度开发,会发现自带的工具内容缓冲区有限,会造成历史数据的丢失,且无法进行信息过滤和日志头自动提取分类。为了解决这些问题,故而开发了此款软件,该软件不仅解决了上述问题,而且还支持对日志文件进行离线分析和导出备份,支持对日志内容的横向过滤和纵向过滤,且可通过ADB工具直连物理设备进行日志的监控和分析,无需依赖开发工具。另外,软件为完全自主开发,对后期若有新的功能需求可以很方便的进行功能扩展和维护。

欢迎反馈意见到964195140@qq.com

 

软件界面预览

 

三,软件设计框架概览

 

 

四,软件功能简介
1,左侧Filters为日志头过滤器栏,当载入日志文件时会自动识别;
2,日志内容会自动根据打印等级显示不同的颜色以区分;
3,可通过设置右上角的日志等级筛选出大于等于该等级的打印信息;
4,可通过中上方的搜索框搜索日志内容,搜索规则为:任意字符串,大小写不敏感;
5,可通过设置时间过滤器的起止时间来筛选出在该时间范围内的所有日志信息;
6,可通过设置信息过滤器的开关来选择是否显示对应的信息;
7,可通过工具栏中模式切换按钮在“离线查看模式”和“实时终端模式”之间切换;
8,可通过工具栏中ADB连接按钮,进行ADB设备的扫描、连接、断开等操作;
9,软件底部显示当前工作的状态,如:工作模式、ADB设备状态、当前打开的日志文件路径;
10,退出实时终端模式时可将日志缓存文件导出另存;
11,可在软件设置中配置外部ADB工具的路径;
12,对日志内容解析后,可提供:行号、时间、等级、PID进程号、Tag、文本信息;
13,在实时终端模式中,ADB设备断开或丢失后可自动重连3次,并自动恢复日志内容的显示,若3次重连失败则退出ADB环境;
14,可通过将鼠标移动到Tag列表栏的某一项上,预览该Tag的完整信息;
15,文件加载过程有进度条提示;
16,可通过菜单栏中最近打开的文件选项快速打开文件;
17,可通过快捷键“Ctrl+G”或者工具栏中的对应图标快速跳转到指定行;
18,支持保存软件的全局配置属性和重要数据到配置文件中,待软件下次启动时可恢复上一次的操作环境;若该文件不存在,则会自动生成配置文件;和导志内志信该软件;

19,支持软件配置文件的备份和导入;
20,支持快捷键Ctrl+C复制当前选中的日志内容;
21,支持进程过滤器,即仅显示与选中进程相关的日志信息;
22,支持在具有加密策略的电脑上使用该软件;支持软件配置文件的备份和导入;
23,优化实时终端模式下日志内容的刷新,新增文件光标定位器,并优化日志Tag提
提器,使得最终的日志内容刷新率高达50~100Hz,且刷新频率不再受文件大
小的影响,此机制的实现使得实时监控的连续时间可无限长;
24,新增日志Tag系统级过滤器,主要过滤输出数量占比较大且不具备很大分析价值
的内容,既可以让更有价值的内容快速呈现,也很大程度的节省了内存的占用;
25,新增日志内容搜索进度条的显示,提醒用户当前的搜索状态;
26,软件启动前新增重构并删除上一次软件异常闪退时未删除的日志缓存文件,并提
示用户在删除前是否另存为;
27,新增对大文件进行分页加载的机制,并设置有快速页跳转的功能(只有当首次遍
历过所有的页数据后,才可跳转任意页),该机制的实现使得离线分析不再受
文件大小的限制,同时也保证了软件运行时不会无节制的占用系统内存;
28,新增实时模式下监控的日志行数达到设定的最大值后自动清空全局数据库,避免
长时间的监控造成大量内存的占用;
29,新增实时终端模式下,ADB设备非人为断开或非人为退出终端模式时,自动备份
当前的日志缓存文件,后期再对这些备份文件进行分析重构,并还原为一个完
整的日志文件,且设有重构进度条的显示;
30,新增Tag日志头种类及其数量分析功能,并以图标的形式展现;

31,新增软件重启功能;
32,新增实时模式下清空当前显示的功能;
33,新增设置属性“是否启用调试指定APP”,输入eclipse或android studio中正在调试的APP包名,如“com.example.uidemo”,点击下载程序后,该工具可自动识别并跳转到该APP的进程,并显示相关日志信息;

34,新增安装APK到指定设备的功能;

35,支持对android studio自带日志工具导出的日志格式进行解析;
36,新增软件自动检查是否有更新版本发布,若有,则弹窗提示下载链接;
37,新增设置选项“是否启用软件安全机制”;

 

 

五,软件安全保护机制
为了防止软件被轻易的反编译和破解,于是在该软件中引入了注册码注册机制和软件加壳处理机制,仅对指定设备授权开源(未授权设备仍可以使用所有功能,只是无法查看部分软件信息而已),增大了反编译和破解的难度,一定程度上保护了软件的可维护性。

 

 

六,软件版本升级日志


【V1.0.0】:初始版  2017/2/6  何晓龙  964195140@qq.com;
支持Tag过滤;
支持打印等级过滤;
支持文本搜索;
支持根据打印等级以不同的颜色显示内容;
支持自动提取所有Tag种类以及其对应的数量;
支持文件的打开与关闭;
支持设置字体;

 

【V2.0.0】:升级版  2017/2/9  何晓龙  964195140@qq.com;
新增时间过滤器;
新增信息过滤器;
支持定位信息头的识别;
新增文件编码格式的设置;
新增当前文件重载功能;

 

【V3.0.0】:升级版  2017/3/17  何晓龙  964195140@qq.com;
新增“实时终端模式”,通过ADB连接Android设备,并支持ADB设备扫描、连接、断开、状态显示等功能,且可在“离线查看模式”和“实时终端模式”之间随意切换;
新增退出实时终端模式时可将日志缓存文件导出另存为的功能;
新增设置菜单中ADB路径设置的功能;
新增进程PID号的显示,并在信息过滤器中增加对PID的过滤开关;
新增实时终端模式下ADB设备连接断开或丢失后自动重连,并自动恢复实时显示日志内容的功能;
为日志Tag列表栏新增鼠标移动到Tag上时,自动弹出Tip提示,提示内容为该Tag的完整信息,以防止当Tag内容过长而无法完整显示;
升级ADB命令执行接口,之前为主线程(即UI线程)中阻塞式执行ADB命令,若命令执行时间较长,容易导致UI线程长时间无响应,严重地影响了用户体验;升级后为新建一个专门执行ADB命令的后台线程,使其与主线程互相独立运行,通过信号与槽的方式进行数据交换,如此便可以在不影响UI线程的前提下更好地执行ADB命令,提高了用户体验度;
新增日志文件加载进度条显示,以更好地提示用户当前的加载进度;
新增软件工具栏,将软件中常用的操作添加到工具栏中,并配备合理的图标和Tip提示信息,且工具栏可选择显示或隐藏,以及存放的位置(顶部、底部)等,此功能的增加提高了用户的操作性和软件使用的简易性;
重新设计“关于软件窗口”的布局方式,将软件功能简介和更新日志的详细信息默认隐藏,通过“查看细节”按钮显示详细信息;
软件菜单栏中新增最近打开文件的历史记录功能,可设置最大记录的文件数量,可通过历史菜单直接选择文件将其打开,无须每次都通过系统的文件管理器方式打开;
新增跳转到日志文件的指定行的功能,且设有快捷键“Ctrl+G”,可快速跳转到需要查看的行,并将其高亮显示;
新增退出软件确认对话框功能,防止用户误操作使软件直接退出,而导致分析数据的丢失;
新增软件全局配置文件的功能:可记录软件的属性设置、文件历史浏览记录、以及一些重要的数据到该文件中,待软件下次启动时可恢复上一次操作的环境;实现原理:定义配置文件的语法格式,创建能够对该文件进行识别、解析、读写的解析器,然后再主程序中通过该解析器来操作配置文件;
优化对日志数据内容的解析过程以及日志文件的加载,使解析效率提高了70%多;
优化日志内容显示功能,通过加入显示缓冲区的机制,每次仅加载显示缓冲区中的数据,大大提高了显示速度;
优化实时终端模式显示日志的方式,通过加入增量式解析的机制,每次仅解析新增的内容,不必重复解析之前已经解析过的内容,如此可将显示速度提升十倍以上,很好的达到了实时显示的效果;
优化ADB服务器启动功能,增加等待对话框,并新增3次自动重连功能,若3次连接失败,则退出ADB环境;
优化Tag列表栏的显示,对所有Tag进行按字母排序,以便用户快速查找需要查看的Tag;
优化自动调整标签栏位置的功能,使其自动调整更加智能且定位准确;
优化软件状态栏显示方式,使其更加直观舒适;
修复滚动日志内容到最低端后,仍可继续滚动的BUG;
修复日志内容显示区域滚动条有时往上滑动时无法滑动的BUG;
修改日志缓存文件的路径,并增加路径的安全性判断和自动建立的功能;
修复当退出实时终端模式时,ADB重连导致再次进入终端模式的BUG;
修复BUG,当快速重复点击“重载文件”按钮时导致多次加载同一文件。修改为仅当一个文件加载完毕后才可继续下一步操作;
修复BUG,当快速重复点击“连接ADB设备”按钮时导致多次重复执行扫描ADB设备的操作,以至于等待对话框无法正常关闭,而使软件进入假死状态。修改为仅当一次扫描完成后才可继续下一次扫描操作;
【注意】实时终端模式下,每次只能连续实时监控1小时,超过该时间后由于日志文件过大,导致解析时间比较长,无法达到实时显示的效果;但后台仍然在将日志内容输出到缓存文件,可等待执行完后再将该文件导出后进行离线分析即可;

 

【V3.1.1】:优化版  2017/4/21  何晓龙  964195140@qq.com
新增软件退出时自动删除缓存目录;
新增配置文件的备份和导入;
新增ADB连接状态指示灯显示;
新增进程过滤器,即只显示选中进程的相关日志信息;
更改软件配置文件存储路径为系统用户(即C盘中我的文档)的路径;
优化在线ADB设备信息显示,增加厂商、型号、系统版本号、SDK版本号等信息;
修复由于重复显示等待对话框却无法正常关闭,导致软件死机的BUG;
修复少数格式的PID进程号解析错误的BUG;

 

【V3.2.2】:优化版  2017/4/25  何晓龙  964195140@qq.com
更改日志缓存文件后缀名为“.log”,以便支持在具有加密策略的电脑上使用该软件,为了兼容旧版本,仍支持对txt格式的日志文件进行离线分析;
优化日志缓存文件另存为的功能,使用户确定退出终端模式后,立即停止日志输出;
优化Filter栏选项排序为大小写不敏感;
修复实时终端模式下Filter栏的项乱跳的BUG;
修复实时终端模式下滑动滚动条导致软件闪退的BUG;

 

 

【V3.4.2】:优化版  2017/5/5  何晓龙  964195140@qq.com
优化实时终端模式下日志内容刷新的代码:
*1)优化增量式文件加载器,新增文件光标位置定位器,每次加载时
直接跳转到上一次的位置;
*2)优化日志Tag提取器,将之前的每次计算所有Tag改为增量式计
算,即每次仅计算新增的内容,然后与之前的叠加即可;
*3)通过以上方式的优化后,实时模式下日志内容的刷新速度将不再
受文件大小的影响,且刷新时间基本在20ms以内,即显示刷新频率在
50Hz以上,真正意义上实现了日志内容实时刷新的功能;
新增日志Tag系统级过滤器,主要过滤掉输出数量占比较大且不具备很大分析价值的内容,既可以让更有价值的内容快速呈现,也很大程度的节省了内存的占用。该过滤器共分为一级过滤和二级过滤,一级过滤为完全不具备分析价值的内容,二级过滤为极少数情况可能会有一点分析价值;
新增日志内容搜索进度条显示,提醒用户当前的搜索状态,避免当搜索时间较长时给用户一种软件假死的现象;
软件启动前新增删除上一次软件异常闪退时未删除的日志缓存文件,并提示用户在删除前是否另存为;
新增对大文件进行分页加载的机制,可自动识别是否需要对文件进行分页,并设置有快速页跳转的功能;
*该机制的目的):使离线分析日志文件不再受文件大小的限制,同时保证了软件运行过程中不会无节制的占用系统内存;
*该机制的原理):每次加载当前页后才能确定下一页的光标偏移量,因此只有当第一次加载过所有页后,才可随意的进行页跳转,否则只能跳转下一页或前面的所有页;
新增实时模式下监控的日志行数达到设定的最大值后自动清空全局数据库,避免长时间的监控造成大量内存的占用(注意:此处清空仅为软件中数据清空,而实际缓存文件中的数据仍然是存在的);
新增实时终端模式下,ADB设备非人为断开或非人为退出终端模式时,自动备份当前的日志缓存文件,后期再对这些备份文件进行分析重构,还原为一个完整的日志文件,并对重构的过程设有进度条显示;
新增Tag日志头种类及其数量分析功能,并以图表的形式展现;
优化软件退出时若从未开启过ADB服务,则无需执行ADB服务的关闭;
修复有时软件退出后仍有等待对话框在显示的BUG;
修复无法输出系统进程system_process的部分日志信息的BUG;
修复文件加载进度条有时显示异常导致卡死,且无法关闭的BUG;
修复进行进程筛选后再执行系统过滤设置,在文件重载的过程中软件死机闪退的BUG;
修复行跳转到最后一行时偶尔造成软件死机闪退的BUG;



 

【V3.5.2】:优化版  2017/5/19  何晓龙  964195140@qq.com
新增软件重启功能;
新增实时模式下清空当前显示的功能;
新增设置属性“是否启用调试指定APP”,在输入框输入eclipse或android studio中正在调试的APP包名,如“com.example.uidemo”,点击下载程序后,该工具可自动识别并跳转到该APP的进程,并显示相关日志信息;
优化实时模式下切换打印等级后,重新显示所有信息(旧版为仅显示后面更新的信息);
优化进程筛选执行后仅显示该进程的信息(旧版为只要包含了该进程的都会显示);
优化日志缓存文件重构过程,禁止重构进度的人为关闭,防止用户关闭该进程后导致日志文件破损;
优化文件加载进度条最大值的设定方式,自动识别文件是否需要进行分页处理;
优化日志内容显示区域中单行被选中时的显示方式,改为前景色不变,背景色高亮;
修复部分设备采用Log.wtf()打印时实际输出为'F'标志,导致无法解析该内容的BUG,而实际其相当于'A'等级的日志,故新增对其的支持;
修复日志显示区域自定义的滚动条偶尔出现滚动紊乱的BUG;
修复特殊情况下软件配置文件备份失败的BUG;
修复ADB设备名中包含有'-'符号的设备无法连接的BUG;
修复等待对话框gif动画无法显示的BUG;

 

 

【V3.5.3】:优化版  2017/6/26  何晓龙  964195140@qq.com
新增安装APK到指定设备的功能;
优化软件中主线程阻塞延时等待的实现机制,避免有时报已有事件在运行的警告;
优化ADB设备名显示格式,以缩短其显示长度;
优化显示日志等级的控制机制,只有在启动软件时自动初始化为VERBOSE,其他任何情况都保持不变,除非手动改变;
修复列表显示中设置和获取指定行可能存在行无效或获取对象为null而导致软件死机闪退的BUG;
修复有时ADB设备连接断开后仍显示连接成功状态的BUG;
修复ADB状态检测定时器与日志文件检测定时器冲突导致ADB不断重连的BUG;
修复实时终端模式下ADB连接断开后无法自动重连的BUG;
修复软件重启选择是或否都会重启的BUG;
修复实时终端模式下长时间运行后内存占用逐渐增大导致内存泄漏而使软件异常闪退的BUG,通过优化代码以及主动释放频繁申请的内存来解决;
修复实时终端模式下变换软件窗口尺寸时偶尔出现软件异常闪退的BUG;
修复实时终端模式下updateFile()接口执行过程中出现异常后无法正常退出,并死循环在此处的BUG;



【V3.6.3】:优化版  2017/8/22  何晓龙  964195140@qq.com
支持对android studio自带日志工具导出的日志格式进行解析;
新增软件自动检查是否有更新版本发布,若有,则弹窗提示下载链接;
新增设置选项“是否启用软件安全机制”;
优化设置界面布局,合并字体设置和文件编码格式设置;
优化PID进程过滤器的显示,对PID号进行排序操作,便于快速定位;
优化软件设置功能,禁止在实时终端模式下设置编码格式和系统过滤;
优化时间过滤器控制逻辑;



© 著作权归作者所有

S
粉丝 2
博文 5
码字总数 7751
作品 1
珠海
程序员
私信 提问
Android开发—— 小工具,大效率

一、Hugo插件 —— 打印方法运行时间 首先申明下,此Hugo非 彼Hugo(Hugo是由Go语言实现的静态网站生成器)。 Hugo插件作用 : 能够计算并打印一个方法的输入参数和函数的运行时间 Hugo插件应...

SuShine
01/04
50
0
自动 Android* 应用测试

测试是应用开发流程中的重要环节。 对于 Android,这尤为重要,因为 Android 设备彼此之间差异很大,主要体现在以下几个方面: 屏幕尺寸和分辨率 Android 版本 外形 处理器的指令集 是否有前...

今幕明
2014/03/10
397
1
史上最全面 Android逆向培训之__Xposed使用

刚招来个Android,干了半个月辞职了,他走之后,成堆的bug被测了出来,都是这个新人代码都没看懂就开始改的一塌糊涂,还给提交了。 实在是让人头疼,清理了一个月多月才把他半个月写的bug清理...

Android逆向大神
07/18
0
0
开发人员必读,安卓开发工具知多少

安卓开发过程中需要用到各种工具,于是作为一名安卓开发人员,那么多工具,各种亚历山大啊,于是今天就给大家汇总了一下安卓开发工具,哪些是安卓开发中必须要用到。 1、Draw 9-Patch 这个九...

flyurt
2015/10/30
331
0
利用系统提供的崩溃日志解Native层Bug

对Android开发者来讲,尤其是使用NDK编写Native层代码的开发者,在编码过程中通常会碰到各种各样的问题。追踪问题的方式有很多,除了在代码中添加日志,来观察程序运行过程中产生的异常外,对...

shzwork
03/26
54
0

没有更多内容

加载失败,请刷新页面

加载更多

75、GridFS

GridFS是MongoDB提供的用于持久化存储文件的模块,CMS使用Mongo DB存储数据,使用FGridFS可以快速集成开发。 工作原理: 在GridFS存储文件是将文件分块存储,文件会按照256KB的大小分割成多个...

lianbang_W
今天
4
0
js bind 绑定this指向

本文转载于:专业的前端网站➱js bind 绑定this指向 1、示例代码 <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <title>bind函数绑定this指向......

前端老手
今天
4
0
CentOS Linux 7上将ISO映像文件写成可启动U盘

如今,电脑基本上都支持U盘启动,所以,可以将ISO文件写到U盘上,用来启动并安装操作系统。 我想将一个CentOS Linux 7的ISO映像文件写到U盘上,在CentOS Linux 7操作系统上,执行如下命令: ...

大别阿郎
今天
4
0
深入vue-公司分享ppt

组件注册 全局注册 注册组件,传入一个扩展过的构造器 Vue.component('my-component', Vue.extend({/*...*/})) 注册组件,传入一个选项对象(自动调用Vue.extend) Vue.component('my-comp...

莫西摩西
今天
5
0
gitlab重置管理员密码

登录gitlab服务器 [root@localhost bin]# sudo gitlab-rails console productionLoading production environment (Rails 5.2.3)irb(main):001:0> u = User.where(email: 'admin@example.co......

King华仔o0
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部