From 78a8bab721a9eb20840b71459c775759132f7aaa Mon Sep 17 00:00:00 2001 From: Victor Turansky Date: Sat, 2 May 2020 19:52:56 +0300 Subject: [PATCH 1/2] Separate 'RunR8' task --- buildSrc/src/main/kotlin/RunR8.kt | 47 +++++++++++++++++++ .../build.gradle.kts | 43 +---------------- 2 files changed, 49 insertions(+), 41 deletions(-) create mode 100644 buildSrc/src/main/kotlin/RunR8.kt diff --git a/buildSrc/src/main/kotlin/RunR8.kt b/buildSrc/src/main/kotlin/RunR8.kt new file mode 100644 index 0000000000..fc91dc0a57 --- /dev/null +++ b/buildSrc/src/main/kotlin/RunR8.kt @@ -0,0 +1,47 @@ +import org.gradle.api.tasks.InputFile +import org.gradle.api.tasks.InputFiles +import org.gradle.api.tasks.JavaExec +import org.gradle.api.tasks.OutputDirectory +import org.gradle.api.tasks.bundling.Zip +import org.gradle.kotlin.dsl.get +import org.gradle.kotlin.dsl.named +import java.io.File + +open class RunR8 : JavaExec() { + + @OutputDirectory + lateinit var outputDex: File + + @InputFile + lateinit var inputConfig: File + + @InputFile + val inputConfigCommon: File = File("testdata/r8-test-common.pro") + + @InputFiles + val jarFile: File = project.tasks.named("jar").get().archivePath + + init { + classpath = project.configurations["r8"] + main = "com.android.tools.r8.R8" + } + + override fun exec() { + // Resolve classpath only during execution + val arguments = mutableListOf( + "--release", + "--no-desugaring", + "--output", outputDex.absolutePath, + "--pg-conf", inputConfig.absolutePath + ) + arguments.addAll(project.configurations["runtimeClasspath"].files.map { it.absolutePath }) + arguments.add(jarFile.absolutePath) + + args = arguments + + project.delete(outputDex) + outputDex.mkdirs() + + super.exec() + } +} diff --git a/ui/kotlinx-coroutines-android/build.gradle.kts b/ui/kotlinx-coroutines-android/build.gradle.kts index 4be32fc5c6..49c6497fdc 100644 --- a/ui/kotlinx-coroutines-android/build.gradle.kts +++ b/ui/kotlinx-coroutines-android/build.gradle.kts @@ -25,59 +25,20 @@ dependencies { "r8"("com.android.tools.build:builder:4.0.0-alpha06") // Contains r8-2.0.4-dev } -open class RunR8Task : JavaExec() { - - @OutputDirectory - lateinit var outputDex: File - - @InputFile - lateinit var inputConfig: File - - @InputFile - val inputConfigCommon: File = File("testdata/r8-test-common.pro") - - @InputFiles - val jarFile: File = project.tasks.named("jar").get().archivePath - - init { - classpath = project.configurations["r8"] - main = "com.android.tools.r8.R8" - } - - override fun exec() { - // Resolve classpath only during execution - val arguments = mutableListOf( - "--release", - "--no-desugaring", - "--output", outputDex.absolutePath, - "--pg-conf", inputConfig.absolutePath - ) - arguments.addAll(project.configurations.runtimeClasspath.files.map { it.absolutePath }) - arguments.add(jarFile.absolutePath) - - args = arguments - - project.delete(outputDex) - outputDex.mkdirs() - - super.exec() - } -} - val optimizedDexDir = File(buildDir, "dex-optim/") val unOptimizedDexDir = File(buildDir, "dex-unoptim/") val optimizedDexFile = File(optimizedDexDir, "classes.dex") val unOptimizedDexFile = File(unOptimizedDexDir, "classes.dex") -val runR8 = tasks.register("runR8") { +val runR8 = tasks.register("runR8") { outputDex = optimizedDexDir inputConfig = file("testdata/r8-test-rules.pro") dependsOn("jar") } -val runR8NoOptim = tasks.register("runR8NoOptim") { +val runR8NoOptim = tasks.register("runR8NoOptim") { outputDex = unOptimizedDexDir inputConfig = file("testdata/r8-test-rules-no-optim.pro") From 37b4b2f47f0f8a7b279c82c3bd5bf3d6f35732de Mon Sep 17 00:00:00 2001 From: Victor Turansky Date: Fri, 8 May 2020 16:33:23 +0300 Subject: [PATCH 2/2] Avoid task name duplication --- ui/kotlinx-coroutines-android/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/kotlinx-coroutines-android/build.gradle.kts b/ui/kotlinx-coroutines-android/build.gradle.kts index 49c6497fdc..50164299ae 100644 --- a/ui/kotlinx-coroutines-android/build.gradle.kts +++ b/ui/kotlinx-coroutines-android/build.gradle.kts @@ -31,14 +31,14 @@ val unOptimizedDexDir = File(buildDir, "dex-unoptim/") val optimizedDexFile = File(optimizedDexDir, "classes.dex") val unOptimizedDexFile = File(unOptimizedDexDir, "classes.dex") -val runR8 = tasks.register("runR8") { +val runR8 by tasks.registering(RunR8::class) { outputDex = optimizedDexDir inputConfig = file("testdata/r8-test-rules.pro") dependsOn("jar") } -val runR8NoOptim = tasks.register("runR8NoOptim") { +val runR8NoOptim by tasks.registering(RunR8::class) { outputDex = unOptimizedDexDir inputConfig = file("testdata/r8-test-rules-no-optim.pro")