Android 項(xiàng)目配置之 Version Name & Code

簡評:優(yōu)雅的設(shè)置 Android 應(yīng)用的 versionCode & Name。

Android 開發(fā)者一定對下面的這兩個(gè)屬性很熟悉吧:

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

但直接這樣設(shè)置有兩個(gè)不好的地方:

  • 不知道這個(gè) version 對應(yīng)的是哪一個(gè) commit。
  • 每次修改 versionCode 和 versionName,都要更新 build.gradle 文件。

如果你使用 git 作為你的版本控制工具,這篇文章就可以幫助你快捷設(shè)置 versionName & versionCode。

Version Name

對于 versionName 我們可以用 git describe 命令。

a. git describe 會從當(dāng)前 commit 找到最近的一個(gè) tag。
b. 如果這個(gè) tag 就指向當(dāng)前 commit,那就直接輸出 tag。
c. 否則輸出之前的 tag + 中間間隔的 commit 數(shù) + 當(dāng)前的 commit ID。比如:1.0-2-gdc226a


Version Code
versionCode 是一個(gè)數(shù)字,通常每一個(gè) git tag 對應(yīng)一個(gè) version。


當(dāng)然,對于開發(fā)中的內(nèi)部版本是沒有必要每個(gè)都打 tag 的,這時(shí)我們可以用時(shí)間戳來作為 versionCode。


因此,可以創(chuàng)建一個(gè) 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"
productFlavors {
    dev {
        versionCode gitVersionCodeTime
        versionName gitVersionName
    }

    prod {
        versionCode gitVersionCode
        versionName gitVersionName
    }
}
Version Name: 1.0-2-gdca226a
Version Code: 2
Version Code Time: 1484407970

這樣來設(shè)置 versionCode 和 versionName 就可以很方便的分辨出每個(gè)版本對應(yīng)的 commit,也不用每次都手動去改 build.gradle 文件了。

原文:Configuring Android Project?—?Version Name & Code
歡迎關(guān)注知乎專欄「極光日報(bào)」,每天為 Makers 導(dǎo)讀三篇優(yōu)質(zhì)英文文章。

日報(bào)延伸閱讀
-改進(jìn) Android 項(xiàng)目的資源目錄
-正確配置你的 Android 項(xiàng)目

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容