From 5c73cdd97330740e0364574dee3a66ca80368f66 Mon Sep 17 00:00:00 2001 From: takahirom Date: Wed, 8 Jun 2022 11:16:05 +0900 Subject: [PATCH 1/3] 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) } From d3ffb1f806759d238baa7a84dce0f4b633082800 Mon Sep 17 00:00:00 2001 From: takahirom Date: Sat, 11 Jun 2022 17:36:27 +0900 Subject: [PATCH 2/3] Move compose metrics parameters to Android Compose script --- .../apps/nowinandroid/AndroidCompose.kt | 30 ++++++++++++++++++- .../apps/nowinandroid/KotlinAndroid.kt | 25 ++-------------- 2 files changed, 31 insertions(+), 24 deletions(-) diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/AndroidCompose.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/AndroidCompose.kt index b59ec5625..8f2500871 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/AndroidCompose.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/AndroidCompose.kt @@ -19,8 +19,8 @@ package com.google.samples.apps.nowinandroid import com.android.build.api.dsl.CommonExtension import org.gradle.api.Project import org.gradle.api.artifacts.VersionCatalogsExtension -import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.getByType +import java.io.File /** * Configure Compose-specific options @@ -38,5 +38,33 @@ internal fun Project.configureAndroidCompose( composeOptions { kotlinCompilerExtensionVersion = libs.findVersion("androidxCompose").get().toString() } + + kotlinOptions { + freeCompilerArgs = freeCompilerArgs + buildComposeMetricsParameters() + } } } + +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.toList() +} \ No newline at end of file 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 76583e0eb..ef9ec9072 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,7 +24,6 @@ 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 @@ -57,7 +56,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() @@ -71,26 +70,6 @@ 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) { +fun CommonExtension<*, *, *, *>.kotlinOptions(block: KotlinJvmOptions.() -> Unit) { (this as ExtensionAware).extensions.configure("kotlinOptions", block) } From 5290c0c188b696fdad059ebd19ea768a2e3d3faa Mon Sep 17 00:00:00 2001 From: takahirom Date: Sat, 11 Jun 2022 17:38:09 +0900 Subject: [PATCH 3/3] Add last blank line --- .../com/google/samples/apps/nowinandroid/AndroidCompose.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/AndroidCompose.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/AndroidCompose.kt index 8f2500871..cb5eb8bd3 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/AndroidCompose.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/AndroidCompose.kt @@ -67,4 +67,4 @@ private fun Project.buildComposeMetricsParameters(): List { ) } return metricParameters.toList() -} \ No newline at end of file +}