标题只是为了大家更方便地找到我这个系列的文章,同时也方便我自己后续整理文章。无痕埋点也叫无埋点,这个和性能优化有多大关系呢?无埋点顾名思义就是不需要开发人员编写埋点代码,通常情况下,大部分公司并不会将埋点作为工时纳入开发计划,但是随着应用业务变复杂,用户行为的分析变得越来越重要,如果还是古老的挨个定义显得很死板,最主要的还是加重了开发人员的负担,所以我更愿意说,这个性能优化是基于开发的性能优化。

那么,在学习无痕埋点前,我们需要知道无痕埋点能帮我们解决什么问题?

  • 通过代码手动埋点比较原始,出错概率较高。
  • 埋点链路较长,出现错埋漏埋需要重新发布
  • 埋点数据准确性无法校验

技术引入

无痕埋点在安卓端用到了两个基本技术,一个是Android Studio插件开发,一个是动态字节码插桩。当然后来还需要对数据进行筛选过滤整合报表,但是这个不是我们这里讨论的内容,这两个,下面我会单独和大家分享他们的实现原理和基本实现。

插件开发

插件开发要用到Groovy语言,这个语言其实大家都不陌生,我们的gradle文件就是用的Groovy语言,实际上如果你对java不陌生,你会发现这种代码很容易读懂。实际上,Groovy和Java一样都是基于JVM运行的语言,而且它可以和java语言混着用,所以我们完全不需要担心这门语言有多难,至于插件的开发,只不过是遵循一些规范来使用罢了,就像使用Api文档一样。

动态字节码插桩

动态插桩其实也不是什么新技术,很早以前就有了二