一种移动端无码埋点解决方法技术

技术编号:24707717 阅读:21 留言:0更新日期:2020-06-30 23:56
本发明专利技术公开了一种移动端无码埋点解决方法。它具体包括如下步骤:在安卓系统app端接入信息上报模块;通过编译期无码插桩技术对app中所有函数的进入和退出插入代码片段,并为每个函数生成不一样的标识符用于区分;在服务器端配置需要上报的唯一埋点标识符,在app启动时获取服务器需要上报埋点标识符,保存到本地文件A中;app程序运行时,每个函数在进入和退出时,会先运行插桩的代码块,根据判断是否和本地文件A中需要上报的埋点标识符相符合,如果符合则上报到服务器端;服务器端分析是否函数运行异常。本发明专利技术的有益效果是:帮助开发者实现无码埋点,在代码编译期就自动实现埋入上报代码,协助开发者统计数据查找问题。

【技术实现步骤摘要】
一种移动端无码埋点解决方法
本专利技术涉及APP应用程序处理相关
,尤其是指一种移动端无码埋点解决方法。
技术介绍
在智能手机高速发展的今天,安卓手机机型和系统的多样性,同一个App在市场中需要面临各种手机机型的挑战。手机程序在运行中出现异常数据也时有发生。为了帮助开发者快速定位问题,在程序运行中埋点也成了追踪问题的方式之一。埋点:为了记录程序的执行动作或结果数据而做的统计。现有的AndroidApp开发埋点需要开发者在开发过程中,手动在一些程序函数中加入统计代码,上报给服务器端。一旦服务器端想要统计新的埋点数据,就不得不通过发布新的app版本来实现,且app的版本迭代需要较长的周期,无法满足快速实统计数据验证程序问题的需求。
技术实现思路
本专利技术是为了克服现有技术中存在上述的不足,提供了一种自动实现埋入上报的移动端无码埋点解决方法。为了实现上述目的,本专利技术采用以下技术方案:一种移动端无码埋点解决方法,具体包括如下步骤:(1)在安卓系统app端接入信息上报模块;(2)通过编译期无码插桩技术对app中所有函数的进入和退出插入代码片段,并为每个函数生成不一样的标识符用于区分;(3)在服务器端配置需要上报的唯一埋点标识符,在app启动时获取服务器需要上报埋点标识符,保存到本地文件A中;(4)app程序运行时,每个函数在进入和退出时,会先运行插桩的代码块,根据判断是否和本地文件A中需要上报的埋点标识符相符合,如果符合则整合函数标识符和函数的参数或者返回结果,上报到服务器端;(5)服务器端根据app端上报的数据,分析是否函数运行异常。其中:无码指的是不需要开发者在开发过程手动编写代码。插桩指的是在保证程序原有逻辑完整性的基础上,在程序中插入一些代码片段。本方法解决的问题就是帮助开发者实现无码埋点,在代码编译期就自动实现埋入上报代码,帮助开发者让App能够根据服务器配置快速开始统计app程序动作或结果数据,协助开发者统计数据查找问题。作为优选,在步骤(1)中,具体操作方法为:新建日志类LogReportUtil.java,添加静态函数reportLog用于将采集到的程序运行信息发送给服务器。作为优选,在步骤(2)中,具体操作方法为:通对Gradle编译期Transform任务的Hook,在transform中创建ClassVisitor,即可对所有类文件进行编译期字节码无码插桩,利用对ClassVisitor中的onMethodEnter和onMethodExit的自定义处理,成功的对App工程所有函数的进入和退出分别插入代码片段,标识符组成方式:包路径+类名+方法名+参数。作为优选,在步骤(3)中,具体操作方法为:在服务器端配置需要统计的函数标识符,在App启动时,通过向服务器发送请求,获取需要上报的函数标识符列表,保存到LogReportUtil类中的configs变量中,这样在调用到LogReportUtil.reportLog方法时,则会根据是否存在configs中来处理是否需要发送给服务器。作为优选,在步骤(4)中,具体操作方法为:程序运行时,每个函数在进入或退出时,会先运行插桩的代码LogReportUtil.reportLog,当符合服务器配置时,此时则会向服务器发送程序运行数据,通过该方式,让客户端只采集服务器配置的程序数据,根据需要对上报数据进行方便的调整。作为优选,在步骤(5)中,具体操作方法为:服务器在收到客户端发送的程序运行数据时,会将数据写入到服务器文件中,通过分析服务器文件每个函数的日志次数,分析程序每个功能的运行频率,如果程序运行发生异常,通过匹配服务器文件中每个方法是否包含进入和退出数据,定位出只有进入但是没有退出的异常函数,然后再对日志中该函数的输入参数分析,更方便的找出程序异常原因。本专利技术的有益效果是:帮助开发者实现无码埋点,在代码编译期就自动实现埋入上报代码,帮助开发者让App能够根据服务器配置快速开始统计app程序动作或结果数据,协助开发者统计数据查找问题。具体实施方式下面结合具体实施方式对本专利技术做进一步的描述。一种移动端无码埋点解决方法,具体包括如下步骤:(1)在安卓系统app端接入信息上报模块;具体操作方法为:新建日志类LogReportUtil.java,添加静态函数reportLog用于将采集到的程序运行信息发送给服务器。(2)通过编译期无码插桩技术对app中所有函数的进入和退出插入代码片段,并为每个函数生成不一样的标识符用于区分;具体操作方法为:通对Gradle编译期Transform任务的Hook,在transform中创建ClassVisitor,即可对所有类文件进行编译期字节码无码插桩,利用对ClassVisitor中的onMethodEnter和onMethodExit的自定义处理,成功的对App工程所有函数的进入和退出分别插入代码片段LogReportUtil.reportLog(true,methosMsg,paramMsg)和LogReportUtil.reportLog(false,methosMsg,paramMsg),其中methodMsg为用于区分函数的标识符,paramMsg为函数进入时传入的参数或返回时的result;标识符组成方式:包路径+类名+方法名+参数。(如:com/test/TestClass.testMethod$[Ljava/lang/String;]V和com/test/TestClass.testMethod$[Ljava/lang/String;]V分别作为类TestClass中函数testMethod的函数标识符,这样在程序运行进入和退出函数时,便会往文件methodlog.txt中写入信息entry:com/test/TestClass.testMethod$[Ljava/lang/String;]V:paramMsg和exit:com/test/TestClass.testMethod$[Ljava/lang/String;]V:paramMsg)。(3)在服务器端配置需要上报的唯一埋点标识符,在app启动时获取服务器需要上报埋点标识符,保存到本地文件A中;具体操作方法为:在服务器端配置需要统计的函数标识符(如:com/test/TestClass.testMethod$[Ljava/lang/String;]V),在App启动时,通过向服务器发送请求,获取需要上报的函数标识符列表,保存到LogReportUtil类中的configs变量中,这样在调用到LogReportUtil.reportLog方法时,则会根据是否存在configs中(即是否服务器配置需要监控)来处理是否需要发送给服务器。(4)app程序运行时,每个函数在进入和退出时,会先运行插桩的代码块,根据判断是否和本地文件A中需要上报的埋点标识符相符合,如果符合则整合函数标识符和函数的参数或者返回本文档来自技高网...

