Android基于Demo构建自动生成基线配置文件的实现求助
解决方案
方案1:限制基线配置仅针对demo构建类型
直接在baselineProfile配置块中指定只针对demo构建类型生成基线,这样generateBaselineProfile任务就只会触发generateDemoBaselineProfile,不会执行其他构建类型的任务:
baselineProfile { saveInSrc = true mergeIntoMain = true automaticGenerationDuringBuild = true // 仅为demo构建类型生成基线配置 buildTypes = listOf("demo") }
配置完成后,运行./gradlew generateBaselineProfile时,Gradle只会执行generateDemoBaselineProfile任务,生成的基线文件会自动合并到app/src/main/generated/baselineProfiles/目录,完全不需要手动复制操作。
方案2:手动控制任务依赖与文件复制(灵活度更高)
如果需要保留其他构建类型的基线配置能力,只是在自动生成流程中只执行demo的任务,可以通过Gradle任务规则实现:
- 禁用非demo构建类型的基线生成任务,避免它们被触发:
tasks.withType<GenerateBaselineProfileTask>().configureEach { // 仅允许名称包含Demo的任务执行 enabled = name.contains("Demo") }
- 让根
generateBaselineProfile任务依赖generateDemoBaselineProfile:
tasks.named("generateBaselineProfile") { dependsOn("generateDemoBaselineProfile") }
- 添加自定义复制任务,将demo生成的基线文件同步到main目录(如果
mergeIntoMain不生效时使用):
tasks.register<Copy>("copyDemoBaselineToMain") { from("app/src/demo/generated/baselineProfiles/baseline-prof.txt") into("app/src/main/generated/baselineProfiles/") // 确保在demo基线生成任务完成后执行 dependsOn("generateDemoBaselineProfile") } // 让根任务依赖复制任务 tasks.named("generateBaselineProfile") { dependsOn("copyDemoBaselineToMain") }
运行./gradlew generateBaselineProfile时,只会执行demo的基线生成任务,随后自动将文件复制到main目录。
注意事项
- 方案1是官方插件原生支持的简洁方案,推荐优先使用。
- 方案2需注意路径要与你的项目结构完全匹配,避免因路径错误导致复制失败。
内容的提问来源于stack exchange,提问作者Semanticer
相关产品推荐
相关产品推荐

