Android配置productFlavors时Baseline Profile构建失败如何解决
问题原因
添加产品风味后,benchmark测试模块依赖主app模块时,仅声明了匹配benchmark构建类型、对应AGP版本的运行时组件要求,没有指定要匹配的产品风味。此时devBenchmarkRuntimeElements和liveBenchmarkRuntimeElements两个变体都满足已声明的匹配规则,Gradle无法自动选择,因此构建失败。
解决方法
根据实际需求二选一即可:
方法一:指定默认匹配的产品风味
如果只需要针对单个风味跑基准测试、生成Baseline Profiles,在benchmark模块的build.gradle文件中添加配置,明确指定默认匹配的风味:
android { // 原有配置保持不变 defaultConfig { // 和app模块的风味维度对应,第二个参数填你要测试的风味名 missingDimensionStrategy 'default', 'live' // 若要测试dev风味,将上面的'live'改为'dev'即可 } }
如果benchmark模块本身需要区分风味,直接在该模块下配置和app模块同维度、同名的产品风味,Gradle会自动完成同名风味的匹配。
方法二:执行对应风味的专属测试任务
如果需要为两个风味分别跑测试、生成对应基线配置,不需要额外加上述配置,直接执行带风味标识的专属任务即可,任务名遵循connected<风味名首字母大写>BenchmarkAndroidTest规则:
- 测试dev风味:执行命令
./gradlew :benchmark:connectedDevBenchmarkAndroidTest - 测试live风味:执行命令
./gradlew :benchmark:connectedLiveBenchmarkAndroidTest
执行对应风味的专属任务时,Gradle会自动匹配对应变体,不会出现选择冲突。
补充说明
- Baseline Profiles建议针对正式发布的生产风味(即示例中的live风味)生成,保证规则匹配正式包的代码混淆、优化逻辑,性能提升效果最准确。
- 后续新增产品风味时,要么在benchmark模块补充对应的
missingDimensionStrategy规则,要么直接执行对应风味命名的专属测试任务即可。
内容的提问来源于stack exchange,提问作者TRose
相关产品推荐
相关产品推荐

