Skip to content

Commit 0608fc7

Browse files
committed
简单 插桩 success
1 parent dff2600 commit 0608fc7

File tree

49 files changed

+79
-54
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+79
-54
lines changed

aab/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ dependencies {
1111

1212
implementation "com.android.tools.build:gradle-api:$agpVersion"
1313
implementation "com.android.tools.build:gradle:7.2.0"//cao 这是个坑,别用「$agpVersion」,老老实实写版本号,不知道为什么
14-
implementation 'org.jetbrains:annotations:15.0'
14+
implementation 'org.jetbrains:annotations:16.0.1'
1515
}
1616

1717
def group = 'com.zly.aab' //
18-
def versionA = '1.0.0' //版本
18+
def versionA = '1.0.1' //版本
1919
def artifactIdA = 'myGradlePlugin' //唯一标示
2020
// 这个是把源码打入aar包中的任务
2121
task sourceJar(type: Jar) {

aab/src/main/groovy/com/zly/aab/BPlugin.groovy

+3-3
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,18 @@ class BPlugin implements Plugin<Project> {
1313

1414
@Override
1515
void apply(Project project) {
16-
println("======================================success============================> BPlugin")
16+
println("2022.8.29================================> BPlugin")
1717

1818
//在这里注册 Transform
1919
//AppExtension VS AndroidComponentsExtension
2020
AndroidComponentsExtension extension = (AndroidComponentsExtension) project.getExtensions().getByType(AndroidComponentsExtension.class);
2121
extension.onVariants(extension.selector().all(), new Function1<Variant, Variant>() {
2222
@Override
23-
public Variant invoke(Variant variant) {
23+
Variant invoke(Variant variant) {
2424
variant.getInstrumentation().transformClassesWith(BBFactory.class, InstrumentationScope.PROJECT, none -> null);
2525
variant.getInstrumentation().setAsmFramesComputationMode(FramesComputationMode.COMPUTE_FRAMES_FOR_INSTRUMENTED_METHODS);
2626
return variant;
2727
}
28-
});
28+
})
2929
}
3030
}

aab/src/main/java/com/zly/aabb/BBFactory.java

-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ public abstract class BBFactory implements AsmClassVisitorFactory<Instrumentatio
1212
@NotNull
1313
@Override
1414
public ClassVisitor createClassVisitor(@NotNull ClassContext classContext, @NotNull ClassVisitor classVisitor) {
15-
// return classVisitor;
1615
return new BClassVisitor(classVisitor);
1716
}
1817

aab/src/main/java/com/zly/aabb/BClassVisitor.java

+22-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.objectweb.asm.ClassVisitor;
44
import org.objectweb.asm.MethodVisitor;
55
import org.objectweb.asm.Opcodes;
6+
import org.objectweb.asm.Type;
67
import org.objectweb.asm.commons.AdviceAdapter;
78

