合理配置Android项目——VersionName&Versi

2017-03-27  本文已影响0人  诚gong

Version Name & Version Code

开发者们经常使用硬编码来设置版本名 跟 版本号.
举个栗子

defaultConfig {
    ...
    versionCode 1
    versionName "1.0.0"
}

这样做的话有几个问题:

sample.png

版本名

对于版本名我们可以直接使用git describe命令

a. 这个命令从可获得的一个提交里面找到最新的tag
b. 如果这个tag指向这个提交,就显示这个唯一的tag
c. 否则它后的缀标签名将会是在标记对象顶部的附加提交数加上最近提交的缩写对象名称

例(a-b):

例a-b.png
  1. tag 1.0标记一次特定的提交
  2. 检查这次提交
  3. 执行git describe -tags
  4. 输出:1.0
    如你所见,如果你在最近这个带有tag的这个提交上执行git describe,它就是输出这个tag

例(a-c)

例a-c.png
  1. 用tag1.0标记一次提交
  2. 在添加两个提交
  3. 执行git describe -tags
  4. 输出:1.0-2-gdca226a

利用 git 提交的拼接 "1.0-2-gdca226a" 我们轻易就能知道做了哪次特定的提交

commit.png

版本号

我们可以使用标记的总数来标记版本号。因为每一个git tag标记了一个版本,所以下一个版本的版本号总会比之前的大。

图例.png

在上面的这个例子里面我们有3个标记。这个值将会用于我们的版本号。
然而我们不会为每一个中间版本设置一个标记,因此我们可以使用最近提交的时间戳作为开发构建的版本号

图例.png

在上图的例子中,最近版本提交的时间戳为1484407970 。这个值就是我们的版本号。

Groovy使用git的方法

我推荐使用一个库grgit来使用git。使用以下代码创建一个script-git-version.gradle 文件:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'org.ajoberstar:grgit:1.5.0'
    }
}

import org.ajoberstar.grgit.Grgit

ext {
    git = Grgit.open(currentDir: projectDir)
    gitVersionName = git.describe()
    gitVersionCode = git.tag.list().size()
    gitVersionCodeTime = git.head().time
}

task printVersion() {
    println("Version Name: $gitVersionName")
    println("Version Code: $gitVersionCode")
    println("Version Code Time: $gitVersionCodeTime")
}

在你的build.gradle文件中添加:

apply plugin: 'com.android.application'
apply from: "$project.rootDir/tools/script-git-version.gradle"

运行gradle命令 ./gradlew pritVersion 来检查是否正确生成了版本名字跟版本号,输出:

Version Name: 1.0-2-gdca226a
Version Code: 2
Version Code Time: 1484407970

最终我们就能在 build.gradle 文件中使用gtiVersionName, gitVersionCode 跟gitVersionCodeTime 变量了。

productFlavors {
    dev {
        versionCode gitVersionCodeTime
        versionName gitVersionName
    }

    prod {
        versionCode gitVersionCode
        versionName gitVersionName
    }
}

运行项目,检查 app 版本号

图例.png

这种方法的好处是:

Note: 你可以尝试更多的版本名:包括分支名,时间戳等
原文链接 :https://hackernoon.com/configuring-android-project-version-name-code-b168952f3323#.m6t1xca9l

上一篇下一篇

猜你喜欢

热点阅读