Skip to content

Commit d41e1da

Browse files
committed
buildSrc back
1 parent aea4ad6 commit d41e1da

33 files changed

+1084
-14
lines changed

app/build.gradle.kts

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
import com.android.build.api.instrumentation.FramesComputationMode
2+
import com.android.build.api.instrumentation.InstrumentationScope
3+
import com.engineer.plugin.transforms.FooClassVisitorFactory
4+
import com.engineer.plugin.transforms.tiger.TigerClassVisitorFactory
5+
import com.engineer.plugin.transforms.track.TrackClassVisitorFactory
6+
17
plugins {
28
id("com.android.application")
39
id("org.jetbrains.kotlin.android")
@@ -64,7 +70,9 @@ android {
6470
buildTypes {
6571
getByName("release") {
6672
isMinifyEnabled = false
67-
proguardFiles(getDefaultProguardFile("proguard-android.txt"), file("proguard-rules.pro"))
73+
proguardFiles(
74+
getDefaultProguardFile("proguard-android.txt"), file("proguard-rules.pro")
75+
)
6876
}
6977
getByName("debug") {
7078
// splits is a property; access via named API
@@ -189,18 +197,24 @@ dependencies {
189197

190198
// Remove androidComponents instrumentation transforms for now (migrating custom transforms to KTS requires more work).
191199
// If you need these transforms, we can port them carefully to the new AGP instrumentation API.
192-
// androidComponents {
193-
// onVariants(selector().all()) {
194-
// instrumentation.transformClassesWith(FooClassVisitorFactory::class.java, InstrumentationScope.PROJECT) {}
195-
// instrumentation.transformClassesWith(TrackClassVisitorFactory::class.java, InstrumentationScope.PROJECT) { param ->
196-
// param.trackOn = true
197-
// }
198-
// instrumentation.transformClassesWith(TigerClassVisitorFactory::class.java, InstrumentationScope.PROJECT) { param ->
199-
// param.tigerOn = true
200-
// }
201-
// instrumentation.setAsmFramesComputationMode(FramesComputationMode.COPY_FRAMES)
202-
// }
203-
// }
200+
androidComponents {
201+
onVariants(selector().all()) { variant ->
202+
variant.instrumentation.transformClassesWith(
203+
FooClassVisitorFactory::class.java, InstrumentationScope.PROJECT
204+
) {}
205+
variant.instrumentation.transformClassesWith(
206+
TrackClassVisitorFactory::class.java, InstrumentationScope.PROJECT
207+
) { param ->
208+
param.trackOn = true
209+
}
210+
variant.instrumentation.transformClassesWith(
211+
TigerClassVisitorFactory::class.java, InstrumentationScope.PROJECT
212+
) { param ->
213+
param.tigerOn = true
214+
}
215+
variant.instrumentation.setAsmFramesComputationMode(FramesComputationMode.COPY_FRAMES)
216+
}
217+
}
204218

205219
// apply Groovy script fragments (keep existing behavior)
206220
apply(from = file("../gradle/funs.gradle"))

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ plugins {
1212
// Project-wide version/SDK properties are now managed in the version catalog (gradle/libs.versions.toml)
1313

1414
tasks.register("clean", Delete::class) {
15-
delete(rootProject.buildDir)
15+
// delete(rootProject.buildDir)
1616
delete(rootDir.toString() + File.separator + project.property("apkDir"))
1717
delete(rootDir.toString() + File.separator + "repo")
1818
}

buildSrc/.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
/build
2+
/bin
3+
*.project
4+
*.settings/
5+
*.classpath
6+
.kotlin/

buildSrc/build.gradle

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
apply plugin: 'groovy'
2+
apply plugin: 'kotlin'
3+
//apply plugin: 'maven'
4+
5+
dependencies {
6+
// gradle sdk
7+
// groovy sdk
8+
implementation gradleApi()
9+
// implementation localGroovy()
10+
implementation 'org.jetbrains.kotlin:kotlin-stdlib:2.2.0'
11+
// 添加了这个,就可以看 Android Gradle 插件的源码了
12+
implementation 'com.android.tools.build:gradle-api:8.13.1'
13+
// implementation "org.jetbrains.kotlin:kotlin-script-runtime:1.3.40"
14+
implementation 'com.google.code.gson:gson:2.13.1'
15+
implementation 'com.android.tools:common:31.11.1'
16+
implementation 'commons-io:commons-io:2.19.0'
17+
// implementation 'org.ow2.asm:asm:7.0'
18+
implementation 'org.ow2.asm:asm-commons:9.8'
19+
implementation('org.ow2.asm:asm-util:9.8')
20+
}
21+
22+
repositories {
23+
google()
24+
mavenCentral()
25+
gradlePluginPortal()
26+
maven { url 'https://jitpack.io' }
27+
}
28+
29+
30+
31+
buildscript {
32+
// ext.kotlin_version = '1.9.22'
33+
repositories {
34+
mavenCentral()
35+
}
36+
dependencies {
37+
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:2.1.0"
38+
}
39+
}

buildSrc/gradle_doc.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<img src="/res/images/project_pro.webp" />
52.1 KB
Loading
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.engineer.plugin.utils
2+
3+
import org.gradle.api.Project
4+
5+
class GitTool {
6+
static String getGitBranch(Project project) {
7+
def out = new ByteArrayOutputStream()
8+
project.exec {
9+
it.commandLine("git")
10+
it.args("rev-parse", "--short", "HEAD")
11+
it.standardOutput = out
12+
}
13+
return out.toString().trim()
14+
}
15+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.engineer.plugin.utils
2+
3+
class JsonTool {
4+
5+
static void test() {
6+
print(" kotlin 可以调用 groovy 的代码吗?")
7+
// 好像不可以啊,
8+
}
9+
}
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package com.engineer.plugin
2+
3+
import com.android.build.api.instrumentation.FramesComputationMode
4+
import com.android.build.api.instrumentation.InstrumentationScope
5+
import com.android.build.api.variant.AndroidComponentsExtension
6+
import com.engineer.plugin.extensions.PhoenixExtension
7+
import com.engineer.plugin.extensions.TransformExtension
8+
import com.engineer.plugin.transforms.FooClassVisitorFactory
9+
import com.engineer.plugin.transforms.cat.CatClassVisitorFactory
10+
import com.engineer.plugin.transforms.tiger.TigerClassVisitorFactory
11+
import com.engineer.plugin.transforms.track.TrackClassVisitorFactory
12+
import org.gradle.api.Plugin
13+
import org.gradle.api.Project
14+
15+
/**
16+
* @author rookie
17+
* @since 11-29-2019
18+
*/
19+
abstract class PhoenixPlugin : Plugin<Project> {
20+
21+
override fun apply(project: Project) {
22+
project.extensions.create("phoenix", PhoenixExtension::class.java, project.objects)
23+
24+
println()
25+
println("===================================PhoenixPlugin===============begin==================")
26+
println()
27+
28+
29+
val androidComponents = project.extensions.getByType(AndroidComponentsExtension::class.java)
30+
val transformExtension = getTransformConfig(project)
31+
androidComponents.onVariants { variant ->
32+
variant.instrumentation.transformClassesWith(
33+
FooClassVisitorFactory::class.java, InstrumentationScope.ALL
34+
) {}
35+
variant.instrumentation.setAsmFramesComputationMode(FramesComputationMode.COPY_FRAMES)
36+
37+
variant.instrumentation.transformClassesWith(
38+
TrackClassVisitorFactory::class.java, InstrumentationScope.PROJECT
39+
) {
40+
it.trackOn.set(transformExtension.trackOn)
41+
}
42+
variant.instrumentation.setAsmFramesComputationMode(FramesComputationMode.COMPUTE_FRAMES_FOR_INSTRUMENTED_METHODS)
43+
44+
variant.instrumentation.transformClassesWith(
45+
CatClassVisitorFactory::class.java, InstrumentationScope.ALL
46+
) {
47+
it.catOn.set(transformExtension.catOn)
48+
}
49+
50+
variant.instrumentation.transformClassesWith(
51+
TigerClassVisitorFactory::class.java, InstrumentationScope.ALL
52+
) {
53+
it.tigerOn.set(transformExtension.tigerOn)
54+
}
55+
variant.instrumentation.setAsmFramesComputationMode(FramesComputationMode.COMPUTE_FRAMES_FOR_INSTRUMENTED_CLASSES)
56+
}
57+
58+
println()
59+
println("===================================PhoenixPlugin===============end==================")
60+
println()
61+
}
62+
63+
private fun getTransformConfig(project: Project): TransformExtension {
64+
val phoenix = project.extensions.findByType(PhoenixExtension::class.java)
65+
if (phoenix == null) {
66+
val transformExtension = TransformExtension()
67+
transformExtension.catOn = false
68+
transformExtension.tigerOn = false
69+
transformExtension.trackOn = false
70+
transformExtension.tigerClassList = HashMap()
71+
return transformExtension
72+
}
73+
return phoenix.transform
74+
}
75+
76+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.engineer.plugin.extensions
2+
3+
import org.gradle.api.Action
4+
import org.gradle.api.model.ObjectFactory
5+
6+
/**
7+
* @author rookie
8+
* @since 11-29-2019
9+
*/
10+
11+
open class PhoenixExtension(objectFactory: ObjectFactory) {
12+
var rename: RenameExtension = objectFactory.newInstance(RenameExtension::class.java)
13+
var transform: TransformExtension = objectFactory.newInstance(TransformExtension::class.java)
14+
15+
fun rename(action: Action<RenameExtension>) {
16+
action.execute(rename)
17+
}
18+
19+
fun transform(action: Action<TransformExtension>) {
20+
action.execute(transform)
21+
}
22+
23+
override fun toString(): String {
24+
return "PhoenixExtension(rename=$rename, settings=$transform)"
25+
}
26+
27+
28+
}

0 commit comments

Comments
 (0)