新书推荐
《Android 全埋点解决方案》
长按二维码
了解及购买
神策数据出品,10年Andriod开发经验专家撰写,8种Android全埋点技术方案,附源码。
编辑推荐
1. 国内知名大数据公司神策数据出品,多位行业专家联袂推荐。
2. 作者是神策数据合肥研发中心负责人,有近10年Android开发经验,开发和维护着知名商用开源 Android & iOS 数据埋点 SDK。
3. 全书详细阐述Android全埋点的8种解决方案,涵盖全埋点的各种场景,且都提供完整项目源码。
内容简介
这是一本实战为导向的、翔实的Android全埋点技术与解决方案手册,是国内知名大数据公司神策数据在该领域多年实践经验的总结。由神策数据合肥研发中心负责人亲自执笔,他在Android领域有近10年研发经验,开发和维护着知名的商用开源 Android & iOS 数据埋点SDK。
本书详细阐述了 Android 全埋点的8种解决方案,涵盖各种场景,从0到1详解技术原理和实现步骤,并且提供完整的源代码,各级研发工程师均可借此实现全埋点数据采集,为市场解开全埋点的神秘面纱。
8种Android全埋点解决方案包括:
AppClick 全埋点方案1:代理 View.OnClickListener
AppClick 全埋点方案2:代理 Window.Callback
AppClick 全埋点方案3:代理 View.AccessibilityDelegate
AppClick 全埋点方案4:透明层
AppClick 全埋点方案5:AspectJ
AppClick 全埋点方案6:ASM
AppClick 全埋点方案7:Javassist
AppClick 全埋点方案8:AST
作者简介
王灼洲
资深Android开发工程师,有近10年Android 相关开发经验,国内第一批Android研发工程师,开发和维护着国内第一个商用的开源 Android & iOS 数据埋点 SDK。
目前就职于神策网络科技(北京)有限公司公司,担任合肥研发中心负责人,是神策数据最早核心骨干员工。2009~2016就职于北京天宇朗通通信设备股份有限公司公司新产品部,担任 Android 系统工程师。
神策数据
神策数据是专业的大数据分析平台服务提供商,致力于帮助客户实现数据驱动。围绕用户级大数据分析和管理需求,推出神策分析、神策客景、神策自动化运营、神策智能推荐等产品。目前积累了中国银联、中国电信、百度视频、百联、万达、小米、广发证券等 600 余家付费企业用户的服务和客户成功经验,为客户全面提供指标梳理、数据模型搭建等专业的咨询、实施和技术支持服务。
推荐序
到目前为止,中国的信息化建设大致经历了两个阶段。2015年之前,IT系统的引入主要是为了提升业务运营的效率,形成一套人与IT组件构成的业务系统,在纯线上产品中,只有IT组件构成的业务系统。在IT化的过程中,产生了数据这一副产品,通过数据可以进行一些基础的统计和分析工作。2015年之后,大数据的概念深入人心,大数据的场景逐步落地,之前的数据生成思路需要进行革新,不能只把数据当成副产品来看待,而是要考虑面向数据流的思路,IT系统只是数据生成的载体。
这就要求我们在IT系统建设时,不能只是为了完成业务功能,还要考虑如何进行有效的数据采集,对工程师的技能要求发生了变化,不仅要会写代码实现功能,还要建立数据思维。
我2007年加入百度,2015年离开,这八年的时间我主要做了一件事情,就是从零构建百度的用户行为数据平台,这其中走了不少弯路,也实现了不少价值。最深刻的一点体会就是:数据这件事情要做好,最重要的是数据源。只要数据源头解决好了,后面的分析处理都比较好办。那怎么才叫把数据源解决好呢?我也总结了四个字:大、全、细、时。大是指宏观上,当然也有物理层面的含义;全就是指要把多种数据源都采集下来,是全量而非抽样;细强调多维度,维度越多,越能精细化分析;时就是时效性,数据采集和查询分析都需要尽可能地实时。
为了实现对数据的采集,可以有三种方式:代码埋点、工具导入和全埋点。这三种方式都是手段,并且各有优缺点,选择时需要完全基于实际的业务需求和现状来设计,而不能一味地追求某一种方式,如果把全埋点当成必杀技,那就大错特错了。
灼洲作为神策数据的 iOS 和 Android SDK开发负责人,这两年多来对相关的技术进行了深入的研究和大量实践。特别是得益于 Android 系统的开放性,使数据的自动收集更为容易。由于自动收集的本质是对所有操作进行拦截,相比于代码埋点只是采集的一部分必要操作,显然利用自动收集的方式收集的操作类型更全面,因此我们将它命名为全埋点,而不是无埋点。
当然,虽然这种方式是自动化的,但有一些精细化的维度,以及后端的数据,无法用这种方式来实现。但如果想要及时地看到一些产品的宏观指标,又不想要工程师做太多的配合,这是一种很好的方式。
神策数据志在推动国内企业数据化的建设进程。因此,我们将探索和实践的成果全部贡献出来,供各位开发者学习,期待更多的人能够认识到数据的重要性,以及学会数据采集的具体方法。
桑文锋
神策数据创始人&CEO
目录
推荐序
前言
第1章 全埋点概述1
1.1 Android View 类型3
1.2 View 绑定listener 方式7
第2章 $AppViewScreen全埋点方案10
2.1 关键技术Application.ActivityLifecycleCallbacks10
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章 $AppClick全埋点方案1:代理View.OnClickListener47
4.1 关键技术47
4.2 原理概述48
4.3 案例49
4.4 引入DecorView62
4.5 引入ViewTreeObserver.OnGlobalLayoutListener64
4.6 扩展采集能力67
4.7 缺点91
第5章 $AppClick 全埋点方案2:代理Window.Callback92
5.1 关键技术92
5.2 原理概述93
5.3 案例93
5.4 扩展采集能力101
5.5 缺点111
第6章 $AppClick 全埋点方案3:代理View.AccessibilityDelegate112
6.1 关键技术112
6.1.1 Accessibility112
6.1.2 View.AccessibilityDelegate113
6.2 原理概述114
6.3 案例114
6.4 扩展采集能力122
6.5 缺点129
第7章 $AppClick全埋点方案4:透明层130
7.1 原理概述130
7.1.1 View onTouchEvent130
7.1.2 原理概述130
7.2 案例131
7.3 扩展采集能力139
7.4 缺点145
第8章 $AppClick全埋点方案5:AspectJ146
8.1 关键技术146
8.1.1 AOP146
8.1.2 AspectJ148
8.1.3 AspectJ 注解148
8.1.4 切点表达式151
8.1.5 JoinPoint153
8.1.6 call与execution区别155
8.1.7 AspectJ 使用方法157
8.1.8 通过Gradle 配置使用 AspectJ157
8.1.9 自定义Gradle Plugin162
8.1.10 发布 Gradle 插件165
8.1.11 使用 Gradle Plugin167
8.1.12 Plugin Project168
8.2 原理概述171
8.3 案例171
8.4 完善方案193
8.5 扩展采集能力196
8.6 缺点202
第9章 $AppClick全埋点方案6:ASM203
9.1 关键技术203
9.1.1 Gradle Transform203
9.1.2 Gradle Transform 实例207
9.1.3 ASM213
9.2 原理概述220
9.3 案例220
9.4 完善240
9.5 扩展采集能力241
9.6 缺点250
第10章 $AppClick全埋点方案7:Javassist251
10.1 关键技术251
10.1.1 Javassist251
10.1.2 Javassist基础251
10.2 原理概述255
10.3 案例255
10.4 扩展采集能力272
第11章 $AppClick全埋点方案8:AST280
11.1 关键技术280
11.1.1 APT280
11.1.2 Element280
11.1.3 APT实例282
11.1.4 javapoet293
11.1.5 AST295
11.2 原理概述295
11.3 案例295
11.4 完善方案306
11.5 扩展采集能力308
11.6 缺点317
你与世界
只差一个
公众号