太阳城集团

  • / 10
  • 下载费用:30 金币  

基于GIT的ANDROID崩溃日志优化方法及系统.pdf

摘要
申请专利号:

CN201710013080.8

申请日:

2017.01.09

公开号:

CN106776231A

公开日:

2017.05.31

当前法律状态:

实审

有效性:

审中

法律详情: 实质审查的生效IPC(主分类):G06F 11/30申请日:20170109|||公开
IPC分类号: G06F11/30; G06F11/34 主分类号: G06F11/30
申请人: 武汉斗鱼网络科技有限公司
发明人: 丁鹏
地址: 430073 湖北省武汉市东湖开发区软件园东路1号软件产业4.1期B1栋11楼
优先权:
专利代理机构: 湖北武汉永嘉专利代理有限公司 42102 代理人: 许美红
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201710013080.8

授权太阳城集团号:

|||

法律状态太阳城集团日:

太阳城集团2017.06.23|||2017.05.31

法律状态类型:

太阳城集团实质审查的生效|||公开

摘要

本发明公开了一种基于Git的Android崩溃日志优化方法及系统,其中包括以下步骤:通过Android项目的自动化构建工具Gradle运行编译脚本;取当前编译的代码所在的目录;判断当前目录是否存在Git;若存在,则获取该Git的SHA值,该SHA值对应一个提交版本ID;判断SHA值是否为空,若否,则将SHA值转换成Android系统可识别的代码;当Android系统运行出现异常时,进行日志收集,并加入经过代码转换的SHA值;将收集的日志上传给服务器。本发明可快速定位出问题的代码是哪一次提交的,极大地减少了因为找不到出问题的版本而浪费的太阳城集团。

权利要求书

1.一种基于Git的Android崩溃日志优化方法,其特征在于,包括以下步骤:
通过Android项目的自动化构建工具Gradle运行编译脚本;
获取当前编译的代码所在的目录;
判断当前目录是否存在Git;
若存在,则获取该Git的SHA值,该SHA值对应一个提交版本ID;
判断SHA值是否为空,若否,则将SHA值转换成Android系统可识别的代码;
当Android系统运行出现异常时,进行日志收集,并加入经过代码转换的SHA值;
将收集的日志上传给服务器。
2.根据权利要求1所述的方法,其特征在于,若SHA值为空,则将SHA值变为预设值。
3.根据权利要求2所述的方法,其特征在于,所述预设值为-1。
4.根据权利要求1所述的方法,其特征在于,具体使用Android系统自带的异常捕获控
制器进行日志收集。
5.根据权利要求4所述的方法,其特征在于,若SHA值不为空,则将SHA值转换成Android
系统可识别的java代码。
6.一种基于Git的Android崩溃日志优化系统,其特征在于,包括:
编译脚本运行模块,用于通过Android项目的自动化构建工具Gradle运行编译脚本;
目录获取模块,用于获取当前编译的代码所在的目录;
Git判断模块,用于判断当前目录是否存在Git;
SHA值获取模块,用于在当前目录存在Git时,获取该Git的SHA值;
SHA值判断模块,用于判断SHA值是否为空;
代码转换模块,用于在SHA值不为空时,将SHA值转换成Android系统可识别的代码;
日志收集模块,用于当Android系统运行出现异常时,进行日志收集,并加入经过代码
转换的SHA值;
日志上传模块,用于将收集的日志上传给服务器。
7.根据权利要求6所述的系统,其特征在于,该系统还包括赋值模块,用于在SHA值为空
时,将SHA值变为预设值。
8.根据权利要求6所述的系统,其特征在于,该系统还包括赋值模块,用于在SHA值为空
时,将SHA值变为-1。
9.根据权利要求6所述的系统,其特征在于,所述日志收集模块具体使用Android系统
自带的异常捕获控制器进行日志收集。
10.根据权利要求9所述的系统,其特征在于,所述日志收集模块在SHA值不为空时,将
SHA值转换成Android系统可识别的java代码。

说明书

基于Git的Android崩溃日志优化方法及系统

技术领域

本发明涉及Android开发领域,尤其涉及一种基于Git的Android崩溃日志优化方
法及系统。

