用了git打包方法,總感覺比原來複雜的多,而且容易出錯。先說說怎麼打包吧!
先看看命令符這個是複製別人的:
apply ...
//其實下面的幾個腳本語言都是用來執行git命令的
//第一個命令是獲取commit提交次數,用來更新 versionCode
def cmd = 'git rev-list HEAD --first-parent --count'
def gitVersion = cmd.execute().text.trim().toInteger()
//第二個命令是獲取git版本信息(自定義的標籤,也就是你在git上發行的版本tag)
//第三個命令是獲取git的 commit id ,之後截圖會展示(commit id是一個哈希值 ,很長所以 short 是爲了獲取它的短名)
def cmd2 = 'git describe --tags'
def cmd3 = 'git rev-parse --short HEAD'
//整合以上命令獲取的值 拼接成 apk 的文件名
def version = cmd2.execute().text.trim() + "_" + cmd3.execute().text.trim()
//定義時間 如果你想在版本號中添加時間信息可以使用一下方法
def releaseTime() {
return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC"))
}
這個是再Android下的gradle文件裏面。
而再這裏是新建的gradle文件:
//獲取指定文件路徑下的文件,在當前分支上的提交總次數
/**
* 獲取指定文件路徑下的文件,在當前分支上的提交總次數
* */
def getVersionCode(String path) {
def cmd = "git rev-list --all --count HEAD"
try {
def ver = cmd.execute().text.trim().toInteger()
if (ver <= 0)//versionCode必須是正整數
return 1
return (ver + 40)
} catch (Exception ex) {
println(ex.getStackTrace())
return 1
}
}
//獲取版本描述信息
def getVersionName(String path) {
def version = [path, '0.0.1', '1', ''] as String[]
try {
def cmd = "git describe --tags --match ${path}*"
def res = cmd.execute().text.replace(path, '').trim().split('-')
for (int i = 0; i < res.length; i++)
if (res[i] != "")
version[i] = res[i]
if (version[3].length() > 1)
version[3] = '-' + version[3].substring(1)
} catch (Exception ex) {
println(ex.getStackTrace())
}
return version
}
def getCurDate(String format, String timeZone) {
try {
return new Date().format(format, TimeZone.getTimeZone(timeZone))
} catch (Exception ex) {
println(ex.getStackTrace())
return 'null'
}
}
ext {
getVersionCode = this.&getVersionCode
getVersionName = this.&getVersionName
getCurDater = this.&getCurDate
}
兩個差不多的
這個自定義的gradle文件需要apply 再project.gradle文件中
apply from: '自定義文件名字.gradle'
defaultConfig {
applicationId "****"
minSdkVersion rootProject.ext.androidMinSdkVersion
targetSdkVersion rootProject.ext.androidTargetSdkVersion
versionCode rootProject.ext.getVersionCode('')
versionName rootProject.ext.getVersionName('自定義name')
multiDexEnabled true
ndk { // 兼容64位手機
abiFilters 'armeabi', 'x86', "armeabi-v7a", "mips"
}
}
這裏要特別注意,每次提交都是增加tag 數+1,但版本號不會增加。
這裏修改版本名字!,這裏不建議經常new tag 版本都是新增了的!!!