我正在使用下面的代码将Jenkins BUILD_NUMBER放入Build Config对象。
我希望能够从gradle.properties中默认这个值,但我一直遇到困难。 从文档来看,似乎变量只是互相覆盖,但是从这个android conext里面我无法访问任何变量......所以我必须使用System.getenv()......
android{
....
defaultConfig{
ext.env = System.getenv()
ext.buildNumber = env.BUILD_NUMBER?.toInteger()
ext.buildId = env.BUILD_ID
println "Build Number: $buildNumber"
println "Build Id: $buildId"
buildConfig "public final static int BUILD_NUMBER = $buildNumber;"
buildConfig 'public final static String BUILD_ID = "' + ext.buildId + '";'
}
}
更新:在玩了这个之后,我意识到当在android {}内部时,我可以访问build.gradle中定义的变量,但不能访问gradle.properties中的变量。
也许有一个技巧可以达到这个范围,但我还没有找到它。
例如:如果我的gradle.properties中有一个变量“foo = bar”,这是我的build.gradle
def foo2="bar2"
println foo2 // works
println foo // works
android{
println foo2 // works
println foo // works
productFlavors {
println foo2 // works
println foo // works
tablet{
println foo2 // works
println foo // blows up
}
}
}