pull/1576/merge
Jaehwa Noh 4 days ago committed by GitHub
commit e61efb988b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -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: Run the following command to get and analyse compose compiler metrics:
```bash ```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 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`.
added to [build/compose-metrics](build/compose-metrics).
For more information on Compose compiler metrics, see [this blog post](https://medium.com/androiddevelopers/jetpack-compose-stability-explained-79c10db270c8). For more information on Compose compiler metrics, see [this blog post](https://medium.com/androiddevelopers/jetpack-compose-stability-explained-79c10db270c8).

@ -18,7 +18,6 @@ package com.google.samples.apps.nowinandroid
import com.android.build.api.dsl.CommonExtension import com.android.build.api.dsl.CommonExtension
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.provider.Provider
import org.gradle.kotlin.dsl.assign import org.gradle.kotlin.dsl.assign
import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.dependencies
@ -45,20 +44,19 @@ internal fun Project.configureAndroidCompose(
} }
extensions.configure<ComposeCompilerGradlePluginExtension> { extensions.configure<ComposeCompilerGradlePluginExtension> {
fun Provider<String>.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() val isComposeCompilerReportsAndMetricsEnabled = providers.gradleProperty("enableComposeCompilerReportsAndMetrics").orNull.toBoolean()
.relativeToRootProject("compose-metrics") if (isComposeCompilerReportsAndMetricsEnabled) {
.let(metricsDestination::set) /**
* 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() metricsDestination = "compose-metrics".toRelativeDirectoryForMetricsAndReport()
.relativeToRootProject("compose-reports") reportsDestination = "compose-reports".toRelativeDirectoryForMetricsAndReport()
.let(reportsDestination::set) }
stabilityConfigurationFiles stabilityConfigurationFiles
.add(isolated.rootProject.projectDirectory.file("compose_compiler_config.conf")) .add(isolated.rootProject.projectDirectory.file("compose_compiler_config.conf"))

Loading…
Cancel
Save