h5神策埋点_神策Android全埋点方案分析

h5神策埋点_神策Android全埋点⽅案分析
神策Android全埋点⽅案
震惊世界的中国秘方原理简单分析: Activity⽣命周期通过监听Application.ActivityLifecycleCallbacks,fragment的⽣命周期 及⼀些点击事件则编译时通过ASM对相应⽅法进⾏hook
神策Android SDK分析
Gradle 插件分析
image-20180916112522297.png
⽬录
sa-gradle.png
gradle plugin uml
SensorsAnalyticPlugin 插件⼊⼝
SensorsAnalyticsExtension 配置⽂件(debug 是否输出⽇⽇志,disableJar是否修改jar包,exclude不修改的包)
SensorsAnalyticsTransform 遍历jar 遍历⽬录满⾜条件调⽤SensorsAnalyticsClassVisitor
SensorsAnalyticsClassVisitor 扫描到SensorsAnalyticsHookConfig 中配置的⽅法时字节码修改调⽤sdk中
com/sensorsdata/analytics/android/sdk/SensorsDataAutoTrackHelper的⽅法
SDK 分析
org.aspectj:aspectjrt:1.8.10 实际上并没⽤到 其实⽤的是上⾯的ASM 所以可以去除这个依赖以及
榆林学院图书馆com.sensorsdata.analytics.android.sdk.aop这个包
聚丙烯腈AnalyticsMessages 类⽤于上报。逻辑简单看了下 开了个Work线程。直接上报 或者间隔⼀端时间去上报。
TrackTaskManager 任务列表(每次track都是个任务)对应TrackTaskManagerThread
防火墙终结者
TrackTaskManagerThread 这是个Runable ⾥⾯开了个单线程线程池每个3秒去 任务列表拉任务并执⾏
关键的类和⽅法
SensorsDataAutoTrackHelper ⽤于v4/Fragment⽣命周期和各种视图事件的track 和插件 SensorsAnalyticsHookConfig中相对应
SensorsDataActivityLifecycleCallbacks Activity⽣命周期track
SensorsDataAPI如下⽅法(主要附加了⼀些当前环境数据的track 每次track都需要⾛到这⾥这个可能⽐较耗时)
private void trackEvent(final EventType eventType, final String eventName, final JSONObject properties, final String
originalDistinctId)
总结
涉及的业务的还是需要额外写⼊代码 ⽐如点击按钮也只能获取到当前页⾯和按钮上的⽂字
对于B端⽐较关注⼀些业务数据的不合适 还需要寻新的解决⽅法
胆固醇代谢途径
每次页⾯操作和点击事件都会去额外执⾏的⽅法需要 测下耗时 还有打点前后对app性能的影响
sdk采集数据可以参考上⾯的关键⽅法和类。 打包插件可以参考fork⼀份 ⽅便⾃⼰配置需要Hook哪些⽅法
额外知识
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);
}

本文发布于:2024-09-22 12:46:57,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/526469.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:任务   需要   点击   数据   参考   上报   是否
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议