內(nèi)容簡(jiǎn)介
這是一本實(shí)戰(zhàn)為導(dǎo)向的、翔實(shí)的Android全埋點(diǎn)技術(shù)與解決方案手冊(cè),是國(guó)內(nèi)知名大數(shù)據(jù)公司神策數(shù)據(jù)在該領(lǐng)域多年實(shí)踐經(jīng)驗(yàn)的總結(jié)。由神策數(shù)據(jù)合肥研發(fā)中心負(fù)責(zé)人親自執(zhí)筆,他在Android領(lǐng)域有近10年研發(fā)經(jīng)驗(yàn),開(kāi)發(fā)和維護(hù)著知名的商用開(kāi)源 Android & iOS 數(shù)據(jù)埋點(diǎn)SDK。
本書(shū)詳細(xì)闡述了 Android 全埋點(diǎn)的8種解決方案,涵蓋各種場(chǎng)景,從0到1詳解技術(shù)原理和實(shí)現(xiàn)步驟,并且提供完整的源代碼,各級(jí)研發(fā)工程師均可借此實(shí)現(xiàn)全埋點(diǎn)數(shù)據(jù)采集,為市場(chǎng)解開(kāi)全埋點(diǎn)的神秘面紗。
8種Android全埋點(diǎn)解決方案包括:
$AppClick 全埋點(diǎn)方案1:代理 View.OnClickListener、
$AppClick 全埋點(diǎn)方案2:代理 Window.Callback
$AppClick 全埋點(diǎn)方案3:代理 View.AccessibilityDelegate
$AppClick 全埋點(diǎn)方案4:透明層
$AppClick 全埋點(diǎn)方案5:AspectJ
$AppClick 全埋點(diǎn)方案6:ASM
$AppClick 全埋點(diǎn)方案7:Javassist
$AppClick 全埋點(diǎn)方案8::AST
推薦序
前言
第1章 全埋點(diǎn)概述1
1.1 Android View 類(lèi)型3
1.2 View 綁定listener 方式7
第2章 $AppViewScreen全埋點(diǎn)方案10
2.1 關(guān)鍵技術(shù)Application.Activity LifecycleCallbacks10
2.2原理概述11
2.3 案例12
2.4 完善方案24
2.5 擴(kuò)展采集能力30
第3章 $AppStart、$AppEnd全埋點(diǎn)方案33
3.1 原理概述34
3.2 案例35
3.3 缺點(diǎn)46
第4章 $AppClick全埋點(diǎn)方案1:代理View.OnClickListener47
4.1 關(guān)鍵技術(shù)47
4.2 原理概述48
4.3 案例49
4.4 引入DecorView62
4.5 引入ViewTreeObserver.OnGlobalLayoutListener64
4.6 擴(kuò)展采集能力67
4.7 缺點(diǎn)91
第5章 $AppClick 全埋點(diǎn)方案2:代理Window.Callback92
5.1 關(guān)鍵技術(shù)92
5.2 原理概述93
5.3 案例93
5.4 擴(kuò)展采集能力101
5.5 缺點(diǎn)111
第6章 $AppClick 全埋點(diǎn)方案3:代理View.AccessibilityDelegate112
6.1 關(guān)鍵技術(shù)112
6.1.1 Accessibility112
6.1.2 View.AccessibilityDelegate113
6.2 原理概述114
6.3 案例114
6.4 擴(kuò)展采集能力122
6.5 缺點(diǎn)129
第7章 $AppClick全埋點(diǎn)方案4:透明層130
7.1 原理概述130
7.1.1 View onTouchEvent130
7.1.2 原理概述130
7.2 案例131
7.3 擴(kuò)展采集能力139
7.4 缺點(diǎn)145
第8章 $AppClick全埋點(diǎn)方案5:AspectJ146
8.1 關(guān)鍵技術(shù)146
8.1.1 AOP146
8.1.2 AspectJ148
8.1.3 AspectJ 注解148
8.1.4 切點(diǎn)表達(dá)式151
8.1.5 JoinPoint153
8.1.6 call與execution區(qū)別155
8.1.7 AspectJ 使用方法157
8.1.8 通過(guò)Gradle 配置使用 AspectJ157
8.1.9 自定義Gradle Plugin162
8.1.10 發(fā)布 Gradle 插件165
8.1.11 使用 Gradle Plugin167
8.1.12 Plugin Project168
8.2 原理概述171
8.3 案例171
8.4 完善方案193
8.5 擴(kuò)展采集能力196
8.6 缺點(diǎn)202
第9章 $AppClick全埋點(diǎn)方案6:ASM203
9.1 關(guān)鍵技術(shù)203
9.1.1 Gradle Transform203
9.1.2 Gradle Transform 實(shí)例207
9.1.3 ASM213
9.2 原理概述220
9.3 案例220
9.4 完善240
9.5 擴(kuò)展采集能力241
9.6 缺點(diǎn)250
第10章 $AppClick全埋點(diǎn)方案7:Javassist251
10.1 關(guān)鍵技術(shù)251
10.1.1 Javassist251
10.1.2 Javassist基礎(chǔ)251
10.2 原理概述255
10.3 案例255
10.4 擴(kuò)展采集能力272
第11章 $AppClick全埋點(diǎn)方案8:AST280
11.1 關(guān)鍵技術(shù)280
11.1.1 APT280
11.1.2 Element280
11.1.3 APT實(shí)例282
11.1.4 javapoet293
11.1.5 AST295
11.2 原理概述295
11.3 案例295
11.4 完善方案306
11.5 擴(kuò)展采集能力308
11.6 缺點(diǎn)317