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

原文地址:https://medium.com/@dmytrodanylyk/configuring-android-project-version-name-code-b168952f3323#.jiwlcv418

Version Name&Code

我們經(jīng)常會(huì)在android中以硬編碼的方式來配置versionName&versionCode。

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

上面的方法有一些弊端:

  • 你永遠(yuǎn)不知道哪一次的提交代表一個(gè)特定的版本
  • 每當(dāng)你需要增加versionCode和修改versionName的時(shí)候,你都必須要修改build.gradle文件。

如果你使用git作為你的源碼控制系統(tǒng)的話,他也可以幫助你生成android versionName和versionCode,這是一個(gè)常見的做法,使用git標(biāo)簽來作為新版本的發(fā)布。

git
git

Version Name

對于version name,我們可以使用git describe命令

  • 使用這個(gè)命令可以查看最近提交的標(biāo)記
  • 如果tag指向提交,那么只顯示tag

Example(a-b)

  1. 標(biāo)記一次特定的commit為tag1.0
    2.檢出這次提交
    3.輸入命令git describe
    4.輸出:1.0

正如你看到的,如果你在提交的使用用tag的話,那么在你輸入git describe命令的時(shí)候,就會(huì)輸出這個(gè)tag。

Example(a-c)

  • 標(biāo)記一次commit為tag 1.0
  • 添加更多的commits
  • 輸入命令git describe
  • 將會(huì)輸出 1.0-2-gdca226a

Version Code

對于versionCode,我們可以使用tag的總數(shù),因?yàn)槊恳淮蔚膅it tag指向一個(gè)版本,versionCode總是會(huì)比之前的那個(gè)版本大。

在上面的示例中,我們有3個(gè)tags,這個(gè)值將會(huì)被用作versioncode.

但是,我們不會(huì)為每一個(gè)中間版本創(chuàng)建一個(gè)tag,因此對于dev build,我們可以使用head提交的時(shí)間戳。

Groovy的方式使用git

要使用git,我建議使用一個(gè)grgit庫,創(chuàng)建具有以下內(nèi)容的腳本:

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

import org.ajoberstar: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")
}

把這些應(yīng)用到你自己的build.gradle文件中:

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

檢查一下version name和code是否生成正確,使用./gradlew printVersion命令,輸出如下:

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

最后在你的build.gradle中使用gitVersionName,gitVersionCode和gitVersionCodeTime變量:

productFlavors{
  dev{
    versionCode gitVersionCodeTime
    versionName gitVersionName
  }

  prod{
    versionCode gitVersionCodeTime
    versionName gitVersionName
  }
}

運(yùn)行程序驗(yàn)證app version

這種方法的優(yōu)點(diǎn):

  • 不需要修改build.gradle文件中的versionCode和versionName,可以自動(dòng)生成。
  • 可以輕松知道這次構(gòu)建是從哪次提交生成的。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,538評論 19 139
  • 簡評:優(yōu)雅的設(shè)置 Android 應(yīng)用的 versionCode & Name。 Android 開發(fā)者一定對下面...
    極小光閱讀 2,088評論 0 7
  • 說明:由于翻譯水平有限,可能會(huì)存在一些不恰當(dāng)?shù)牡胤?,歡迎指出,我會(huì)馬上改正。 原文地址:Version Name ...
    bincn閱讀 645評論 0 2
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,937評論 25 709
  • 萬維鋼 日課244丨一個(gè)道德哲學(xué)難題 今天咱們來體會(huì)一點(diǎn)思辨的樂趣,思考一個(gè)“哲學(xué)”問題。我理解,所謂哲學(xué)問題,就...
    alucardzhou閱讀 1,178評論 0 1

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