diff --git a/README.md b/README.md index 1e2dfde17..1c3cafad6 100644 --- a/README.md +++ b/README.md @@ -193,11 +193,10 @@ Then copy the resulting baseline profile from the emulator to [`app/src/main/bas Run the following command to get and analyse compose compiler metrics: ```bash -./gradlew assembleRelease -PenableComposeCompilerMetrics=true -PenableComposeCompilerReports=true +./gradlew assembleRelease -PenableComposeCompilerReportsAndMetrics=true --rerun-tasks ``` -The reports files will be added to [build/compose-reports](build/compose-reports). The metrics files will also be -added to [build/compose-metrics](build/compose-metrics). +The reports files will be added to `build/module-name/compose-reports`, and the metrics files will also be added to `build/module-name/compose-metrics`. For more information on Compose compiler metrics, see [this blog post](https://medium.com/androiddevelopers/jetpack-compose-stability-explained-79c10db270c8). 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 3d050d86b..f5db2dcd3 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 @@ -18,7 +18,6 @@ package com.google.samples.apps.nowinandroid import com.android.build.api.dsl.CommonExtension import org.gradle.api.Project -import org.gradle.api.provider.Provider import org.gradle.kotlin.dsl.assign import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies @@ -45,20 +44,19 @@ internal fun Project.configureAndroidCompose( } extensions.configure { - fun Provider.onlyIfTrue() = flatMap { provider { it.takeIf(String::toBoolean) } } - fun Provider<*>.relativeToRootProject(dir: String) = map { - isolated.rootProject.projectDirectory - .dir("build") - .dir(projectDir.toRelativeString(rootDir)) - }.map { it.dir(dir) } - project.providers.gradleProperty("enableComposeCompilerMetrics").onlyIfTrue() - .relativeToRootProject("compose-metrics") - .let(metricsDestination::set) + val isComposeCompilerReportsAndMetricsEnabled = providers.gradleProperty("enableComposeCompilerReportsAndMetrics").orNull.toBoolean() + if (isComposeCompilerReportsAndMetricsEnabled) { + /** + * Transform a [String] into a Directory where the `compose-metrics` and `compose-reports` + * being written, such as `build/modules-name/String`. + */ + fun String.toRelativeDirectoryForMetricsAndReport() = + isolated.rootProject.projectDirectory.dir("build/${projectDir.toRelativeString(rootDir)}/$this") - project.providers.gradleProperty("enableComposeCompilerReports").onlyIfTrue() - .relativeToRootProject("compose-reports") - .let(reportsDestination::set) + metricsDestination = "compose-metrics".toRelativeDirectoryForMetricsAndReport() + reportsDestination = "compose-reports".toRelativeDirectoryForMetricsAndReport() + } stabilityConfigurationFiles .add(isolated.rootProject.projectDirectory.file("compose_compiler_config.conf"))