foolchen/AndroidTracker

感觉还是有痕迹

Closed this issue · 3 comments

无痕应该是代码中不会出现任何埋点相关的操作
用 registerActivityLifecycleCallback,,低版本机型无法适配

理论上来说,无埋点的话应该是没有任何埋点相关的代码的。
但是在实际的使用中,由于需要对一些个性化数据的收集、或者由于项目结构的问题,必然会导致一些特殊的处理。这就是为什么会增加一些可以手动调用的方法。
而在使用该库时,如果项目中没有使用Fragment,并且也不需要收集一些个性化数据的话,只需要进行初始化即可,并不需要其他的处理。

另外Application.registerActivityLifecycleCallback()方法支持的API最低版本为14,也就是Android 4.0。目前市面上在售的手机应该不会有比该版本更低的了,建议在实际的生产中建议产品经理将最低版本的支持提升到API 14。

这种埋点算的上初级的无痕埋点了,市场上的监控统计,无非是做成了Gradle插件,你集成后再编译器插入代码,虽然不需要你埋点,初始化你还是要做的吧,像TalkingData的灵动分析还不是一样要写自定义代码,无痕自动埋点满足通用需求,但不能满足个性化需求,总会有地方需要你手动插入代码。项目有参考价值,nice, nice

参照 iOS Runtime 中的 invocation 逻辑,可以在 framework 或者 runtime 做一层 methodswize 或者 hook,根据配置或者动态下发的埋点信息进行透明无痕埋点。
iOS Runtime 和 app 同一层,可以直接 hook
Java 字节码最终是 JVM统一解析,在 Android 平台上是 Dalvik 或者 Art,所以应该在 so native 层对 method 转发进行 HOOK,做无痕埋点。

思路还是有的,看深度