如何为多风味维度的Android应用各变体配置baseline-prof.txt?
为Android多风味变体配置专属baseline-prof.txt文件
要让每个风味变体的baseline-prof.txt被Release构建识别,你需要在模块的build.gradle(或build.gradle.kts)中,通过AGP的baselineProfiles配置块为每个变体指定对应的基线文件路径。以下是具体实现步骤:
1. 规范文件存放路径
将每个变体的基线文件放在对应风味目录的baselineProfiles子文件夹下,例如:
- 变体
fooBar的文件路径:/app/src/fooBar/baselineProfiles/baseline-prof.txt - 默认 fallback 文件路径(可选):
/app/src/main/baselineProfiles/baseline-prof.txt
2. 配置Gradle脚本
根据你使用的DSL类型(Groovy或Kotlin),添加以下配置:
Groovy DSL(build.gradle)
android { // 已有的风味、构建类型配置保持不变 productFlavors { foo { /* 你的风味配置 */ } bar { /* 你的风味配置 */ } // 更多风味... } buildTypes { release { isMinifyEnabled = true // 配置基线文件来源 baselineProfiles { onVariants { variant -> // 获取当前变体的风味名称(多维度变体自动拼接为组合名,如fooBar) def flavorName = variant.flavorName // 定位变体专属的基线文件 def variantProfile = file("src/${flavorName}/baselineProfiles/baseline-prof.txt") if (variantProfile.exists()) { // 加载变体专属文件 from(variantProfile) } else { // 变体无专属文件时,回退到main目录的默认文件 from(file("src/main/baselineProfiles/baseline-prof.txt")) } } } } } }
Kotlin DSL(build.gradle.kts)
android { // 已有的风味、构建类型配置保持不变 productFlavors { create("foo") { /* 你的风味配置 */ } create("bar") { /* 你的风味配置 */ } // 更多风味... } buildTypes { release { isMinifyEnabled = true // 配置基线文件来源 baselineProfiles { onVariants { variant -> // 获取当前变体的风味名称(多维度变体自动拼接为组合名,如fooBar) val flavorName = variant.flavorName // 定位变体专属的基线文件 val variantProfile = file("src/${flavorName}/baselineProfiles/baseline-prof.txt") if (variantProfile.exists()) { // 加载变体专属文件 from(variantProfile) } else { // 变体无专属文件时,回退到main目录的默认文件 from(file("src/main/baselineProfiles/baseline-prof.txt")) } } } } } }
3. 适配多风味维度场景
如果你的应用使用多个风味维度(比如维度1: foo/bar + 维度2: free/premium),变体名称会自动组合为fooFree、barPremium等,对应的文件路径只需保持src/[组合风味名]/baselineProfiles/baseline-prof.txt即可,上述Gradle配置会自动识别组合后的名称。
注意事项
- 确保你的AGP版本在7.4及以上,
baselineProfiles的变体API在该版本后才稳定支持。 - 执行Release构建前,可通过
./gradlew :app:variantNameReleaseBaselineProfiles任务验证文件是否被正确加载。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

