美文网首页
神策Android全埋点方案分析

神策Android全埋点方案分析

作者: Youremywoman | 来源:发表于2019-04-30 11:12 被阅读0次

神策Android全埋点方案

原理简单分析: Activity生命周期通过监听Application.ActivityLifecycleCallbacks,fragment的生命周期 及一些点击事件则编译时通过ASM对相应方法进行hook

神策Android SDK分析

sdk git仓库

官网SDK介绍

Gradle 插件分析

仓库上好像没有插件代码,通过http://jcenter.bintray.com/com/sensorsdata/analytics/android/android-gradle-plugin2/2.0.0/ 下载相应jar包解压

image-20180916112522297.png

目录


sa-gradle.png

gradle plugin uml

  1. SensorsAnalyticPlugin 插件入口
  2. SensorsAnalyticsExtension 配置文件(debug 是否输出日日志,disableJar是否修改jar包,exclude不修改的包)
  3. SensorsAnalyticsTransform 遍历jar 遍历目录满足条件调用SensorsAnalyticsClassVisitor
  4. SensorsAnalyticsClassVisitor 扫描到SensorsAnalyticsHookConfig 中配置的方法时字节码修改调用sdk中com/sensorsdata/analytics/android/sdk/SensorsDataAutoTrackHelper的方法

SDK 分析

  1. org.aspectj:aspectjrt:1.8.10 实际上并没用到 其实用的是上面的ASM 所以可以去除这个依赖以及 com.sensorsdata.analytics.android.sdk.aop这个包

  2. AnalyticsMessages 类用于上报。逻辑简单看了下 开了个Work线程。直接上报 或者间隔一端时间去上报。

  3. TrackTaskManager 任务列表(每次track都是个任务)对应TrackTaskManagerThread

  4. TrackTaskManagerThread 这是个Runable 里面开了个单线程线程池每个3秒去 任务列表拉任务并执行

关键的类和方法

  1. SensorsDataAutoTrackHelper 用于v4/Fragment生命周期和各种视图事件的track 和插件 SensorsAnalyticsHookConfig中相对应
  2. SensorsDataActivityLifecycleCallbacks Activity生命周期track
  3. SensorsDataAPI如下方法(主要附加了一些当前环境数据的track 每次track都需要走到这里这个可能比较耗时)
   private void trackEvent(final EventType eventType, final String eventName, final JSONObject properties, final String
           originalDistinctId)

总结

  1. 涉及的业务的还是需要额外写入代码 比如点击按钮也只能获取到当前页面和按钮上的文字

    对于B端比较关注一些业务数据的不合适 还需要寻找新的解决方法

  2. 每次页面操作和点击事件都会去额外执行的方法需要 测下耗时 还有打点前后对app性能的影响

  3. sdk采集数据可以参考上面的关键方法和类。 打包插件可以参考fork一份 方便自己配置需要Hook哪些方法

额外知识

  1. handle是否提交了相应任务可以用这个方法判断
/**
     * Check if there are any pending posts of messages with code 'what' in
     * the message queue.
     */
    public final boolean hasMessages(int what) {
        return mQueue.hasMessages(this, what, null);
    }

相关文章

  • 神策Android全埋点方案分析

    神策Android全埋点方案 原理简单分析: Activity生命周期通过监听Application.Act...

  • IOS 神策埋点,友盟统计

    一,神策埋点 // 集成神策[self initSensorsAnalyticsWithLaunchOptions...

  • Android 全埋点解决方案(一)

    一、埋点方案总结AppEnd 全埋点方案 AppClick全埋点方案1: 代理View.OnclickListen...

  • 使用 buildTypes 进行特殊处理

    项目使用神策进行埋点,神策在 init()的时候,如果是神策的 debug 的话支持实时查看埋点,每次写完业务代码...

  • 数据分析文章合集

    神策分析的技术选型与架构实现 笔记: 代码埋点埋点为主(在订单界面生成埋点) 可视化埋点为辅助(在baseVC里面...

  • 神策大数据用户行为分析-1-入门知识

    神策数据 神策大数据用户行为分析入门,主要涉及的知识点: 神策分析简介 神策产品优势 神策解决痛点 神策分析作用 ...

  • Asm初探

    最近项目中产品要求接入神策埋点,神策最大的宣传点应该就是所谓无痕全埋点。对于这种"无痕"或者"无感知",大部分An...

  • Android全埋点方案调研

    1 行业内全埋点技术方案调研 调研文章链接: 网易云音乐Android 自动埋点实践 网易HubbleData之A...

  • vue神策前端埋点,自定义埋点及追踪用户

    vue项目神策埋点网上的相关资料比较少,只能摸索尝试着调试。全埋点在main.js中引入sensors.init代...

  • 埋点方案细节Q&A

    接上篇《埋点&运营分析产品设计》之后,关于埋点方案还有一些不得不探讨的内容:为什么选择全埋点而不选择可视化埋点?埋...

网友评论

      本文标题:神策Android全埋点方案分析

      本文链接:https://www.haomeiwen.com/subject/olpmnqtx.html