我想自动化android gradle版本控制,我的要求是

版本号版本名称

android - 自动增量VersionCode Gradle任务未按预期执行-LMLPHP

所以我已经在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

输出是不同的,为什么我会这样
android - 自动增量VersionCode Gradle任务未按预期执行-LMLPHP

最佳答案

在常规操作中,如果操作数的类型为BigDecimal,则除法将生成Integer;而在Java中,操作数的类型为int

fileVersionCode11时,结果为:

(fileVersionCode / 10)

在Java中转换为1,在Groovy中转换为1.1。为了解决此问题,只需添加(int)强制转换以修剪不必要的小数部分。

关于android - 自动增量VersionCode Gradle任务未按预期执行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38031235/

10-09 15:41