89
class BClassVisitor extends ClassVisitor {
@@ -14,16 +15,35 @@ class BClassVisitor extends ClassVisitor {
1415
@Override
1516
public MethodVisitor visitMethod(int access, String name, String descriptor, String signature, String[] exceptions) {
1617
MethodVisitor visitor = super.visitMethod(access, name, descriptor, signature, exceptions);
18+
// AdviceAdapter 是 MethodVisitor 的子类,使用 AdviceAdapter 可以更方便的修改方法的字节码。
19+
// AdviceAdapter其中几个重要方法如下:
20+
// void visitCode():表示 ASM 开始扫描这个方法
21+
// void onMethodEnter():进入这个方法
22+
// void onMethodExit():即将从这个方法出去
23+
// void onVisitEnd():表示方法扫描完毕
1724
MethodVisitor newVisitor = new AdviceAdapter(Opcodes.ASM5, visitor, access, name, descriptor) {
25+
1826
@Override
1927
protected void onMethodEnter() {
20-
System.out.println("access:" + access + ", name:" + name + " , descriptor:" + descriptor + " ===> onMethodEnter");
28+
int slotIndex = newLocal(Type.LONG_TYPE);
29+
visitMethodInsn(INVOKESTATIC, "java/lang/System", "currentTimeMillis", "()J", false);
30+
visitVarInsn(LSTORE, slotIndex);
31+
visitLdcInsn("zly_1111");
32+
visitLdcInsn("\u8f93\u51fa\u65f6\u95f4 ");
33+
visitVarInsn(LLOAD, slotIndex);
34+
visitMethodInsn(INVOKESTATIC, "java/lang/Long", "valueOf", "(J)Ljava/lang/Long;", false);
35+
visitMethodInsn(INVOKESTATIC, "kotlin/jvm/internal/Intrinsics", "stringPlus", "(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/String;", false);
36+
visitMethodInsn(INVOKESTATIC, "android/util/Log", "e", "(Ljava/lang/String;Ljava/lang/String;)I", false);
37+
visitInsn(POP);
2138
super.onMethodEnter();
2239
}
2340

2441
@Override
2542
protected void onMethodExit(int opcode) {
26-
System.out.println("access:" + access + ", name:" + name + " , descriptor:" + descriptor + " ===> onMethodExit opcode:$opcode <===");
43+
visitLdcInsn("zly_1111");
44+
visitLdcInsn("test get result");
45+
visitMethodInsn(INVOKESTATIC, "android/util/Log", "e", "(Ljava/lang/String;Ljava/lang/String;)I", false);
46+
visitInsn(POP);
2747
super.onMethodExit(opcode);
2848
}
2949
};
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
package com.zly.bbb
22

3-
import androidx.appcompat.app.AppCompatActivity
43
import android.os.Bundle
54
import android.util.Log
5+
import androidx.appcompat.app.AppCompatActivity
66

77
class MainActivity : AppCompatActivity() {
8+
89
override fun onCreate(savedInstanceState: Bundle?) {
9-
Log.e("zly","=============> start ${System.currentTimeMillis()}")
1010
super.onCreate(savedInstanceState)
1111
setContentView(R.layout.activity_main)
12-
Log.e("zly","=============> end ${System.currentTimeMillis()}")
12+
getResult()
13+
}
14+
15+
fun getResult() {
16+
1317
}
18+
19+
1420
}

build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ buildscript {
1010
google()
1111
}
1212
dependencies {
13-
classpath 'com.zly.aab:myGradlePlugin:1.0.0'
13+
classpath 'com.zly.aab:myGradlePlugin:1.0.1'
1414
classpath "com.android.tools.build:gradle:$agpVersion"
1515
}
1616
}
Binary file not shown.

repos/com/zly/aab/myGradlePlugin/1.0.0/myGradlePlugin-1.0.0-sources.jar.md5

-1
This file was deleted.

repos/com/zly/aab/myGradlePlugin/1.0.0/myGradlePlugin-1.0.0-sources.jar.sha1

-1
This file was deleted.

repos/com/zly/aab/myGradlePlugin/1.0.0/myGradlePlugin-1.0.0-sources.jar.sha256

-1
This file was deleted.

repos/com/zly/aab/myGradlePlugin/1.0.0/myGradlePlugin-1.0.0-sources.jar.sha512

-1
This file was deleted.
Binary file not shown.

repos/com/zly/aab/myGradlePlugin/1.0.0/myGradlePlugin-1.0.0.jar.md5

-1
This file was deleted.

repos/com/zly/aab/myGradlePlugin/1.0.0/myGradlePlugin-1.0.0.jar.sha1

-1
This file was deleted.

repos/com/zly/aab/myGradlePlugin/1.0.0/myGradlePlugin-1.0.0.jar.sha256

-1
This file was deleted.

repos/com/zly/aab/myGradlePlugin/1.0.0/myGradlePlugin-1.0.0.jar.sha512

-1
This file was deleted.

repos/com/zly/aab/myGradlePlugin/1.0.0/myGradlePlugin-1.0.0.module.md5

-1
This file was deleted.

repos/com/zly/aab/myGradlePlugin/1.0.0/myGradlePlugin-1.0.0.module.sha1

-1
This file was deleted.

repos/com/zly/aab/myGradlePlugin/1.0.0/myGradlePlugin-1.0.0.module.sha256

-1
This file was deleted.

repos/com/zly/aab/myGradlePlugin/1.0.0/myGradlePlugin-1.0.0.module.sha512

-1
This file was deleted.

repos/com/zly/aab/myGradlePlugin/1.0.0/myGradlePlugin-1.0.0.pom.md5

-1
This file was deleted.

repos/com/zly/aab/myGradlePlugin/1.0.0/myGradlePlugin-1.0.0.pom.sha1

-1
This file was deleted.

repos/com/zly/aab/myGradlePlugin/1.0.0/myGradlePlugin-1.0.0.pom.sha256

-1
This file was deleted.

repos/com/zly/aab/myGradlePlugin/1.0.0/myGradlePlugin-1.0.0.pom.sha512

-1
This file was deleted.
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fde99fc53ea058080a832f92ce5de98a
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
9fbb087a6735a5710bc71e53f9162c840bae2d3d
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
6dc6063e03620e61447b9ebd82dc36dd5996ce5a4e67877f25055f5c2ff652f0
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
80e28b03e0e858e22a0193ca1767405b3a8e3c4caf0726fa089ec8084f8a09aa9b8c43ae7230d745c6d08f956391ca7d7d18d0de67d15d443f8618dc2851b703
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
6562822e9868fbacf72f6e46fead76b3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
6646497ec98c9e326ed0487336740e3db773acab
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2641c27483aae72a816b71cadadacea33663b21f26fbb97d471135b27fc4312b
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
aaec6ef709c6aebf2398dfbf4ba497e02f4a6cdd8c66e46f1a8c97e8c4b0c182897218d8372fc963ab6c977c91db7123a1be324ccf2f62451f9ff7f2a7546e1e

repos/com/zly/aab/myGradlePlugin/1.0.0/myGradlePlugin-1.0.0.module repos/com/zly/aab/myGradlePlugin/1.0.1/myGradlePlugin-1.0.1.module

+16-16
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"component": {
44
"group": "com.zly.aab",
55
"module": "myGradlePlugin",
6-
"version": "1.0.0",
6+
"version": "1.0.1",
77
"attributes": {
88
"org.gradle.status": "release"
99
}
@@ -25,13 +25,13 @@
2525
},
2626
"files": [
2727
{
28-
"name": "myGradlePlugin-1.0.0.jar",
29-
"url": "myGradlePlugin-1.0.0.jar",
30-
"size": 9174,
31-
"sha512": "2e591ddf69c6bd59686fcda1fb993aa3b3666667a882129b624d14c43bea45de218c42dc1fce45fcac092e9314dc9e7bfa052898aa0cedce90d985ed9a683b53",
32-
"sha256": "772c2f6ada9741c13f91fa89cd6727f2f6a65e8f829223af1300c69d37e2c641",
33-
"sha1": "bc3059ec1b7251d6b7931b834b53afb7e7ee1e65",
34-
"md5": "cc6c8a2f185cd1aa3e9ee0822c7781db"
28+
"name": "myGradlePlugin-1.0.1.jar",
29+
"url": "myGradlePlugin-1.0.1.jar",
30+
"size": 9359,
31+
"sha512": "aaec6ef709c6aebf2398dfbf4ba497e02f4a6cdd8c66e46f1a8c97e8c4b0c182897218d8372fc963ab6c977c91db7123a1be324ccf2f62451f9ff7f2a7546e1e",
32+
"sha256": "2641c27483aae72a816b71cadadacea33663b21f26fbb97d471135b27fc4312b",
33+
"sha1": "6646497ec98c9e326ed0487336740e3db773acab",
34+
"md5": "6562822e9868fbacf72f6e46fead76b3"
3535
}
3636
]
3737
},
@@ -77,19 +77,19 @@
7777
"group": "org.jetbrains",
7878
"module": "annotations",
7979
"version": {
80-
"requires": "15.0"
80+
"requires": "16.0.1"
8181
}
8282
}
8383
],
8484
"files": [
8585
{
86-
"name": "myGradlePlugin-1.0.0.jar",
87-
"url": "myGradlePlugin-1.0.0.jar",
88-
"size": 9174,
89-
"sha512": "2e591ddf69c6bd59686fcda1fb993aa3b3666667a882129b624d14c43bea45de218c42dc1fce45fcac092e9314dc9e7bfa052898aa0cedce90d985ed9a683b53",
90-
"sha256": "772c2f6ada9741c13f91fa89cd6727f2f6a65e8f829223af1300c69d37e2c641",
91-
"sha1": "bc3059ec1b7251d6b7931b834b53afb7e7ee1e65",
92-
"md5": "cc6c8a2f185cd1aa3e9ee0822c7781db"
86+
"name": "myGradlePlugin-1.0.1.jar",
87+
"url": "myGradlePlugin-1.0.1.jar",
88+
"size": 9359,
89+
"sha512": "aaec6ef709c6aebf2398dfbf4ba497e02f4a6cdd8c66e46f1a8c97e8c4b0c182897218d8372fc963ab6c977c91db7123a1be324ccf2f62451f9ff7f2a7546e1e",
90+
"sha256": "2641c27483aae72a816b71cadadacea33663b21f26fbb97d471135b27fc4312b",
91+
"sha1": "6646497ec98c9e326ed0487336740e3db773acab",
92+
"md5": "6562822e9868fbacf72f6e46fead76b3"
9393
}
9494
]
9595
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1dbad70673b153739d2007b7d99fc270
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
febb27a85825dd1aee4bd9a288b4d070411bd6c1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
bf1df376d05beb4494a7a8d726332023d150df003afd5543f3b00f195f16d06f
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1f4f76090f16d5b743340d94c9a5f2636326a1fe14f6ec2191453f7362fbebffa79abe5337740bd85b871e0b10ad15f2ce24aa1305c4960a5c10b22962d37191

