sensorsdata / sa-sdk-android-plugin2

神策数据官方 Android 埋点插件,用于 Android 端的数据采集。通过使用字节码插桩(ASM)的技术实现 Android 端的全埋点(无埋点、无码埋点、无痕埋点、自动埋点)。
http://opensource.sensorsdata.cn
Other
438 stars 150 forks source link

不太理解此处方法执行逻辑存在的必要性 #7

Closed hanchanpo13 closed 4 years ago

hanchanpo13 commented 4 years ago

https://github.com/sensorsdata/sa-sdk-android-plugin2/blob/f9fb081164831338a556e16d196efa2dd8aa65ce/plugin/src/main/groovy/com/sensorsdata/analytics/android/plugin/SensorsAnalyticsClassVisitor.groovy#L227

dengshiwei commented 4 years ago

因为在实际的项目中,多次遇到参数类型被优化的现象,所以采取的方式是在 onMethodEnter 的时候进行相关参数的保存,以便插入代码的时候正确读取使用。

hanchanpo13 commented 4 years ago

因为在实际的项目中,多次遇到参数类型被优化的现象,所以采取的方式是在 onMethodEnter 的时候进行相关参数的保存,以便插入代码的时候正确读取使用。 感谢解惑,但是我实在想不出,一个被调用了的参数(至少我们插入的代码调用了),会被优化掉

dengshiwei commented 4 years ago

@hanchanpo13 你可以了解下字节码的相关知识,一般这种情况的出现都是为了降低字节码文件的大小。比如混淆也有类似的功能。