本想記在為知筆記里的痹升,可是 ubuntu 上為知筆記安裝太麻煩了
目的:為了確定每次版本出bug 能追蹤到具體的git 版本 和
git commit id(定位具體的提交點(diǎn))
QQ圖片20171209122754.png
今天第一次使用Markdown來(lái)寫(xiě)簡(jiǎn)書(shū)羡宙,無(wú)比的興奮與激動(dòng)啊闸昨,講講今天要實(shí)現(xiàn)的功能吧:使用 build.gradle 腳本實(shí)現(xiàn) Android版本號(hào)自動(dòng)生成 捅暴,及 關(guān)聯(lián) git 版本信息 和 commit id
最終效果(下篇博客將融合多渠道打包): v0.3.1_30a015e.apk
module: build.gradle
apply ...
//其實(shí)下面的幾個(gè)腳本語(yǔ)言都是用來(lái)執(zhí)行g(shù)it命令的
//第一個(gè)命令是獲取commit提交次數(shù),用來(lái)更新 versionCode
def cmd = 'git rev-list HEAD --first-parent --count'
def gitVersion = cmd.execute().text.trim().toInteger()
//第二個(gè)命令是獲取git版本信息(自定義的標(biāo)簽,也就是你在git上發(fā)行的版本tag)
//第三個(gè)命令是獲取git的 commit id 纱皆,之后截圖會(huì)展示(commit id是一個(gè)哈希值 ,很長(zhǎng)所以 short 是為了獲取它的短名)
def cmd2 = 'git describe --tags'
def cmd3 = 'git rev-parse --short HEAD'
//整合以上命令獲取的值 拼接成 apk 的文件名
def version = cmd2.execute().text.trim() + "_" + cmd3.execute().text.trim()
//定義時(shí)間 如果你想在版本號(hào)中添加時(shí)間信息可以使用一下方法
def releaseTime() {
return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC"))
}
android {
...
//配置自定義打包名稱(chēng) (這里有個(gè)坑 文末參考文檔我有提到,有關(guān)Android studio 3.0 preview 版本的問(wèn)題)
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${variant.versionName}.apk"
}
}
//multi-dex 異常歇父, 有則添加無(wú)則去除
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
其實(shí)這些命令 你都可以使用終端運(yùn)行查看 結(jié)果
不會(huì)的自行百度git 命令教程,我也不會(huì)再愈,誰(shuí)天天用git榜苫,哪記得住這么多
命令行查看git 相關(guān)信息
這是獲取你在git上發(fā)布的版本tag標(biāo)簽,一般標(biāo)簽都是 v*.*.* 例如:v0.3.1
查看遠(yuǎn)程倉(cāng)庫(kù)與本地tag 是否一致
這是我項(xiàng)目發(fā)行的版本
如果版本不一致 使用git 命令
//取回遠(yuǎn)程倉(cāng)庫(kù)與當(dāng)前commit id 一致的版本
git fetch --tag
參考文章: