首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >项目构建增量版本

项目构建增量版本
EN

Stack Overflow用户
提问于 2014-02-24 10:45:39
回答 1查看 2.9K关注 0票数 4

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

代码语言:javascript
复制
android {    
    defaultConfig {
        versionCode 24
        versionName "0.1 beta"
    }
}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-24 11:10:29

引用my book

由于android:versionCode是一个单调递增的整数,因此自动化它的一种方法是在每次构建时简单地增加它。虽然这看起来很浪费,但是20亿的构建是大量的构建,所以一个单独的开发人员不太可能耗尽。跨团队同步这样的versionCode值将变得更加复杂,但是对于单个案例(开发人员、构建服务器等),使用Groovy显然是可行的。

Gradle/HelloVersioning示例项目使用一个version.properties文件作为版本信息的备份存储:

代码语言:javascript
复制
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文件,如果它不存在,则失败,这要求开发人员手动创建一个初学者文件:

代码语言:javascript
复制
VERSION_CODE=1

当然,这个脚本的更健壮的实现将处理这种情况,并为开发人员提供一个初始值。

然后,该脚本使用前面的注释中所示的读取自定义属性逻辑:书中未包括的读取现有值.但是,它会将旧值增加1,以获得使用新代码。然后将修改后的代码写回属性文件,然后应用到defaultConfig块中。

在这种情况下,如果无法找到或无法读取GradleException文件,脚本将抛出一个version.properties以停止构建。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21985496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档