背景技术

在当前Android应用快速更新的时代,对于Android开发来说,在极短的太阳城集团里发
布很多次版本的应用给用户是平常的事情。但是如果用户反馈Android应用在使用时出现
崩溃的情况,而程序员发现在已经发出了很多版本才出现该问题,无法判断该问题是由哪
一个版本的代码提交引起的。此时如果要修改此错误就需要查看所有已经提交的版本。这
样查下去既浪费太阳城集团,又极大的降低了工作效率。如果有一种方案可以让程序员在查询问
题时可以快速定位到哪一次提交代码,那么对于定位问题的太阳城集团及修改问题所需要的太阳城集团
都将极大的节省。

发明内容

本发明要解决的技术问题在于针对现有技术中Android应用在使用时出现崩溃的
情况下,不容易找到是哪个版本出现问题的缺陷,提供一种可以快速定位到哪一次提交代
码出现问题的基于Git的Android崩溃日志优化方法及系统。

本发明解决其技术问题所采用的技术方案是:

提供一种基于Git的Android崩溃日志优化方法,包括以下步骤:

通过Android项目的自动化构建工具Gradle运行编译脚本;

获取当前编译的代码所在的目录;

判断当前目录是否存在Git;

若存在,则获取该Git的SHA值;

判断SHA值是否为空,若否,则将SHA值转换成Android系统可识别的代码;

当Android系统运行出现异常时,进行日志收集,并加入经过代码转换的SHA值;

将收集的日志上传给服务器。

本发明所述的方法中,若SHA值为空,则将SHA值变为预设值。

本发明所述的方法中,所述预设值为-1。

本发明所述的方法中,具体使用Android系统自带的异常捕获控制器进行日志收
集。

本发明所述的方法中,若SHA值不为空,则将SHA值转换成Android系统可识别的
java代码。

本发明还提供了一种基于Git的Android崩溃日志优化系统,包括:

编译脚本运行模块,用于通过Android项目的自动化构建工具Gradle运行编译脚
本;

目录获取模块,用于获取当前编译的代码所在的目录;

Git判断模块,用于判断当前目录是否存在Git;

SHA值获取模块,用于在当前目录存在Git时,获取该Git的SHA值;

SHA值判断模块,用于判断SHA值是否为空;

代码转换模块,用于在SHA值不为空时,将SHA值转换成Android系统可识别的代
码;

日志收集模块,用于当Android系统运行出现异常时,进行日志收集,并加入经过
代码转换的SHA值;

日志上传模块,用于将收集的日志上传给服务器。

本发明所述的系统中,该系统还包括赋值模块,用于在SHA值为空时,将SHA值变为
预设值。

本发明所述的系统中,该系统还包括赋值模块,用于在SHA值为空时,将SHA值变
为-1。

本发明所述的系统中,所述日志收集模块具体使用Android系统自带的异常捕获
控制器进行日志收集。

本发明所述的系统中,所述日志收集模块在SHA值不为空时,将SHA值转换成
Android系统可识别的java代码。

本发明产生的有益效果是:本发明使用Git工具来实现快速定位出问题的代码是
哪一次提交的,极大地减少了因为找不到出问题的版本而导致过多的太阳城集团放在问题的查找
上面。同时可以优化出现崩溃时日志返回的太阳城集团,提高程序员查找及修改问题的效率,节省
问题查找修改太阳城集团。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1是本发明实施例基于Git的Android崩溃日志优化方法的流程图;

图2是本发明另一实施例基于Git的Android崩溃日志优化方法的流程图;

图3是本发明实施例基于Git的Android崩溃日志优化系统的结构示意图;

图4是本发明另一实施例基于Git的Android崩溃日志优化系统的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对
本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不
用于限定本发明。

对本发明涉及的名词进行解释:

GIT:分布式版本控制系统。是一款免费、开源的分布式版本控制系统,用于敏捷高
效地处理任何或小或大的项目。

SHA:安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital
Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm
DSA)。在Git中,每个commit ID的太阳城集团就是一个SHA Hash值,它是对那个commit是Git仓库
中内容和头太阳城集团(Header)的一个校验和(checksum)。

