Skip to content

Commit 772d9e3

Browse files
committed
Merge pull Tencent#790
1 parent af65077 commit 772d9e3

File tree

5 files changed

+27
-3
lines changed

5 files changed

+27
-3
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.tencent.matrix.trace;
2+
3+
import org.objectweb.asm.MethodVisitor;
4+
import org.objectweb.asm.commons.JSRInlinerAdapter;
5+
6+
public class JSRAdapter extends JSRInlinerAdapter {
7+
JSRAdapter(int api, MethodVisitor mv, int access, String name, String desc, String signature, String[] exceptions) {
8+
super(api, mv, access, name, desc, signature, exceptions);
9+
}
10+
}

matrix/matrix-android/matrix-gradle-plugin/src/main/java/com/tencent/matrix/trace/MethodCollector.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,7 @@ public int compare(TraceMethod o1, TraceMethod o2) {
267267
}
268268

269269
private class TraceClassAdapter extends ClassVisitor {
270+
private int version;
270271
private String className;
271272
private boolean isABSClass = false;
272273
private boolean hasWindowFocusMethod = false;
@@ -278,6 +279,7 @@ private class TraceClassAdapter extends ClassVisitor {
278279
@Override
279280
public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) {
280281
super.visit(version, access, name, signature, superName, interfaces);
282+
this.version = version;
281283
this.className = name;
282284
if ((access & Opcodes.ACC_ABSTRACT) > 0 || (access & Opcodes.ACC_INTERFACE) > 0) {
283285
this.isABSClass = true;
@@ -294,7 +296,12 @@ public MethodVisitor visitMethod(int access, String name, String desc,
294296
if (!hasWindowFocusMethod) {
295297
hasWindowFocusMethod = isWindowFocusChangeMethod(name, desc);
296298
}
297-
return new CollectMethodNode(className, access, name, desc, signature, exceptions);
299+
300+
MethodVisitor collectMethodNode = new CollectMethodNode(className, access, name, desc, signature, exceptions);
301+
if (this.version <= Opcodes.V1_6) {
302+
collectMethodNode = new JSRAdapter(api, collectMethodNode, access, name, desc, signature, exceptions);
303+
}
304+
return collectMethodNode;
298305
}
299306
}
300307
}

matrix/matrix-android/matrix-gradle-plugin/src/main/java/com/tencent/matrix/trace/MethodTracer.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,7 @@ private void listClassFiles(ArrayList<File> classFiles, File folder) {
295295

296296
private class TraceClassAdapter extends ClassVisitor {
297297

298+
private int version;
298299
private String className;
299300
private String superName;
300301
private boolean isABSClass = false;
@@ -309,6 +310,7 @@ private class TraceClassAdapter extends ClassVisitor {
309310
@Override
310311
public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) {
311312
super.visit(version, access, name, signature, superName, interfaces);
313+
this.version = version;
312314
this.className = name;
313315
this.superName = superName;
314316
this.isActivityOrSubClass = isActivityOrSubClass(className, collectedClassExtendMap);
@@ -329,8 +331,12 @@ public MethodVisitor visitMethod(int access, String name, String desc,
329331
return super.visitMethod(access, name, desc, signature, exceptions);
330332
} else {
331333
MethodVisitor methodVisitor = cv.visitMethod(access, name, desc, signature, exceptions);
332-
return new TraceMethodAdapter(api, methodVisitor, access, name, desc, this.className,
334+
methodVisitor = new TraceMethodAdapter(api, methodVisitor, access, name, desc, this.className,
333335
hasWindowFocusMethod, isActivityOrSubClass, isNeedTrace);
336+
if (this.version <= Opcodes.V1_6) {
337+
methodVisitor = new JSRAdapter(api, methodVisitor, access, name, desc, signature, exceptions);
338+
}
339+
return methodVisitor;
334340
}
335341
}
336342

matrix/matrix-android/matrix-gradle-plugin/src/main/java/com/tencent/matrix/trace/TraceBuildConstants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public class TraceBuildConstants {
3434
public final static String MATRIX_TRACE_APPLICATION_CLASS = "android/app/Application";
3535
public final static String MATRIX_TRACE_METHOD_BEAT_CLASS = "com/tencent/matrix/trace/core/AppMethodBeat";
3636
public final static String MATRIX_TRACE_ON_WINDOW_FOCUS_METHOD_ARGS = "(Z)V";
37-
public static final String[] UN_TRACE_CLASS = {"R.class", "R$", "Manifest", "BuildConfig"};
37+
public static final String[] UN_TRACE_CLASS = {"R.class", "R$", "Manifest", "BuildConfig", "META-INF", "module-info"};
3838
public final static String DEFAULT_BLOCK_TRACE =
3939
"[package]\n"
4040
+ "-keeppackage android/\n"

matrix/matrix-android/matrix-gradle-plugin/src/main/kotlin/com/tencent/matrix/plugin/trace/MatrixTrace.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ class MatrixTrace(
174174
}
175175
val traceClassLoader = TraceClassLoader.getClassLoader(project, allInputs)
176176
methodTracer.trace(dirInputOutMap, jarInputOutMap, traceClassLoader, skipCheckClass)
177+
traceClassLoader.close()
177178

178179
Log.i(TAG, "[doTransform] Step(3)[Trace]... cost:%sms", System.currentTimeMillis() - start)
179180

0 commit comments

Comments
 (0)