repos/com/zly/aab/myGradlePlugin/1.0.0/myGradlePlugin-1.0.0.pom repos/com/zly/aab/myGradlePlugin/1.0.1/myGradlePlugin-1.0.1.pom

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<modelVersion>4.0.0</modelVersion>
1010
<groupId>com.zly.aab</groupId>
1111
<artifactId>myGradlePlugin</artifactId>
12-
<version>1.0.0</version>
12+
<version>1.0.1</version>
1313
<dependencies>
1414
<dependency>
1515
<groupId>org.ow2.asm</groupId>
@@ -38,7 +38,7 @@
3838
<dependency>
3939
<groupId>org.jetbrains</groupId>
4040
<artifactId>annotations</artifactId>
41-
<version>15.0</version>
41+
<version>16.0.1</version>
4242
<scope>runtime</scope>
4343
</dependency>
4444
</dependencies>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
6beff9a4d0ac8f54b8f0970238cd5b9a
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
7ee0aaae5f554816fe434be05d38668f058fca0a
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1dea6fd33d9bf07ed64c21ed219ca650c4acb89ae5c67b43bf358e28569a427a
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
7092f09c5f58f83910a1cb9c5c3bca6b2b219fee1fc740532e8cd2b17d822fd8fb7243367b96ea681a0a05cb3ada7b8ea36259d9e716c3ddf840db033b37e3b8

