Android Studio使用gradle实现VersionCode VersionName自动更新
注意,使用Android Studio加gradle实现,这个也不算要求了,基本上没多少人使用Eclipse
1.基本思路
a.新建一个配置文件来存储versionCode和versionName
b.app/build.gradle中实现自动更新和读取当前版本的函数
c.当需要更新版本时,执行一个Task
2.代码实现
version.properties配置文件
#Thu Oct 19 11:42:13 CST 2017
VERSION_MINOR=0 //MAJOR MINOR PATCH 三个组成了VersionName 比如现在就是0.0.0
VERSION_PATCH=0
VERSION_MAJOR=0
VERSION_CODE=0 //CODE 组成了VersionCode
自动更新和读取版本信息的函数,定义在app的build.gradle中
代码虽然长,但是都是重复的
//读取VersionName
def getAppVersionName() {
//读取配置文件
def versionFile = file("H:\\demoOfAndroid\\GradleDemo\\version.properties")
Properties versionPros =new Properties()
versionPros.load(new FileInputStream(versionFile))
def int minor = versionPros['VERSION_MINOR'].toInteger()
def int major = versionPros['VERSION_MAJOR'].toInteger()
def int patch = versionPros['VERSION_PATCH'].toInteger()
def String newVersion = "${major}.${minor}.${patch}"
}
//VersionName自动更新
def autoIncrementAppVersionName(){
//读取配置文件
def versionFile = file("H:\\demoOfAndroid\\GradleDemo\\version.properties")
Properties versionPros =new Properties()
versionPros.load(new FileInputStream(versionFile))
def int minor = versionPros['VERSION_MINOR'].toInteger()
def int major = versionPros['VERSION_MAJOR'].toInteger()
def int patch = versionPros['VERSION_PATCH'].toInteger()
//简单的判断,每次次版本号加1
if(minor<9){
minor++
}else {
minor = 0
major++
}
//存储新的版本号
versionPros['VERSION_MAJOR'] = major.toString()
versionPros['VERSION_MINOR'] = minor.toString()
versionPros['VERSION_PATCH'] = patch.toString()
versionPros.store(versionFile.newWriter() , null)
//返回新的版本号
def String newVersion = "${major}.${minor}.${patch}"
}
//VersionCode自动更新
def autoIncrementAppVersionCode() {
//读取配置文件
def versionFile = file("H:\\demoOfAndroid\\GradleDemo\\version.properties")
Properties versionPros =new Properties()
versionPros.load(new FileInputStream(versionFile))
def int appCode = versionPros['VERSION_CODE'].toInteger()
appCode++
versionPros['VERSION_CODE'] = appCode.toString()
versionPros.store(versionFile.newWriter() , null)
(int)appCode
}
//读取VersionCode
def getAppVersionCode(){
//读取配置文件
def versionFile = file("H:\\demoOfAndroid\\GradleDemo\\version.properties")
Properties versionPros =new Properties()
versionPros.load(new FileInputStream(versionFile))
def int appCode = versionPros['VERSION_CODE'].toInteger()
}
自动更新的Task任务
task autoIncrmentVersion << {
autoIncrementAppVersionName()
autoIncrementAppVersionCode()
}
3.使用
3.1需要版本更新时
只要执行 gradlew.bat autoIncrmentVersion (我的是Windows,Linux下直接gradlew)
3.2 在defaultConfig中配置
android {
...
defaultConfig {
...
versionCode getAppVersionCode() //只需要调用前面定义好的函数就可以得到当前版本
versionName getAppVersionName()
}
}
4.总结
使用自动更新的方法,我们可以不用去手动配置版本号,需要发布新版本时只需要执行一个Task来更新本地的配置文件,使用时只要读取本地配置就可以了,so easy~~~~