【问题标题】:Increment version on project build项目构建的增量版本
【发布时间】:2014-02-24 10:45:39
【问题描述】:

在 Android Studio 中,我在 build.gradle 中有关于应用程序版本的默认信息:

android {    
    defaultConfig {
        versionCode 24
        versionName "0.1 beta"
    }
}

如何在每次项目编译时自动增加versionCode

【问题讨论】:

    标签: android gradle android-studio android-gradle-plugin build.gradle


    【解决方案1】:

    引用my book:

    由于android:versionCode 是一个单调递增的整数, 自动化它的一种方法是在每次构建时简单地增加它。 虽然这看起来很浪费,但 20 亿次构建是 很多 次构建, 所以一个单独的开发者不太可能用完。同步这样的versionCode 整个团队的价值观会变得有点复杂,但对于个人而言 案例(开发人员、构建服务器等),使用 Groovy 非常可行。

    Gradle/HelloVersioning 示例项目使用version.properties 文件作为 版本信息:

    def versionPropsFile = file('version.properties')
    
    if (versionPropsFile.canRead()) {
        def Properties versionProps = new Properties()
    
        versionProps.load(new FileInputStream(versionPropsFile))
    
        def code = versionProps['VERSION_CODE'].toInteger() + 1
    
        versionProps['VERSION_CODE']=code.toString()
        versionProps.store(versionPropsFile.newWriter(), null)
    
        defaultConfig {
            versionCode code
            versionName "1.1"
            minSdkVersion 14
            targetSdkVersion 18
        }
    }
    else {
        throw new GradleException("Could not read version.properties!")
    }
    

    首先,我们尝试打开一个version.properties 文件,如果没有打开则失败 存在,需要开发者手动创建starter文件:

    VERSION_CODE=1
    

    当然,这个脚本的更健壮的实现可以处理这种情况,并且 为开发者提供初始值。

    脚本然后使用所示的读取自定义属性逻辑 在前面的部分[注意:本书中,不包括在这里]阅读现有的 值...但它将旧值增加 1 以获取要使用的新代码。 然后将修改后的代码写回之前的属性文件 在defaultConfig 块中应用。

    在这种情况下,脚本会抛出 GradleException 来停止构建,如果 version.properties 文件无法找到或无法找到 阅读。

    【讨论】:

    • 添加到 CommonsWare 的答案,如果你得到“无法读取 version.properties!”在your_project/app/version.properties 中手动创建一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 2013-08-11
    • 2012-08-29
    • 1970-01-01
    • 2017-02-18
    • 1970-01-01
    • 2012-03-24
    相关资源
    最近更新 更多