繁体   English   中英

android studio gradle版本增量

[英]android studio gradle version increment

我正在尝试在gradle,android studio中设置一个漂亮的小版本脚本,每次我进行构建时版本名称都会增加,而版本代码只会在我发布版本时增加。 这可能吗?

我认为可以解决的是检查下面的if语句是否是一个版本。 但是我如何检查它是否是一个版本?

android {
compileSdkVersion 19
buildToolsVersion "19.0.3"

def versionPropsFile = file('version.properties')
def code
def name
def Properties versionProps

if (versionPropsFile.canRead()) {
    versionProps = new Properties()

    versionProps.load(new FileInputStream(versionPropsFile))

    code = versionProps['VERSION_CODE'].toInteger() + 1
    name = versionProps['VERSION_NAME'].toInteger() + 1

    versionProps['VERSION_CODE']=code.toString()
    versionProps['VERSION_NAME']=name.toString()
    versionProps.store(versionPropsFile.newWriter(), null)

    defaultConfig {
        versionCode code
        versionName "1.2." + name
        minSdkVersion 14
        targetSdkVersion 19
    }
} else {
    throw new GradleException("Could not read version.properties!")
}

signingConfigs {
    debug {
        ...
    }
    releaseKey {
        ...
    }
}

buildTypes {
    debug {
        debuggable true
        packageNameSuffix ".debug"
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        signingConfig signingConfigs.debug
    }

    release {
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        signingConfig signingConfigs.releaseKey
    }
}

lintOptions {
    abortOnError false
}
}

我想要像:

if (release) code = versionProps['VERSION_CODE'].toInteger() + 1
else code = versionProps['VERSION_CODE'].toInteger()

有什么建议?

经过几个小时的反复试验后,我想出了一个可以做到这一点的方法。

android {
compileSdkVersion 19
buildToolsVersion "19.0.3"

def versionPropsFile = file('version.properties')

if (versionPropsFile.canRead()) {
    def Properties versionProps = new Properties()

    versionProps.load(new FileInputStream(versionPropsFile))

    def value = 0

    def runTasks = gradle.startParameter.taskNames
    if ('assemble' in runTasks || 'assembleRelease' in runTasks || 'aR' in runTasks) {
        value = 1;
    }

    def code = versionProps['VERSION_CODE'].toInteger() + value
    def name = versionProps['VERSION_NAME'].toInteger() + 1

    versionProps['VERSION_CODE']=code.toString()
    versionProps['VERSION_NAME']=name.toString()
    versionProps.store(versionPropsFile.newWriter(), null)

    defaultConfig {
        versionCode code
        versionName "1.2." + name
        minSdkVersion 14
        targetSdkVersion 19
    }
} else {
    throw new GradleException("Could not read version.properties!")
}

signingConfigs {
    debug {
        ...
    }
    releaseKey {
        ...
    }
}

buildTypes {
    debug {
        ...
    }

    release {
        ...
    }
}

lintOptions {
    abortOnError false
}
}

所以我正在做的是检查我是否正在执行assebleRelease任务。 如果我是,我用+1增加versionCode。

希望这有助于其他任何人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM