基于Android终端的用户数据采集的方法及系统与流程

文档序号:15462220发布日期:2018-09-18 18:26阅读:来源:国知局

技术特征:

1.一种基于Android终端的用户数据采集的方法,其特征在于,包括如下步骤:

在Android系统对APP编译阶段,采用动态代理java agent,与编译器进行交互,指示编译器通过修改目标class文件添加预定事件埋点并生成对应该事件的机器代码,进行用户数据采集。

2.根据权利要求1所述的基于Android终端的用户数据采集的方法,其特征在于,

当编译开始时,通过插件启动所述动态代理java agent。

3.根据权利要求2所述的基于Android终端的用户数据采集的方法,其特征在于,包括如下步骤:

在所述Android系统开始编译APP时,通过gradle插件启动动态代理java agent;

所述java agent修改目标class文件;

判断是否修改成功,若是,则编译成功,无埋点成功;若否,则编译成功,无埋点失败;

在埋点成功的情况下,基于被修改的目标class文件,进行用户数据采集。

4.根据权利要求3所述的基于Android终端的用户数据采集的方法,其特征在于,所述java agent修改目标class文件包括如下步骤:

创建InvocationHandler实例,

将所述InvocationHandler实例赋值给SecurityManager.class的packageAccessLock变量;

令ProcessBuilder类通过反射获取所述InvocationHandler的实例;

ProcessBuilder类执行start方法,启动dx.bat的进程;

ClassFileTransformer实现对com.android.dx.command.dexer.Main类的processClass方法进行修改;

将修改好的目标Class文件编译成dex文件。

5.根据权利要求4所述的基于Android终端的用户数据采集的方法,其特征在于,

通过ASM使ClassFileTransformer实现对com.android.dx.command.dexer.Main类的processClass方法进行修改。

6.一种基于Android终端的用户数据采集的系统,其特征在于,包括:

用于在Android系统对APP编译阶段,采用动态代理java agent,与编译器进行交互,指示编译器通过修改目标class文件添加预定事件埋点并生成对应该事件的机器代码,进行用户数据采集。

7.根据权利要求6所述的基于Android终端的用户数据采集的系统,其特征在于,

当编译开始时,通过插件启动所述动态代理java agent。

8.根据权利要求7所述的基于Android终端的用户数据采集的系统,其特征在于,包括:

启动单元,用于在所述Android系统开始编译APP时,通过gradle插件启动动态代理java agent;

修改单元,用于所述java agent修改目标class文件;

判断单元,用于判断是否修改成功,若是,则编译成功,无埋点成功;若否,则编译成功,无埋点失败;

采集单元,用于在埋点成功的情况下,基于被修改的目标class文件,进行用户数据采集。

9.根据权利要求8所述的基于Android终端的用户数据采集的系统,其特征在于,所述修改单元包括:

实例创建子单元,用于创建InvocationHandler实例;

赋值子单元,用于将所述InvocationHandler实例赋值给SecurityManager.class的packageAccessLock变量;

实例反射获取子单元,用于反射令ProcessBuilder类通过反射获取所述InvocationHandler的实例;

进程启动子单元,用于ProcessBuilder类执行start方法,启动dx.bat的进程;

修改子单元,用于使用ClassFileTransformer来实现对com.android.dx.command.dexer.Main类的processClass方法进行修改;

编辑子单元,用于将修改好的目标Class文件编译成dex文件。

10.根据权利要求9所述的基于Android终端的用户数据采集的系统,其特征在于,

所述修改子单元中,通过ASM使ClassFileTransformer实现对com.android.dx.command.dexer.Main类的processClass方法进行修改。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1