versionCode以及VersionName用来对应用做版本控制
versionCode
一个正整数,用作内部版本号。此数字仅用于确定某个版本是否比另一个版本更新:数字越大表示版本越新。这不是向用户显示的版本号;
Android 系统使用 versionCode 值来防止降级,方法是阻止用户安装 versionCode 低于设备上当前所安装版本的 APK
应用和发布服务不应向用户显示此版本值。
VerionName
一个字符串,用作向用户显示的版本号。您可以将此设置指定为原始字符串或对字符串资源的引用。
除了向用户显示之外,versionName 没有其他用途。
定义versionName以及versionCode
android {
...
defaultConfig {
...
versionCode 2
versionName "1.1"
}
}
查询版本信息
apk查询
aapt dump badging xxxxx.apk
Android 框架提供了一个 API,可让您向系统查询有关应用的版本信息。如需获取版本信息,packageManager的getPackageInfo(String, int)方法
自动更新版本信息脚本
策略:通过commit次数定义
#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
...
}
}
网友评论