GRADLE:一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使
用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配
置。

在Android开发中,越来越多会用到Gradle来作为Android项目的自动化建构工
具。其好处是可以自定义构建过程中的参数。本发明中就是需要在使用Gradle进行编译时
将git版本参数加入。并在返回日志时,将本参数加到返回日志中,方便程序员快速定位问
题所在提交日志。

本发明中,首先会在编译文件时,从编译文件中获取当前编译文件的Git的SHA值。
该值使用git命令获取。由于编译Android代码时,可以获取到Android代码的具体位置,而
Git的版本太阳城集团只要是知道具体的代码文件位置就可以获取,因此只需要获取当前需要编
译的代码文件所在,获取方法使用当前编译的系统自带的git命令工具来实现。

本发明的一个实施例中,如图1所示,基于Git的Android崩溃日志优化方法包括以
下步骤:

S1、通过Android项目的自动化构建工具Gradle运行编译脚本;

S2、获取当前编译的代码所在的目录;

S3、判断当前目录是否存在Git;

S4、若存在,则获取该Git的SHA值;

S5、判断SHA值是否为空,若否,则转至S6;

S6、将SHA值转换成Android系统可识别的代码;

S7、当Android系统运行出现异常时,进行日志收集,并加入经过代码转换的SHA
值;

S8、将收集的日志上传给服务器。

本发明的一个实施例中,若SHA值为空,则将SHA值变为预设值。该预设值可设为-
1。若SHA值不为空,则将SHA值转换成Android系统可识别的java代码。

进行日志收集时,具体可使用Android系统自带的异常捕获控制器进行日志收集,
如具体使用UncaughtExceptionHandler这个类来实现。

本发明另一个较佳实施例中,如图2所示,具体得到Git的SHA流程图如图2所示:

1.开始编译脚本

在本发明中,gradle开始运行脚本编译的Android代码,该编译脚本使用的是
Android官方推荐的gradle来进行编写,本发明中不做过多阐述。

2.获取到当前编译所在的目录

由于需要获取到当前编译的android代码的git太阳城集团,因此首先需要取得当前编译
的Android代码所在的代码文件目录,由于在android开发中,约定的gradle脚本就在
Android代码所在目录的上级,因此只需要获取当前目录下即可。

3.判断当前目录是否存在git

由于某些项目在开发过程中没有使用git工具,因此需要在取得git的SHA值之前
要检测当前项目是否使用git,检测方法是根据使用在android所在目录中执行命令“git
log”来得到返回字符串,并根据返回的字符串来判断当前项目是否使用git。

执行命令使用如下代码来是实现,该命令同样也是在gradle脚本文件中,并在执
行编译时运行:

def isusegit='git log'.execute([],project.rootDir).text.trim()

当在没有使用git工具的项目中执行上述命令时,系统会返回如下字符串:

fatal:Not a git repository(or any of the parent directories):.git

该字符串代表本目录没有使用git,而使用过git的则返回的是每次提交的日志,
因此可以通过返回字符串的特征值来判断是否使用了git,在本发明中该特征值为“fatal:
Not a git”也就是没有使用git返回的字符串的前面一段,如果返回的字符串的包含该字
符串,则断定为项目没有使用git,反之则使用了。

4.获取git的SHA值

如果判断成功则会开始获取git的SHA值,如果判断不存在git,则返回空。

在gradle的编译脚本中加入如下代码来获取git的SHA值:

def gitSha='git rev-parse--short HEAD'.execute([],project.rootDir)
.text.trim()//获取当前编译项目的SHA值

当gralde编译时会运行上述代码,并得到当前正在编译中的代码所在git的SHA
值,拿到这个值后,我们需要将该值在编译时传递给Android代码中去。

5.判断SHA是否为空

这里需要判断该获取的SHA值是否为空,这里为空有两种可能。第一,该项目没有
使用git,因此在获取时返回的空;第二,该项目在获取git的SHA时获取不到SHA的值,因此
返回为空。

当SHA的值为空时,在gradle的脚本中将该值置为-1,如果不为空,并准备将其变
为Android可识别的java代码。

