我正在使用下面的代码将 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
}
}
}