diff --git a/growingio-autotracker-gradle-plugin/src/main/java/com/growingio/sdk/plugin/autotrack/compile/visitor/InjectAroundClassVisitor.java b/growingio-autotracker-gradle-plugin/src/main/java/com/growingio/sdk/plugin/autotrack/compile/visitor/InjectAroundClassVisitor.java index 40f6c15d..62e63a11 100644 --- a/growingio-autotracker-gradle-plugin/src/main/java/com/growingio/sdk/plugin/autotrack/compile/visitor/InjectAroundClassVisitor.java +++ b/growingio-autotracker-gradle-plugin/src/main/java/com/growingio/sdk/plugin/autotrack/compile/visitor/InjectAroundClassVisitor.java @@ -30,6 +30,8 @@ import org.objectweb.asm.commons.GeneratorAdapter; import org.objectweb.asm.commons.Method; +import java.util.ArrayList; +import java.util.List; import java.util.Map; public class InjectAroundClassVisitor extends ClassVisitor { @@ -119,21 +121,27 @@ public void visitMethodInsn(int opcode, String owner, String name, String desc, } private TargetMethod findTargetMethod(String className, String methodName, String methodDesc) { - TargetClass targetClass = findTargetClass(className); - if (targetClass != null) { - return targetClass.getTargetMethod(methodName, methodDesc); + List targetClass = findTargetClass(className); + for (TargetClass tClass : targetClass) { + if (tClass != null) { + TargetMethod method = tClass.getTargetMethod(methodName, methodDesc); + if (method != null) { + return method; + } + } } return null; } - private TargetClass findTargetClass(String className) { + private List findTargetClass(String className) { + List list = new ArrayList<>(); Map aroundHookClasses = HookClassesConfig.getAroundHookClasses(); for (String clazz : aroundHookClasses.keySet()) { if (isAssignable(className, clazz)) { - return aroundHookClasses.get(clazz); + list.add(aroundHookClasses.get(clazz)); } } - return null; + return list; } private boolean isAssignable(String subClassName, String superClassName) {