repos/com/zly/aab/myGradlePlugin/maven-metadata.xml

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
<groupId>com.zly.aab</groupId>
44
<artifactId>myGradlePlugin</artifactId>
55
<versioning>
6-
<latest>1.0.0</latest>
7-
<release>1.0.0</release>
6+
<latest>1.0.1</latest>
7+
<release>1.0.1</release>
88
<versions>
9-
<version>1.0.0</version>
9+
<version>1.0.1</version>
1010
</versions>
11-
<lastUpdated>20220825101836</lastUpdated>
11+
<lastUpdated>20220829062421</lastUpdated>
1212
</versioning>
1313
</metadata>
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
b4a5ecf2c57f337b98ac87819f924e65
1+
6a8c20916c601962c4810147c37088cb
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
c026e300ace2426d67cf11f013747a4499ab9c2b
1+
70dc2abc2eebdbd7eeeb2db8a43afec1935d1edf
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
b9f3f84b65161dcaecc2a67f17db19a9d60ad73d0bab09c737a34d2f97061a8e
1+
1b803b62625beaa132e4b1f0169f850550a2c96814c5ec4b151e7073c19bf49f
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
b7372b7da9b739c7d8971ef9bf6d4594fdff32e60c44bc23b298027c225dfa4259ef2033b076c141655f9fcdbc56055a4cb957a8485f07cb06466ccb88d382a1
1+
4d9d3b16994d25bf61b02345075ff561df8704c0ae400d7164ee96a1f9383e0639263e70385eb5cbfc5a4938dc37b30946b46da6476402dac0665ffe6c4f1b48

0 commit comments

Comments
 (0)