Android build.gradle从另一个文件导入flavor

问题描述 投票:4回答:2

我已将产品Flavors放入另一个名为other.gradle的文件中,它看起来像这样:

project.ext.myflavors =  {
 mock {
     applicationId "com.mysite.mock"
 }

}

我能够成功访问我的build.gradle文件中的闭包,如下所示:

myflavors()

但我得到一个错误,模拟方法没有定义。

Error:Gradle DSL method not found: 'mock()'

有没有办法只从另一个文件定义代码并将代码本身导入构建文件?或者我如何从其他文件导入风味?

android gradle build.gradle
2个回答
3
投票

完全可以多次访问productFlavors。因此,在构建脚本包含的脚本中添加部分或全部样式将起作用。

创建一个Gradle脚本,其中包含决定应添加哪些flavor的逻辑:

if (someCondition()) {
    android {
        productFlavors {
            one {
                applicationId = 'com.example.oneapp'
            }
        }
    }
} else {
    android {
        productFlavors {
            two {
                applicationId = 'com.example.twoapp'
            }
        }
    }
}

现在,在构建脚本中包含此脚本。如果将它放在根项目的(子文件夹)下,则可以轻松地重用脚本。例如:

apply from: rootProject.file('build-scripts/flavor-picker.gradle')

请注意,您的IDE可能不会注意到味道选择脚本或gradle.properties的更改,因此如果您对它们进行更改,则可能必须手动重新导入Gradle文件以查看正确的可用任务集。


4
投票

构建风格可以在单独的文件(build_flavors.gradle)中定义,如下所示:

android {
    productFlavors {
        flavorA {
            // ...
        }
        flavorB {
            // ...
        }
    }
}

然后导入build.gradle

apply plugin: 'com.android.application'
apply from: './build_flavors.gradle'

android {
    // the rest of your android configuration
}
© www.soinside.com 2019 - 2024. All rights reserved.