数据的价值
APM
目标
对应用的性能、业务可靠性进行线上的监控和预警
采集内容
系统指标,应用性能指标,Crash,自定义日志等
用户行为
目标
精细化运营
采集内容
从用户属性——性别、地域、收入、家庭状况
从用户生命周期——注册、活跃、流失
从用户行为——功能、内容、产品的喜好等
技术手段
Java层实现功能
1.自定义业务数据链路化
2.内存指标
3.CPU指标
4.FPS 指标
5.ANR日志
6.卡顿检测
7.GC日志
8.Crash日志
9.Http指标数据(暂时只支持OkHttp)
10.电量指标
11.MAOP,使用注解和配置文件AOP指定方法执行前,执行后,异常插入指定代码的功能(项目也实现动态日志功能,但是好像没有很好的使用场景)
12.Remote下发命令,执行shell和动态执行代码功能
13.交互分析:分析Activity生命周期耗时
概述
因为涉及的知识点太多,受篇幅限制,此篇就只列出关键的知识点和步骤,具体知识点会列出参考的链接或者书籍,相信这些作者都讲的很详细和通透。
Android AOP
在Android编译过程中,使用自定义的gradle插件,注册新的tranform任务,在java compile之后,修改编译后class文件的内容,在切入点增加相应的代码来实现AOP,实现无埋点功能。
Android的编译流程
Gradle
Transform API
Android Gradle 工具在 1.5.0 版本后提供了 Transfrom API, 允许第三方 Plugin 在打包 dex 文件之前的编译过程中操作 .class 文件。目前 jarMerge、proguard、multi-dex、Instant-Run 都已经换成 Transform 实现,我们注册自己的transform实现对class文件的修改
需要注意的是App Module依赖的library Module都是以jar的形式存在的,处理jar包时需要通过jarInput.getName()来判断是否是":xx"形式开头的jar,这部分jar包需要当成目录代码来访问。
自定义Gradle插件
自定义Gradle Plugin使用的是Groovy语言,需要对groovy有一定的了解,着重了解它的闭包概念,和各种省略写法规则。