猜你喜欢
Android 全埋点解决方案  [Android AutoTrack Solution]

Android 全埋点解决方案 [Android AutoTrack Solution]

书籍作者:王灼洲 ISBN:9787111621492
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:2074
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介
这是一本实战为导向的、翔实的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 余家一付费企业用户的服务和客户成功经验,为客户全面提供指标梳理、数据模型搭建等专业的咨询、实施和技术支持服务。
编辑推荐
适读人群 :适用于初级、中级、高级水平的Android 开发工程师、技术经理、技术总监等
  国内知名大数据公司神策数据出品,多位行业专家联袂推荐。
  作者是神策数据合肥研发中心负责人,有近10年Android开发经验,开发和维护着知名商用开源 Android & iOS 数据埋点 SDK。
  全书详细阐述Android全埋点的8种解决方案,涵盖全埋点的各种场景,且都提供完整项目源码。
前言
到目前为止,中国的信息化建设大致经历了两个阶段。2015年之前,IT系统的引入主要是为了提升业务运营的效率,形成一套人与IT组件构成的业务系统,在纯线上产品中,只有IT组件构成的业务系统。在IT化的过程中,产生了数据这一副产品,通过数据可以进行一些基础的统计和分析工作。2015年之后,大数据的概念深入人心,大数据的场景逐步落地,之前的数据生成思路需要进行革新,不能只把数据当成副产品来看待,而是要考虑面向数据流的思路,IT系统只是数据生成的载体。
  这就要求我们在IT系统建设时,不能只是为了完成业务功能,还要考虑如何进行有效的数据采集,对工程师的技能要求发生了变化,不仅要会写代码实现功能,还要建立数据思维。
  我2007年加入百度,2015年离开,这八年的时间我主要做了一件事情,就是从零构建百度的用户行为数据平台,这其中走了不少弯路,也实现了不少价值。最深刻的一点体会就是:数据这件事情要做好,最重要的是数据源。只要数据源头解决好了,后面的分析处理都比较好办。那怎么才叫把数据源解决好呢?我也总结了四个字:大、全、细、时。大是指宏观上,当然也有物理层面的含义;全就是指要把多种数据源都采集下来,是全量而非抽样;细强调多维度,维度越多,越能精细化分析;时就是时效性,数据采集和查询分析都需要尽可能地实时。
  为了实现对数据的采集,可以有三种方式:代码埋点、工具导入和全埋点。这三种方式都是手段,并且各有优缺点,选择时需要完全基于实际的业务需求和现状来设计,而不能一味地追求某一种方式,如果把全埋点当成必杀技,那就大错特错了。
  灼洲作为神策数据的 iOS 和 Android SDK开发负责人,这两年多来对相关的技术进行了深入的研究和大量实践。特别是得益于 Android 系统的开放性,使数据的自动收集更为容易。由于自动收集的本质是对所有操作进行拦截,相比于代码埋点只是采集的一部分必要操作,显然利用自动收集的方式收集的操作类型更全面,因此我们将它命名为全埋点,而不是无埋点。
  当然,虽然这种方式是自动化的,但有一些精细化的维度,以及后端的数据,无法用这种方式来实现。但如果想要及时地看到一些产品的宏观指标,又不想要工程师做太多的配合,这是一种很好的方式。
  神策数据志在推动国内企业数据化的建设进程。因此,我们将探索和实践的成果全部贡献出来,供各位开发者学习,期待更多的人能够认识到数据的重要性,以及学会数据采集的具体方法。
  桑文锋
  神策数据创始人&CEO
  为什么要写这本书?
  转眼间,我从事Android研发工作已经有9个年头,作为国内第一批Android研发工作者,我见证了Android的发展历程,也开发和维护着国内第一个商用的开源Android & iOS 数据埋点SDK。
  我目前就职于神策数据,担任神策数据合肥研发中心负责人。神策数据是一家以重构中国互联网数据根基为使命的公司,十分重视基础数据的采集与建模。随着大数据行业的快速发展,数据采集也变得越来越重要,数据基础夯实与否,取决于数据的采集方式。埋点方式多种多样,按照埋点位置不同,可以分为前端(客户端)埋点与后端(服务器端)埋点。其中全埋点(无埋点)是目前较为流行的前端埋点方式之一。
  在服务数百家客户的过程中,我逐渐萌生出写此书的想法,原因有三:
  第一,国内企业对全埋点技术需求迫切,但是图书市场仍处空白。
  全埋点技术炙手可热,全埋点采用“全部采集,按需选取”的形式,对页面中所有交互元素的用户行为进行采集,通过界面配置来决定哪些数据需要进行分析,也被誉为“最全、最便捷、界面友好、技术门槛低”的数据采集方式。
  第二,市面上存在对全埋点概念过度包装的情况,希望本书能够揭开全埋点的神秘面纱。
  数据埋点技术在互联网(尤其是移动端)上使用非常普遍,一些数据分析服务厂商将全埋点概念经过包装后,作为核心技术来卖,给人神秘无比的感觉。
  第三,给企业带来价值,推动开发者参与大数据行业的生态建设。
  神策数据的采集技术一直在不断革新,神策SDK组件统称为OpenSasdk,包括C SDK、C++ SDK、CSharp SDK、Java SDK、Python SDK、PHP SDK、Ruby SDK、Golang SDK、Node SDK、APICloud SDK、Android SDK、iOS SDK等,神策数据愿意将一些成熟的技术与国内外开发者交流与分享,并已于2019年1月正式成立供IT开发者的分享、使用与交流技术的开源社区—Sensors Data开源社区,一方面能够更好地服务客户,推动企业的数字化转型;一方面借此造福同行,推动开发者参与数据行业生态建设。
  我希望通过此书全面公开Android 全埋点技术,从0到1进行详细介绍,尤其是控件点击事件全埋点采集的8种方法,并都提供了完整的项目源码。
  读者对象
  本书适用于初级、中级、高级水平的Android 开发工程师、技术经理、技术总监等。
  如何阅读这本书
  本书系统讲解了Android 全埋点的解决方案,特别是控件点击事件的全埋点采集,总结并归纳了如下8种解决方案,并且都提供了完整的项目源码。
  AppStart、$AppEnd 全埋点方案
  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
  勘误和支持
  由于作者的水平有限,编写时间仓促,以及技术不断地更新和迭代,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,特意创建了一个网站:http://book.blendercn.org,读者可以将书中的错误发布在Bug勘误表页面中。同时,如果你遇到任何问题,也可以访问Q&A页面,我将尽量在线上为读者提供满意的解答。书中的全部源文件可以从上面这个网站下载,我会将相应的功能更新及时发布出来。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱[email protected],期待能够得到你们的真挚反馈。
  致谢
  感谢神策数据创始人团队桑文锋、曹犟、付力力、刘耀洲在工作中的指导和帮助。
  感谢机械工业出版社华章公司的编辑杨福川老师,在这半年多的时间中始终支持我的写作,你的鼓励和帮助引导我能顺利完成全部书稿。
  谨以此书献给大数据行业的关注者和建设者!
  王灼洲
  2019年2月
目录
目  录
推荐序
前言
第1章 全埋点概述1
1.1 Android View 类型3
1.2 View 绑定listener 方式7
第2章 $AppViewScreen全埋点
方案10
2.1 关键技术Application.Activity
LifecycleCallbacks10
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
产品特色