Android Gradle检测是否是运行时的发布版本?

时间:2016-05-20 08:10:29

标签: android gradle

我需要通过Gradle创建自动增量版本机制。为此,我使用this手册并创建两个文件

version.properties

#Fri May 20 11:04:03 EEST 2016
VERSION_BUILD=3
应用程序级别的

build.gradle:

buildTypes {

        debug{
            versionNameSuffix 'debug';
        }
        release {
            def versionPropsFile = file('version.properties')

            if (versionPropsFile.canRead()) {
                def Properties versionProps = new Properties()
                versionProps.load(new FileInputStream(versionPropsFile))
                def versionBuild = versionProps['VERSION_BUILD'].toInteger() + 1
                versionProps['VERSION_BUILD'] = versionBuild.toString()
                versionProps.store(versionPropsFile.newWriter(), null)

                versionNameSuffix = versionBuild;

            } else {
                throw new GradleException("Could not read version.properties!")
            }
            debuggable false
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
}

我的问题是:每次构建项目时VERSION_BUILD都会递增。不是Run,只是构建。并不重要我运行项目或创建一个签名的APK。

我的目标 - 仅在我生成签名APK时才增加版本。我怎么能这样做?

2 个答案:

答案 0 :(得分:5)

最后,我找到了解决方案。

List<String> runTasks = gradle.startParameter.getTaskNames();

for (String item : runTasks) {
    if (item.contains("assemble") && item.contains("Release")) {
           // this is a release task
    }
}

答案 1 :(得分:0)

从您的gradle文件中,每次运行rel版本时都会对应用进行签名。 那么为什么不使用versionCode而不是VERSION_BUILD,这样只会在你构建时发生。