这是对this的一个后续问题。
我想“知道”在执行Gradle build.gradle
文件期间可以从哪个分支构建Android应用程序,并将分支名称添加到我的应用程序的versionName
。
这是我天真的做法:
apply plugin: 'android'
def branch ="test";
android {
compileSdkVersion 22
buildToolsVersion '22.0.0'
// ..
buildTypes {
debug {
minifyEnabled false;
applicationIdSuffix ".debug"
versionNameSuffix " branch: " + "$branch"
debuggable true
signingConfig signingConfigs.debug
}
}
}
task setArgs << {
branch = "$word1"
}
task showArgs << {
println "$branch"
}
执行时:
gradlew setArgs -Pword1=mybranch showArgs
设置分支变量,并在执行showArgs时在控制台中记录“mybranch”。
但是当我执行
时gradlew setArgs -Pword1=mybranch build
分支变量仍然是默认的字符串“test”,因此在versionNameSuffix
中无用。
让这项工作最好的方法是什么?
答案 0 :(得分:2)
那是因为行
versionNameSuffix " branch: " + "$branch"
在配置阶段执行,此时配置了所有任务。
然后,当这个阶段完成并且gradle知道所有任务及其依赖关系时,执行setArgs,并执行以下行:
branch = "$word1"
您可以简单地删除setArgs任务并执行
versionNameSuffix " branch: $word1"
或者,如果您希望分支的默认值为&#34; test&#34;当没有传递属性word1时:
versionNameSuffix(' branch: ' + (project.hasProperty('word1') ? project.property('word1') : 'test'))
答案 1 :(得分:0)
我认为更好的方法是使用gradle.properties
文件来存储分支名称 - 这样,无论何时调用Gradle,都不必提供它。
<强>的build.gradle:强>
apply plugin: 'android'
android {
compileSdkVersion 22
buildToolsVersion '22.0.0'
// ..
buildTypes {
debug {
minifyEnabled false;
applicationIdSuffix ".debug"
versionNameSuffix " branch: " + "$branch"
debuggable true
signingConfig signingConfigs.debug
}
}
}
<强> gradle.properties 强>
branch=mybranch