【技术保护点】
1.一种移动端无码埋点解决方法,其特征是,具体包括如下步骤:/n(1)在安卓系统app端接入信息上报模块;/n(2)通过编译期无码插桩技术对app中所有函数的进入和退出插入代码片段,并为每个函数生成不一样的标识符用于区分;/n(3)在服务器端配置需要上报的唯一埋点标识符,在app启动时获取服务器需要上报埋点标识符,保存到本地文件A中;/n(4)app程序运行时,每个函数在进入和退出时,会先运行插桩的代码块,根据判断是否和本地文件A中需要上报的埋点标识符相符合,如果符合则整合函数标识符和函数的参数或者返回结果,上报到服务器端;/n(5)服务器端根据app端上报的数据,分析是否函数运行异常。/n

【技术特征摘要】
1.一种移动端无码埋点解决方法,其特征是,具体包括如下步骤:
(1)在安卓系统app端接入信息上报模块;
(2)通过编译期无码插桩技术对app中所有函数的进入和退出插入代码片段,并为每个函数生成不一样的标识符用于区分;
(3)在服务器端配置需要上报的唯一埋点标识符,在app启动时获取服务器需要上报埋点标识符,保存到本地文件A中;
(4)app程序运行时,每个函数在进入和退出时,会先运行插桩的代码块,根据判断是否和本地文件A中需要上报的埋点标识符相符合,如果符合则整合函数标识符和函数的参数或者返回结果,上报到服务器端;
(5)服务器端根据app端上报的数据,分析是否函数运行异常。


2.根据权利要求1所述的一种移动端无码埋点解决方法,其特征是,在步骤(1)中,具体操作方法为:新建日志类LogReportUtil.java,添加静态函数reportLog用于将采集到的程序运行信息发送给服务器。


3.根据权利要求2所述的一种移动端无码埋点解决方法,其特征是,在步骤(2)中,具体操作方法为:通对Gradle编译期Transform任务的Hook,在transform中创建ClassVisitor,即可对所有类文件进行编译期字节码无码插桩,利用对ClassVisitor中的onMethodEnter和onMethodExit的自定义处理,成功的对App工程所有函数的进入和退...

【专利技术属性】
技术研发人员:吴钟侑顾湘余韩晟
申请(专利权)人:杭州趣维科技有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1