From 5c73cdd97330740e0364574dee3a66ca80368f66 Mon Sep 17 00:00:00 2001 From: takahirom Date: Wed, 8 Jun 2022 11:16:05 +0900 Subject: [PATCH] Add compose compiler metrics option --- .../apps/nowinandroid/KotlinAndroid.kt | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt index 36f7e522d..76583e0eb 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt @@ -24,6 +24,7 @@ import org.gradle.api.plugins.ExtensionAware import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.getByType import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions +import java.io.File /** * Configure base Kotlin with Android options @@ -56,7 +57,7 @@ internal fun Project.configureKotlinAndroid( "-opt-in=kotlin.Experimental", // Enable experimental kotlinx serialization APIs "-opt-in=kotlinx.serialization.ExperimentalSerializationApi" - ) + ) + buildComposeMetricsParameters() // Set JVM target to 1.8 jvmTarget = JavaVersion.VERSION_1_8.toString() @@ -70,6 +71,26 @@ internal fun Project.configureKotlinAndroid( } } +private fun Project.buildComposeMetricsParameters(): List { + val metricParameters = mutableListOf() + val enableMetricsProvider = project.providers.gradleProperty("enableComposeCompilerMetrics") + val enableMetrics = (enableMetricsProvider.orNull == "true") + if (enableMetrics) { + val metricsFolder = File(project.buildDir, "compose-metrics") + metricParameters.add("-P") + metricParameters.add("plugin:androidx.compose.compiler.plugins.kotlin:metricsDestination=" + metricsFolder.absolutePath) + } + + val enableReportsProvider = project.providers.gradleProperty("enableComposeCompilerReports") + val enableReports = (enableReportsProvider.orNull == "true") + if (enableReports) { + val reportsFolder = File(project.buildDir, "compose-reports") + metricParameters.add("-P") + metricParameters.add("plugin:androidx.compose.compiler.plugins.kotlin:reportsDestination=" + reportsFolder.absolutePath) + } + return metricParameters +} + private fun CommonExtension<*, *, *, *>.kotlinOptions(block: KotlinJvmOptions.() -> Unit) { (this as ExtensionAware).extensions.configure("kotlinOptions", block) }