第1章 全埋点概述 1
1.1 Android View类型 3
1.2 View绑定listener方式 7
第2章 $AppViewScreen全埋点方案 10
2.1 关键技术Application.Activity LifecycleCallbacks 10
2.2 原理概述 11
2.3 案例 12
2.4 完善方案 24
2.5 扩展采集能力 30
第3章 $AppStart、$AppEnd全埋点方案 33
3.1 原理概述 34
3.2 案例 35
3.3 缺点 46
第4章 $AppCliek全埋点方案1:代理View.OnClickListener 47
4.1 关键技术 47
4.2 原理概述 48
4.3 案例 49
4.4 引入DecorView 62
4.5 引入ViewTreeObserver.OnGlobalLayoutListener 64
4.6 扩展采集能力 67
4.7 缺点 91
第5章 $AppClick全埋点方案2:代理Window.Callback 92
5.1 关键技术 92
5.2 原理概述 93
5.3 案例 93
5.4 扩展采集能力 101
5.5 缺点 111
第6章 $AppClick全埋点方案3:代理View.AccessibilityDelegate 112
6.1 关键技术 112
6.1.1 Accessibility 112
6.1.2 View.AccessibilityDelegate 113
6.2 原理概述 114
6.3 案例 114
6.4 扩展采集能力 122
6.5 缺点 129
第7章 $AppClick全埋点方案4:透明层 130
7.1 原理概述 130
7.1.1 View onTouchEvent 130
7.1.2 原理概述 130
7.2 案例 131
7.3 扩展采集能力 139
7.4 缺点 145
第8章 $AppClick全埋点方案5:AspectJ 146
8.1 关键技术 146
8.1.1 AOP 146
8.1.2 AspectJ 148
8.1.3 AspectJ注解 148
8.1.4 切点表达式 151
8.1.5 JoinPoint 153
8.1.6 call 与 execution 区别 155
8.1.7 AspectJ使用方法 157
8.1.8 通过Gradle配置使用AspectJ 157
8.1.9 自定义Gradle Plugin 162
8.1.1 0发布Gradle插件 165
8.1.1 1使用Gradle Plugin 167
8.1.1 2 Plugin Project 168
8.2 原理概述 171
8.3 案例 171
8.4 完善方案 193
8.5 扩展采集能力 196
8.6 缺点 202
第9章 $AppClick全埋点方案6:ASM 203
9.1 关键技术 203
9.1.1 Gradle Transform 203
9.1.2 Gradle Transform实例 207
9.1.3 ASM 213
9.2 原理概述 220
9.3 案例 220
9.4 完善 240
9.5 扩展采集能力 241
9.6 缺点 250
第10章 $AppClick全埋点方案7:Javassist 251
10.1 关键技术 251
10.1.1 Javassist 251
10.1.2 Javassist基础 251
10.2 原理概述 255
10.3 案例 255
10.4 扩展采集能力 272
第11章 $AppClick全埋点方案8:AST 280
11.1 关键技术 280
11.1.1 APT 280
11.1.2 Element 280
11.1.3 APT实例 282
11.1.4 javapoet 293
11.1.5 AST 295
11.2 原理概述 295
11.3 案例 295
11.4 完善方案 306
11.5 扩展采集能力 308
11.6 缺点 317