Android全埋点解决方案读书笔记(一)

先说下自己对于这本的评价哈
感觉这是一本很好用的工具书籍
在全埋点这块写的很全面,有各种方式和实现流程
但是有些时候又有些水字数的嫌疑(同样的东西复制好几遍)
然后写一下读这本书的收获
一 关于全埋点不同方案实现的优缺点
下面是全部使用原生的解决方案
(1)使用代理View.onClickListener实现
实现原理


image.png

优点:学习成本低,使用原生的API就可以实现
缺点:因为是使用反射,效率较低,而且随着Android安全性的提高可能将来会产生兼容性问题
使用API版本有要求要求16+
无法支持dialog,popWindow的点击事件
(2)使用代理windowCallBack实现
实现原理
[图片上传中...(image.png-80ebe0-1592314227243-0)]
缺点:在每次点击的时候都需要遍历一次RootView相对效率较低
API限制15+
无法采集dialog和popWindow
(3)代理View.accessibilityDelegate
这其实是对上一种方式的一个优化 不用每次点击都需要遍历rootView
实现原理


image.png

缺点:API要求16+
使用反射效率低 ,兼容性不好
无法采集dialog
需要开启辅助功能
(4)添加透明层
原理:。。。
缺点:和第二种一样

下面说以下使用Aop的解决方案
简单介绍下Aop:面向切面编程
简单术语
(1)Advice增强
(2)joinPoint链接点
(3)aspect切面
(4)weaving织入
(5)Target 目标对象
1.使用AspectJ
修改时期:代码的编译器,他的核心是提供你ajc编译器 并不限定具体的语言如java 加AspectJ在dart里面就叫AspectD在Dart里面的使用请参考咸鱼文档
简单概念
切点表达是Before After Around excution(切入点在哪)
实现原理在编译器切入click的源码 并修改
缺点:(1) 无法织入第三方的库
(2)在D8和gradle4.x有兼容性问题
(3)无法对lambda表达式进行埋点
2.使用ASM
埋点位置 在java的class文件转换成dex的时候埋点
关键技术:使用GradleTransform
实现原理:在自定义gradle的plugin中使用Transform,在mehtodVisitor里面找到View.Onclick方法并添加一个新的方法添加埋点
缺点:暂无 就是难学
3.使用Javassist
实现原理和ASM相同 就是在字节操作换成了加吧javassist
缺点:暂无 但是比上一个好学一些
4.使用AST
关键技术使用APT 即注解处理器,一java代码为输入以。java代码为输出,即在编译期通过注解生成java代码,该功能类似butterknife的注解
实现原理:
通过自定义注解处理器拿到Element对象,然后拿到对应的抽象语法树,然后通过visitMethodDef对方法进行判断,如果是目标方法则插入埋点代码
缺点:很难插入带返回值的方法
不支持lambda
不能扫描library

关于全埋点时间遇到的问题和扩展
问题
1.butterKnife的@OnClick注解时间的采集
2.Android:Onclick事件的采集
3.MenuItem的点击事件的采集
4.click的lanbda事件的采集
扩展
AlertDiaog点击事件的采集
checkBox SwitchCompat RadioButton ToggleButton RadioGroup 点击事件的采集
RatingBar点击事件的采集
SeekBar点击事件的采集
Spinner点击事件的采集
TabHost点击事件的采集
ListView GridView点击事件的采集
ExpandableListView点击事件的采集

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343