每个 Android Gradle 构建环境:
我目前通过“readVersions”gradle 任务从本地 version.properties 文件中读取我的版本代码和版本名称。我正在为我的应用程序添加风味。这些口味需要不同的版本。所以我正在考虑将两个不同的 version.properties 文件放在风味特定的目录中(例如一个/version.properties,两个/version.properties),紧挨着风味特定的“res”和“src”目录。
我有一个 readVersions 任务:
task readVersions() {
def Properties versionProps = new Properties()
def versionPropsFile = file('version.properties')
if (versionPropsFile.exists())
versionProps.load(new FileInputStream(versionPropsFile))
def v_code = (versionProps['VERSION_CODE'] ?: "0").toInteger()
def v_name = versionProps['VERSION_NAME']
// Set
versionCode v_code
versionName v_name
}
project.afterEvaluate {
preBuild.dependsOn readVersions
}
我想要一个包含风味的新 readVersions 任务,以便我可以使用它来访问“风味”目录中的“version.properties”文件。
我努力了:
android.productFlavors.all{ flavor ->
task ("${flavor.name}_readVersions")<<{
def versionPropsFile = file(flavor.name+'/version.properties')
...
但是我不知道如何在“preBuild”步骤中 只让活动风味的任务运行。
从概念上讲,我想要这个:
project.afterEvaluate {
preBuild.dependsOn ${active_flavor}_readVersions
}
对于那些建议重组和寻找更简单解决方案的人。我的构建过程目前对这些 version.properties 文件有其他依赖项。我可以在两个地方定义版本代码和版本名称(例如在“风味”以及风味的 version.properties 文件中,但我真的想要 DRY 配置)