Android全埋点解决方案 - (EPUB全文下载)
文件大小:0.45 mb。
文件格式:epub 格式。
书籍内容:
Android全埋点解决方案
第1章 全埋点概述
1.1 Android View类型
1.2 View绑定listener方式
第2章 $AppViewScreen全埋点方案
2.1 关键技术Application.ActivityLifecycleCallbacks
2.2 原理概述
2.3 案例
2.4 完善方案
2.5 扩展采集能力
第3章 $AppStart、$AppEnd全埋点方案
3.1 原理概述
3.2 案例
3.3 缺点
第4章 $AppClick全埋点方案1:代理View.OnClickListener
4.1 关键技术
4.2 原理概述
4.3 案例
4.4 引入DecorView
4.5 引入ViewTreeObserver.OnGlobalLayoutListener
4.6 扩展采集能力
4.7 缺点
第5章 $AppClick全埋点方案2:代理Window.Callback
5.2 原理概述
5.3 案例
5.4 扩展采集能力
5.5 缺点
第6章 $AppClick全埋点方案3:代理View.AccessibilityDelegate
6.1.2 View.AccessibilityDelegate
6.2 原理概述
6.3 案例
6.4 扩展采集能力
6.5 缺点
第7章 $AppClick全埋点方案4:透明层
7.1 原理概述
7.1.2 原理概述
7.2 案例
7.3 扩展采集能力
7.4 缺点
第8章 $AppClick全埋点方案5:AspectJ
8.1.2 AspectJ
8.1.3 AspectJ注解
8.1.4 切点表达式
8.1.5 JoinPoint
8.1.6 call与execution区别
8.1.7 AspectJ使用方法
8.1.8 通过Gradle配置使用AspectJ
8.1.9 自定义Gradle Plugin
8.1.10 发布Gradle插件
8.1.11 使用Gradle Plugin
8.1.12 Plugin Project
8.2 原理概述
8.3 案例
8.4 完善方案
8.5 扩展采集能力
8.6 缺点
第9章 $AppClick全埋点方案6:ASM
9.1 关键技术
9.1.2 Gradle Transform实例
9.1.3 ASM
9.2 原理概述
9.3 案例
9.4 完善
9.5 扩展采集能力
9.6 缺点
第10章 $AppClick全埋点方案7:Javassist
10.1.2 Javassist基础
10.2 原理概述
10.3 案例
10.4 扩展采集能力
第11章 $AppClick全埋点方案8:AST
11.1.2 Element
11.1.3 APT实例
11.1.4 javapoet
11.1.5 AST
11.2 原理概述
11.3 案例
11.4 完善方案
11.5 扩展采集能力
11.6 缺点
第1章 全埋点概述
全埋点,也叫无埋点、无码埋点、无痕埋点、自动埋点。全埋点是指无须Android应用程序开发工程师写代码或者只写少量的代码,就能预先自动收集用户的所有行为数据,然后就可以根据实际的业务分析需求从中筛选出所需行为数据并进行分析。
全埋点采集的事件目前主要包括以下四种(事件名称前面的$符号,是指该事件是预置事件,与之对应的是自定义事件)。
·$AppStart事件
是指应用程序启动,同时包括冷启动和热启动场景。热启动也就是指应用程序从后台恢复的情况。
·$AppEnd事件
是指应用程序退出,包括应用程序的正常退出、按Home键进入后台、应用程序被强杀、应用程序崩溃等场景。
·$AppViewScreen事件
是指应用程序页面浏览,对于Android应用程序来说,就是指切换Activity或Fragment。
·$AppClick事件
是指应用程序控件点击,也即View被点击,比如点击Button、ListView等。
在采集的这四种事件当中,最重要并且采集难度最大的是$AppClick事件。所以,全埋点的解决方案基本上也都是围绕着如何采集$AppClick事件来进行的。
对于$AppClick事件的全埋点整体解决思路,归根结底,就是要自动找到那个被点击的控件处理逻辑(后文统称原处理逻辑),然后再利用一定的技术原理,对原处理逻辑进行“拦截”,或者在原处理逻辑的执行前面或执行者后面“插入”相应的埋点代码逻辑,从而达到自动埋点的效果。
至于如何做到自动“拦截”控件的原处理逻辑,一般都是参考Android系统的事件处理机制来进行的。关于Android系统的事件处理机制,本书由于篇幅有限,不再详述。
至于如何做到自动“插入”埋点代码逻辑,基本上都是参考编译器对Java代码的整体处理流程来进行的,即:
JavaCode --> .java --> .class --> .dex
选择在不同的处理阶段“插入”埋点代码,所采用的技术或者原理也不尽相同,所以全埋点的解决方案也是多种多样的。
面对这么多的全埋点方案,我们究竟该如何做选择呢?
在选择全埋点的解决方案时,我们需要从效率、兼容性、扩展性等方面进行综合考虑。
·效率
全埋点的基本原理,如上所述,其实就是利用某些技术对某些方法(控件被点击时的处理逻辑)进行拦截(或者叫代理)或者“插入”相关埋点代码。比如按钮Button,如果要给它设置点击处理逻辑,需要设置android.view.View.OnClickListener,并重写它的onClick(android.view.View)方法。如果要实现$AppClick事件的全埋点,我们就可以“拦截”onClick(android.view.View)方法,或者在onClick(android.view.View)方法的前面或者后面“插入”相应的埋点逻辑代码。按照“在什么时候去代理或者插入代码”这个条件来区分的话,$AppClick事件的全埋点技术可以大致分为如下两种方式。
·静态代理
所谓静态代理,就是 ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » Android全埋点解决方案 - (EPUB全文下载)