上下文:此问题与使用Jetpack Compose for UI的Android应用项目有关,主要关注通过命令行生成Compose编译器指标。
我的根项目有gradle配置如下:
subprojects {
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
kotlinOptions {
// Trigger this with:
// ./gradlew assembleRelease -PenableComposeReports=true
if (project.findProperty("enableComposeReports") == "true") {
freeCompilerArgs += ["-P", "plugin:androidx.compose.compiler.plugins.kotlin:reportsDestination=" + rootProject.buildDir.absolutePath + "/compose_metrics/"]
freeCompilerArgs += ["-P", "plugin:androidx.compose.compiler.plugins.kotlin:metricsDestination=" + rootProject.buildDir.absolutePath + "/compose_metrics/"]
}
}
}
}
当我使用以下命令执行assembleRelease
gradle任务时:./gradlew assembleRelease -PenableComposeReports=true
、freeCompilerArgs
被适当地设置以生成Compose编译器度量。
现在,我想知道是否可以在执行gradle任务本身时通过CLI传递这些freeCompilerArgs
,而无需任何特定的gradle配置来生成Compose Compiler Metrics。
我正在尝试构建一个CLI工具,作为其功能的一部分生成Compose编译器指标,我希望能够在任何Jetpack Compose项目上运行它,无论gradle是否配置为生成Compose编译器指标(如上所述)。
可以通过CLI传递这些freeCompilerArgs吗?,类似于:
./gradlew assembleRelease -Pkotlin.compiler.arguments="plugin:androidx.compose.compiler.plugins.kotlin:reportsDestination=<path>”
如果没有,是否有其他方法可以通过CLI为任意项目生成Compose Compiler Metrics(它可能配置了Gradle来生成同样的数据)?
1条答案
按热度按时间az31mfrm1#
这个问题可以使用Gradle Init scripts解决。
初始化脚本(a.k.a. init脚本)类似于Gradle中的其他脚本。但是,这些脚本在构建开始之前运行。
因此,我们可以执行一个
gradle
task
沿着一个gradle
init script
,这可以配置gradle
来生成Compose编译器指标。并像执行
./gradlew assembleRelease -I init.gradle
一样执行gradle task
以生成Compose编译器指标。在多个不同的线程中提出这个问题后,这是迄今为止我对这个特定问题的唯一解决方案。
非常感谢Nikita Skvortsov在another thread中回答了这个问题,所有这些都归功于他们提出了这个解决方案。另外,感谢Björn Kautler for helping me,正确地设置了
init.gradle
脚本。