6.将SHA变为Android可以识别的java代码

将SHA变为Android可识别的java代码就是在gradle的编译脚本中加上编译配置
文件的一个字段,该字段通过设置字段的属性,数值后可在编译过程中可以生产java代码,
由于Android代码可以直接调用java代码,因此Android在编译时可以直接使用该编译过程
中生产的java代码来获取git中的SHA值。

在gradle编译脚本中加入如下语句来实现上述操作:

buildConfigField"String","GIT_SHA","\"${gitSha}\""

该语句中,将之前获取的git的SHA数值在编译过程中变成GIT_SHA=”gitsha”这
种形式的java语句,其中的gitsha则替换为之前已经得到的git的SHA数值。变成这样后,将
在Android代码编译过程中,将可以直接把该值作为参数来使用。

在gradle进行编译时,会将设置的该参数进行编译,变成成一个Android可识别的
Java文件,名为:BuildConfig。在该文件中会有脚本中设定的buildConfigField这个属性。
本发明中该属性的类型为String,名字为GIT_SHA,值则是获取到的git的SHA值。

7.Android可识别该值

Android代码中如果需要使用该值,只需要在Android代码中使用
BuildConfig.GIT_SHA则可以得到该参数。

8.上报日志中加入获取的SHA的值

此时git的SHA值在Android代码中已经获取到了,本发明中需要在程序出现错误
的时候同时将该数值与错误太阳城集团一并上报给服务器,这里就需要对Android工程的异常问
题进行一些处理,使得可以上传git的SHA数值。

本发明中使用Android自带的异常捕获控制器来处理该操作,具体使用
UncaughtExceptionHandler这个类来实现,该类是Android自带的异常捕获工具,

如果程序出现了未捕获异常默认情况下则会出现强行关闭对话框实现该接口并
注册为程序中的默认未捕获异常处理这样当未捕获异常发生时,就可以做些异常处理操作
例如:收集异常太阳城集团,发送错误报告等。在代码中使用该类后将可以自定义返回的错误信
息,增加开发人员查找问题,解决问题的效率。使用该类后,将会在应用出现问题的时候首
先收集应用的错误太阳城集团,然后将之前得到的git的SHA值一并通过该类返回给应用的日志收
集服务器,服务器在接收到错误太阳城集团后将交由开发人员处理,开发人员拿到该SHA值后,通
过git reset sha的命令将代码回滚到出问题的地方,可以方便的判断出问题出现在哪一
次提交的代码,具体服务器接收错误后的操作不在本专利说明中,故在此不做过多陈述。

本发明实施例基于Git的Android崩溃日志优化系统,如图3所示,包括:

编译脚本运行模块,用于通过Android项目的自动化构建工具Gradle运行编译脚
本;

目录获取模块,用于获取当前编译的代码所在的目录;

Git判断模块,用于判断当前目录是否存在Git;

SHA值获取模块,用于在当前目录存在Git时,获取该Git的SHA值;

SHA值判断模块,用于判断SHA值是否为空;

代码转换模块,用于在SHA值不为空时,将SHA值转换成Android系统可识别的代
码;

日志收集模块,用于当Android系统运行出现异常时,进行日志收集,并加入经过
代码转换的SHA值;

日志上传模块,用于将收集的日志上传给服务器。

进一步地,如图4所示,该系统还包括赋值模块,用于在SHA值为空时,将SHA值变为
预设值。

该系统还包括赋值模块,用于在SHA值为空时,将SHA值变为-1。

日志收集模块具体使用Android系统自带的异常捕获控制器进行日志收集。

日志收集模块在SHA值不为空时,将SHA值转换成Android系统可识别的java代码。

应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,
而所有这些改进和变换都应属于本发明所附权利要求的保护范围。

关 键 词:
基于 GIT ANDROID 崩溃 日志 优化 方法 系统
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
太阳城集团本文
本文标题:基于GIT的ANDROID崩溃日志优化方法及系统.pdf
链接地址:http://zh228.com/p-6019510.html
太阳城集团我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
葡京赌场|welcome document.write ('');