@@ -190,6 +190,7 @@ class SensorsAnalyticsClassVisitor extends ClassVisitor {
190190
191191 // 访问权限是public并且非静态
192192 boolean pubAndNoStaticAccess
193+ ArrayList<Integer > localIds
193194
194195 @Override
195196 void visitEnd () {
@@ -242,6 +243,16 @@ class SensorsAnalyticsClassVisitor extends ClassVisitor {
242243 variableID = newLocal(Type . getObjectType(" java/lang/Integer" ))
243244 methodVisitor. visitVarInsn(ILOAD , 1 )
244245 methodVisitor. visitVarInsn(ISTORE , variableID)
246+ } else if (nameDesc == ' onViewCreated(Landroid/view/View;Landroid/os/Bundle;)V' && pubAndNoStaticAccess) {
247+ localIds = new ArrayList<> ()
248+ int localId = newLocal(Type . getObjectType(" java/lang/Integer" ))
249+ methodVisitor. visitVarInsn(ALOAD , 1 )
250+ methodVisitor. visitVarInsn(ASTORE , localId)
251+ localIds. add(localId)
252+ localId = newLocal(Type . getObjectType(" java/lang/Integer" ))
253+ methodVisitor. visitVarInsn(ALOAD , 2 )
254+ methodVisitor. visitVarInsn(ASTORE , localId)
255+ localIds. add(localId)
245256 }
246257 }
247258
@@ -324,10 +335,17 @@ class SensorsAnalyticsClassVisitor extends ClassVisitor {
324335 methodVisitor. visitVarInsn(ALOAD , 0 )
325336 methodVisitor. visitVarInsn(ILOAD , variableID)
326337 methodVisitor. visitMethodInsn(Opcodes . INVOKESTATIC , SensorsAnalyticsHookConfig . SENSORS_ANALYTICS_API , sensorsAnalyticsMethodCell. agentName, sensorsAnalyticsMethodCell. agentDesc, false )
338+ } else if (localIds != null ){
339+ methodVisitor. visitVarInsn(ALOAD , 0 )
340+ for (localId in localIds) {
341+ methodVisitor. visitVarInsn(ALOAD , localId)
342+ }
343+ methodVisitor. visitMethodInsn(Opcodes . INVOKESTATIC , SensorsAnalyticsHookConfig . SENSORS_ANALYTICS_API , sensorsAnalyticsMethodCell. agentName, sensorsAnalyticsMethodCell. agentDesc, false )
327344 } else {
328345 visitMethodWithLoadedParams(methodVisitor, Opcodes . INVOKESTATIC , SensorsAnalyticsHookConfig . SENSORS_ANALYTICS_API , sensorsAnalyticsMethodCell. agentName, sensorsAnalyticsMethodCell. agentDesc, sensorsAnalyticsMethodCell. paramsStart, sensorsAnalyticsMethodCell. paramsCount, sensorsAnalyticsMethodCell. opcodes)
329346 }
330347 isHasTracked = true
348+ return
331349 }
332350 }
333351
0 commit comments