ASM 点击事件统计 && 耗时警告

参考文章

进程间传递Parcelable对象出现ClassNotFoundException异常的解决方法
[转载]Gradle 插件 发布到本地和远程仓库
将插件发布到 Gradle 官网地址
神策统计书籍

代码地址

源码地址gitHub

简要说明

我是参考神策的书籍,在它原本的基础代码上进行修改。原本已经实现了通过View获取到activity的路径信息,如果view是TextView或者Button,可以获取里面的文本内容,id,等等

我做了什么?

1、onClick事件,可以获取activity、fragment 的页面路径信息,
2、事件发生的时间、view文本信息、viewId、view.getTag('sensors_analytics_tag_view_properties')获取存储的json参数、view.getTag('sensors_analytics_tag_view_function_type')获取活动类型等,存储到本地数据库,在需要的时候直接通过时间点进行获取
3、在方法上标注@CostTime ,如果方法执行时间超过1秒(可以自定义)就会通过接口方式回调
4、插件只扫描自己想要扫描的包

下一步计划

发布到gradle

学习总结
class SensorsAnalyticsPlugin implements Plugin {
    void apply(Project project) {
        SensorsAnalyticsExtension extension = project.extensions.create("sensorsAnalytics", SensorsAnalyticsExtension)
       //获取gradle配置的信息,其实在这里是获取不到的,它这里的默认值,都是你 SensorsAnalyticsExtension 文件里面的默认值
        extension.containsString = project.sensorsAnalytics.containsString
        extension.disableAppClick = project.sensorsAnalytics.disableAppClick
        extension.disableCostTime =  project.sensorsAnalytics.disableCostTime
        extension.disablePlugin = project.sensorsAnalytics.disablePlugin
        ...
    }
}

//需要在 transform 里面获取到gradle配置的信息
public class SensorsAnalyticsTransform extends Transform{
  ...
     @Override
    void transform(TransformInvocation transformInvocation) throws TransformException, InterruptedException, IOException {
        if (sensorsAnalyticsExtension.disablePlugin){
            println("已禁插件")
        }

        if (sensorsAnalyticsExtension.disableAppClick){
            println("已禁用点击统计")
        }

        if (sensorsAnalyticsExtension.disableCostTime){
            println("已禁用方法耗时统计")
        }
  }
  ...
}

你可能感兴趣的:(ASM 点击事件统计 && 耗时警告)