【问题标题】:android studio gradle version incrementandroid studio gradle 版本增量
【发布时间】:2014-06-24 07:54:27
【问题描述】:

我正在尝试在 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 gradle android-studio android-gradle-plugin


    【解决方案1】:

    因此,经过几个小时的反复试验,我找到了一种可以做到这一点的方法。

    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。

    希望这对其他人有所帮助。

    【讨论】:

    • 我们可以看看你的 version.properties 文件吗
    • 我知道里面有什么,但只是为了确定
    • 在那里检查我的答案,它更详细一点
    • 啊,谢谢!即使文件以这种方式存在,如果它不存在它创建的文件,你也会过度写入文件
    猜你喜欢
    • 2016-04-08
    • 2015-11-27
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 2021-07-06
    • 1970-01-01
    相关资源
    最近更新 更多