我在我的Android项目build.gradle中声明了这个函数:
def remoteGitVertsion() {
def jsonSlurper = new JsonSlurper()
def object = jsonSlurper.parse(new URL("https://api.github.com/repos/github/android/commits"))
assert object instanceof List
object[0].sha
}
这种味道:
android {
...
productFlavors {
internal {
def lastRemoteVersion = remoteGitVersion()
buildConfigField "String", "LAST_REMOTE_VERSION", "\"" + lastRemoteVersion + "\""
}
...
}
...
}
现在,由于gradle声明性质,每次构建项目时都会执行remoteGitVersion函数,无论构建风格是内部还是其他内容都无关紧要。因此,消耗了github API调用配额,过了一会儿,我收到一条很好的禁止消息。
我该如何避免这种情况?是否可以仅在选定的风味是正确的时才执行该功能?
答案 0 :(得分:1)
从这里引用:
回顾一下:
task fetchGitSha << {
android.productFlavors.internal {
def lastRemoteVersion = remoteGitVersion()
buildConfigField "String", "LAST_REMOTE_VERSION", "\"" + lastRemoteVersion + "\""
}
}
在您的情况下,您可以使用assembleInternalDebug
挂钩。
tasks.whenTaskAdded { task ->
if(task.name == 'assembleInternalDebug') {
task.dependsOn fetchGitSha
}
}
productFlavors {
internal {
# no buildConfigField here
}
}
希望有所帮助。