我想自动化android gradle版本控制,我的要求是
版本号版本名称
所以我已经在Java应用程序中运行过代码
码:
public static void main(String[] args) {
int fileVersionCode = 1;
String fileVersionName;
for (int i = 0; i < 200; i++) {
if (fileVersionCode <= 10) {
fileVersionName = "1." + (fileVersionCode - 1);
} else if(fileVersionCode>=20 && fileVersionCode%10 ==0) {
fileVersionName = ( (fileVersionCode / 10)) + ".9";
}else {
fileVersionName = (1 + (fileVersionCode / 10)) + "." +( (fileVersionCode % 10)-1);
}
System.out.println(fileVersionCode+" "+fileVersionName);
fileVersionCode++;
}
}
而且我的代码按预期工作,但对于相同的代码却有好处
task firstTask {
doFirst {
int fileVersionCode = 1;
String fileVersionName;
for (int i = 0; i < 200; i++) {
if (fileVersionCode <= 10) {
fileVersionName = "1." + (fileVersionCode - 1);
} else if(fileVersionCode>=20 && fileVersionCode%10 ==0) {
fileVersionName = ( (fileVersionCode / 10)) + ".9";
}else {
fileVersionName = (1 + (fileVersionCode / 10)) + "." +( (fileVersionCode % 10)-1);
}
System.out.println(fileVersionCode+" "+fileVersionName);
fileVersionCode++;
}
}
doLast{
// println 'firstTask doLast'
}
}
运行:> gradlew firstTask
输出是不同的,为什么我会这样
最佳答案
在常规操作中,如果操作数的类型为BigDecimal
,则除法将生成Integer
;而在Java中,操作数的类型为int
。
当fileVersionCode
为11
时,结果为:
(fileVersionCode / 10)
在Java中转换为
1
,在Groovy中转换为1.1
。为了解决此问题,只需添加(int)
强制转换以修剪不必要的小数部分。关于android - 自动增量VersionCode Gradle任务未按预期执行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38031235/