首页 欧洲联赛正文

蝴蝶兰怎么养,数据收集技能揭秘:手把手教你全埋点技能解决方案,长恨歌

导读:全埋点,也叫无埋点、无码埋点、无痕埋点、主动埋点。全埋点是指无需 Android 应用程序开发工程师写代码或许只写少数的代码,就能预先主动搜集用户的一切行为数据,然后就能够依据实践的事务剖析需求从中筛选出所需行为数据并进行剖析。

作者:神策数据

如需转载请联络篇章科技

全埋点搜集的事情现在首要包含下面四种(事情称号前面的 $ 符号,是指该事情是预置事情,与之对应的是自界说事情):

  • $AppStart 事情:是指应用程序发动,一起包含冷发动和热启熊出没之联合屯举动场景。热发动也便是指应用程序从后台康复。
  • $A蒋玉琴ppEnd 事情:是指应用程序退出,包含应用程序的正常退出、按 Home 键进入后台、应用程序被强杀、应用程序溃散等场景。
  • $AppViewScreen 事情:是指应用程序页面阅览,关于 Android应用程序来说,便是指切换 蝴蝶兰怎样养,数据搜集技能揭秘:手把手教你全埋点技能处理计划,长恨歌Activity 或 Fragment。
  • $AppClick 事情:是指应用程序控件点击,也即 View 被点击,比杨三十二郎如点击 Button、ListView 等。

在搜集的这四种事情傍边,最重要而且搜集难度最大的王瓷萱是 $AppClick 事情。

所以,全埋点的处理计划基本上也都是围绕着怎样搜集 $AppClick 事情的。

关于 $AppClick 事情的全埋点全体处理思路,归根到底,便是要主动的找到那个被点击控件的点击处理逻辑(咱们后文也会叫原处理逻辑),然后再利用必定的技能原理,对原处理逻辑进行“阻拦”,或许在原处理逻辑的履行前面或履行者后边“刺进”相应的埋点代码逻辑,然后到达主动埋点的作用。

至蝴蝶兰怎样养,数据搜集技能揭秘:手把手教你全埋点技能处理计划,长恨歌于怎样做到主动“阻拦” 控件的原处理逻辑,一般都是参阅 Android 体系的事情处理机制来进行的。关于 Android 体系的事情处理机制,因为篇幅有限,不再胪陈。

本文来首要介绍 $AppClick 全埋点计划:AST,更多全埋点计划请重视《Android 全埋点处理计划》一书。

01 关键技能

1. APT

APT 是 ANNOTATION PROCESSING TOOL 的缩写,即注解处理器,是一种处理注解的东西。确切的说它是JAVAC的一个东西,它用来在编译xi呆呆时扫描和处理kb店注解。注解处理器以JAVA代码(或许编译过的字节码)作为输入,生成 .JAVA文件作云草稿为输出。简略来说便是在编译期,经过注解生成 .JAVA文件。

2. Element

自界说注解处理器,需求承继 AbstractProcessor 类。而 AbstractProcessor 最重要的便是 process 办法。process 办法处理的中心是 El蝴蝶兰怎样养,数据搜集技能揭秘:手把手教你全埋点技能处理计划,长恨歌ement 方针。

咱们下面具体的介绍一下 Elemen原阳气候t 方针。

Element的完好源码如下。

package javax.风流村lang.model.element;
import java.lang.annotation.Annotation;
import java.util.List;
import java.util.Set;
import javax.lang.model.AnnotatedConstruct;
import javax.lang.model.type.TypeMirror;
publ应试宝官网ic interface Element extends AnnotatedConstruct {
TypeMirror asType();
ElementKi蝴蝶兰怎样养,数据搜集技能揭秘:手把手教你全埋点技能处理计划,长恨歌nd getKind();
Set getModifiers();
Name getSimpleName();
Element getEnclosingElement();
List
boolean equals(Object var1);
int hashCode();
List
A getAnnotation(Class var1);
R accept(ElementVisitor var1, P var2);
}

从以上界说能够看出, Element 其实便是一个接口,它界说了外部能够调用的几个办法。

咱们下面简略的介绍一下它封山村规则的一些常用办法。

Element 有 5 个直接子类,它们别离代表一种特定类型的元素。五个子类各有各的用途而且有各种独有的办法,在运用的时分能够强制将Element方针转化成其间的任何一种,可是有必要满意转化的条件,否则会抛出反常。

其间 TypeE蝴蝶兰怎样养,数据搜集技能揭秘:手把手教你全埋点技能处理计划,长恨歌lement 和 VariableElement 是最中心的两个 Element,也是咱们下文会运用到的。

3. APT实例

咱们下面来解说一个关于 APT 实例。

咱们经过 APT 来完成一个功用,功用蝴蝶兰怎样养,数据搜集技能揭秘:手把手教你全埋点技能处理计划,长恨歌类似于 ButterKnife 中的 @BindView 注解。即经过对 View 变量的注解,完成对 View 的绑定(无需调用 findViewBy蝴蝶兰怎样养,数据搜集技能揭秘:手把手教你全埋点技能处理计划,长恨歌Id 办法)。

完好的项目陈若雪源码能够参阅:

https://github.com/wangzhzh/AutoTrackA妩媚动人PTProject

4. 很紧AST

咱们下面解说一下什么是 AST。

AST,是 Abstract Syntax Tree 的缩写,即“笼统语法树”,是编辑器对代码的第一步加工之后的成果,是一个树方式表明的源代码。源代码的每个元素映射到一个节点或子树。

Java 的编译进程能够分红三个阶段,参阅图11-5。

▲图11-5 编译进程

  • 第一阶段:一切潘伟泊的源文件会被解析成语法树;
  • 第二阶段:调用注解处理器,即 APT 模块。假如注解处理器产生了新的源文件,新的源文件也要参加编译;
  • 第三阶段:语法树会被剖析并转化成类文件。

02 原理概述

编辑器对代码处理的流程大概是:

JavaTXT->词语法剖析-> 生成AST ->语义剖析 -> 编译字节码

经过操作AST,能够到达修正源代码的功用。

能够在自界说注解处理器的 process 办法里,经过 roundEnvironment.getRootElements() 办法能够拿到一切的 Element 方针,经过 trees.getTree(element) 办法能够拿到对应的笼统语法树(AST),然后咱们自界说一个 TreeTranslator,在 visitMethodDef 里即可对办法进行判别。

假如是方针处理办法,则经过 AST 结构的相关 API 即可刺进埋点代码,然后完成全埋点的作用。

03 事例

下面以主动搜集 Android 的 Button点击事情为例,具体介绍该计划的完成。关于其它控件的主动搜集,后边会进行扩展。

完好的项目源码能够参阅:

https://github.com/wangzhzh/AutoTrackAppClick8

04 缺陷

  • com.sun.tools.javac.tree 相关 API 语法不流畅,了解难度大,要求对编译原理有必定的根底;
  • APT 无法扫描其他 module,导致 AST 无法处理其它 module;
  • 不支持 Lambda 语法;
  • 带有返回值的办法,很难把埋点代码刺进到办法之后。
关于作者奇幻潮粤语:国内知大连交通大学图书馆名大数据公司神策数据出品,作者王灼洲是神策数据合肥研制中心负责人,有近10年Android开发经历,开发和维护着闻名商用开源 Android & iOS 数据埋点 SDK。

延伸阅览粗坑村《Android 全埋点处理计划》

引荐语:0年Andriod开发经历专家编撰,8种Android全埋点技能计划,附源码。适读人群:适用于我超勇的初级、中级、高档水平的Android 开发工程师、技能司理、技能总监等。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。