versionCode以及VersionName用來對應(yīng)用做版本控制
versionCode
一個正整數(shù),用作內(nèi)部版本號。此數(shù)字僅用于確定某個版本是否比另一個版本更新:數(shù)字越大表示版本越新。這不是向用戶顯示的版本號;
Android 系統(tǒng)使用 versionCode 值來防止降級,方法是阻止用戶安裝 versionCode 低于設(shè)備上當前所安裝版本的 APK
應(yīng)用和發(fā)布服務(wù)不應(yīng)向用戶顯示此版本值。
VerionName
一個字符串,用作向用戶顯示的版本號。您可以將此設(shè)置指定為原始字符串或?qū)ψ址Y源的引用。
除了向用戶顯示之外,versionName 沒有其他用途。
定義versionName以及versionCode
android {
...
defaultConfig {
...
versionCode 2
versionName "1.1"
}
}
查詢版本信息
apk查詢
aapt dump badging xxxxx.apk
Android 框架提供了一個 API,可讓您向系統(tǒng)查詢有關(guān)應(yīng)用的版本信息。如需獲取版本信息,packageManager的getPackageInfo(String, int)方法
自動更新版本信息腳本
策略:通過commit次數(shù)定義
#common.gradle
gradle.allprojects{
ext {
master_version = 1
versionCount = getCommitCount()
voiceSupport_versionCode = getVersionCode()
voiceSupport_versionName = getVersionName()
}
}
def getCommitCount(){
println("---------- getCommitCount start ----------")
String resultStr = null;
Process p = Runtime.getRuntime().exec('git rev-list --count HEAD');
InputStream fis=p.getInputStream();
BufferedReader br=new BufferedReader( new InputStreamReader(fis,"GB2312"));
String line=null;
if((line=br.readLine())!=null) {
resultStr = line;
}
println("----------" + resultStr + "----------");
return Integer.parseInt(resultStr)
}
def getVersionCode(){
return master_version * 100000 + versionCount
}
def getVersionName(){
return master_version.toString() + "." + versionCount.toString()
}
#build.gradle
android {
defaultConfig {
...
versionCode voiceSupport_versionCode
versionName voiceSupport_versionName
...
}
}