说到自定义数据采集插件,大家可能不是很了解它的组成以及功能,在这里简略进行介绍。
功能
它是一种数据采集的实现方式,通过它我们可以采集APP内任意的页面加载信息、用户行为操作等数据,便于我们分析用户的行为、优化APP的性能。
组成
自定义数据采集插件是由:AOP、Annotation、自定义Gradle插件三部分组成。通过它我们可以学习、了解相关的原理和技术。
工作原理
使用自定义注解实现数据采集的Annotation,通过AOP的Aspect把Annotation变成pointcut注入数据统计逻辑,最后打包成Gradle插件使用。
数据统计介绍
谈到数据统计,目前普遍有两种方式:一种是使用第三方SDK(例:友盟统计、小米统计、百度统计等),另一种是自定义统计插件。两者各有优缺点:前者优点是简单、方便、稳定,集成即可使用,不用做其他处理,缺点是过度依赖第三方平台,对数据的统计存在一定的限制,有些需求可能无法满足。后者优点是自定义,完全满足业务的需求(废话就是根据需求开发的),后续可以根据不同的需求进行调整,缺点是实现复杂,涉及的知识点多,并且自己需要做数据的采集、上传处理。
其中自定义数据采集目前比较先进的方案有两种,一种是《网易乐得无埋点数据收集SDK》模式,另一种是通过Annotation+AOP的方式实现。
两者原理比较类似:前者也是通过Annotation+AOP实现,只不过在Annotation步骤不是手动添加注解,而是通过ASM库操纵java字节码,从而添加Annotation埋点。后者则是在Annotation步骤手动添加埋点。
前者的优点是不用在代码中添加任何埋点痕迹,所有埋点均在字节码中处理,缺点是涉及字节码底层,逻辑复杂,还需要大量代码进行id的区分、Annotation的埋点设置、以及后续的维护。参考资料:Android AOP之字节码插桩 Android无埋点数据收集SDK关键技术
后者则是一个折中的办法,考虑到开发成本、人员精力、以及后续的业务变动,直接通过添加Annotation能够节省大量时间开发和维护。缺点是需要在代码中标注Annotation。
总结
好了,今天关于自定义数据采集的介绍就在这里。后面会逐步完善其三部曲:自定义Annotation、AOP、自定义Gradle插件系列文章,请持续关注。
网友评论