所以我确信这是一个非常愚蠢的错误,但我需要你的帮助,因为我不是一个傻瓜专家。
TASK: 从文件中读取versionCode并向其添加+1并将其保存回来。
task executeOrderSixtySix {
def versionPropsFile = file('versionCodes.properties')
if (versionPropsFile.canRead()) {
def Properties versionProps = new Properties()
versionProps.load(new FileInputStream(versionPropsFile))
def versionNumber = versionProps['DEV_VERSION'].toInteger() + 1
versionProps['DEV_VERSION'] = versionNumber.toString()
versionProps.store(versionPropsFile.newWriter(), null)
// 'assembleDebug'
} else {
throw new GradleException("Nyeeeh on versionCodes.properties!")
}}
因此,当我必须进行内部删除时,我想首先运行此任务,将devVersion数字增加1,然后运行'汇编'构建所有工件的任务。
问题: 即使我只是同步摇篮文件导致增加的versionCode,此任务也会自行执行。
我不想在同步期间增加versionCode,只为QAdrop开发版本,当我还要组装每个APK时。
你能帮帮我,告诉我为什么这个任务被调用/执行以及我可以阻止它?
答案 0 :(得分:2)
您的任务块中需要一个doLast
块。 build.gradle文件是一个配置脚本,因此它在配置时读取为声明任务,并在执行时声明操作。
在doLast块之前或之后在任务中完成的任何操作都将在配置时运行。 doLast块中的代码本身在执行时运行。
task executeOrderSixtySix {
doLast {
def versionPropsFile = file('versionCodes.properties')
if (versionPropsFile.canRead()) {
def Properties versionProps = new Properties()
versionProps.load(new FileInputStream(versionPropsFile))
def versionNumber = versionProps['DEV_VERSION'].toInteger() + 1
versionProps['DEV_VERSION'] = versionNumber.toString()
versionProps.store(versionPropsFile.newWriter(), null)
// 'assembleDebug'
} else {
throw new GradleException("Nyeeeh on versionCodes.properties!")
}
}
}
参考:https://www.oreilly.com/learning/write-your-own-custom-tasks-in-gradle