Skip to content

Commit fd5bf6b

Browse files
turanskyqwwdfsad
authored andcommitted
Separate 'RunR8' task
1 parent 63156a8 commit fd5bf6b

File tree

2 files changed

+49
-41
lines changed

2 files changed

+49
-41
lines changed

buildSrc/src/main/kotlin/RunR8.kt

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import org.gradle.api.tasks.InputFile
2+
import org.gradle.api.tasks.InputFiles
3+
import org.gradle.api.tasks.JavaExec
4+
import org.gradle.api.tasks.OutputDirectory
5+
import org.gradle.api.tasks.bundling.Zip
6+
import org.gradle.kotlin.dsl.get
7+
import org.gradle.kotlin.dsl.named
8+
import java.io.File
9+
10+
open class RunR8 : JavaExec() {
11+
12+
@OutputDirectory
13+
lateinit var outputDex: File
14+
15+
@InputFile
16+
lateinit var inputConfig: File
17+
18+
@InputFile
19+
val inputConfigCommon: File = File("testdata/r8-test-common.pro")
20+
21+
@InputFiles
22+
val jarFile: File = project.tasks.named<Zip>("jar").get().archivePath
23+
24+
init {
25+
classpath = project.configurations["r8"]
26+
main = "com.android.tools.r8.R8"
27+
}
28+
29+
override fun exec() {
30+
// Resolve classpath only during execution
31+
val arguments = mutableListOf(
32+
"--release",
33+
"--no-desugaring",
34+
"--output", outputDex.absolutePath,
35+
"--pg-conf", inputConfig.absolutePath
36+
)
37+
arguments.addAll(project.configurations["runtimeClasspath"].files.map { it.absolutePath })
38+
arguments.add(jarFile.absolutePath)
39+
40+
args = arguments
41+
42+
project.delete(outputDex)
43+
outputDex.mkdirs()
44+
45+
super.exec()
46+
}
47+
}

ui/kotlinx-coroutines-android/build.gradle.kts

+2-41
Original file line numberDiff line numberDiff line change
@@ -21,59 +21,20 @@ dependencies {
2121
"r8"("com.android.tools.build:builder:4.0.0-alpha06") // Contains r8-2.0.4-dev
2222
}
2323

24-
open class RunR8Task : JavaExec() {
25-
26-
@OutputDirectory
27-
lateinit var outputDex: File
28-
29-
@InputFile
30-
lateinit var inputConfig: File
31-
32-
@InputFile
33-
val inputConfigCommon: File = File("testdata/r8-test-common.pro")
34-
35-
@InputFiles
36-
val jarFile: File = project.tasks.named<Zip>("jar").get().archivePath
37-
38-
init {
39-
classpath = project.configurations["r8"]
40-
main = "com.android.tools.r8.R8"
41-
}
42-
43-
override fun exec() {
44-
// Resolve classpath only during execution
45-
val arguments = mutableListOf(
46-
"--release",
47-
"--no-desugaring",
48-
"--output", outputDex.absolutePath,
49-
"--pg-conf", inputConfig.absolutePath
50-
)
51-
arguments.addAll(project.configurations.runtimeClasspath.files.map { it.absolutePath })
52-
arguments.add(jarFile.absolutePath)
53-
54-
args = arguments
55-
56-
project.delete(outputDex)
57-
outputDex.mkdirs()
58-
59-
super.exec()
60-
}
61-
}
62-
6324
val optimizedDexDir = File(buildDir, "dex-optim/")
6425
val unOptimizedDexDir = File(buildDir, "dex-unoptim/")
6526

6627
val optimizedDexFile = File(optimizedDexDir, "classes.dex")
6728
val unOptimizedDexFile = File(unOptimizedDexDir, "classes.dex")
6829

69-
val runR8 = tasks.register<RunR8Task>("runR8") {
30+
val runR8 = tasks.register<RunR8>("runR8") {
7031
outputDex = optimizedDexDir
7132
inputConfig = file("testdata/r8-test-rules.pro")
7233

7334
dependsOn("jar")
7435
}
7536

76-
val runR8NoOptim = tasks.register<RunR8Task>("runR8NoOptim") {
37+
val runR8NoOptim = tasks.register<RunR8>("runR8NoOptim") {
7738
outputDex = unOptimizedDexDir
7839
inputConfig = file("testdata/r8-test-rules-no-optim.pro")
7940

0 commit comments

Comments
 (0)