Android VersionName和VersionCode
2019-07-29 本文已影响0人
hua_dm
第一、在项目 app 创建文件version.properties
image.png
[version.properties]
第二、在version.properties中创建
VERSION_CODE = YOUR CODE (比如 110)
VERSION_NAME = YOUR NAME (比如 1.1.0)
第三、在app.build中android{ .... } 中写入如下代码:
def versionCode = getVersionCode()
def versionName = getVersionName()
这两句不要在defaultConfig{ .. }中添加,接着在defaultConfig中
versionCode = versionCode
versionName = versionName
全部代码:
apply plugin: 'com.android.application'
android {
def versionCode = getVersionCode()
def versionName = getVersionName()
defaultConfig {
......
versionCode versionCode
versionName versionName
......
}
......
}
//设置versionCode 自增长
def getVersionCode() {
def versionFile = file('version.properties')
if (versionFile.canRead()) {
Properties properties = new Properties()
properties.load(new FileInputStream(versionFile))
def versionCode = properties['VERSION_CODE'].toInteger()//读取 version.properties文件存放的版本号。
def runTasks = gradle.startParameter.taskNames
def task = ':app:assembleICBC_APPRelease' //(此处一定要注意)
if (task in runTasks) { //仅在每次打正式包的时候是增加版本号,普通运行下无法自增长
properties['VERSION_CODE'] = (++versionCode).toString()
properties.store(versionFile.newWriter(), null)
}
return versionCode
} else {
throw new GradleException("Could not find version.properties!")
}
}
//获取版本号,设置版本号自增
def getVersionName(){
def versionFile = file('version.properties')
if(versionFile.canRead()){ //判断文件读取异常
Properties versionProps = new Properties()
versionProps.load(new FileInputStream(versionFile))
def versionName = versionProps['VERSION_NAME'].toString() //读取文件中的版本号
def runTasks = gradle.startParameter.taskNames
def task = ':app:assembleICBC_APPRelease' //此要注意 ***
if(task in runTasks){ //仅在每次打正式包的时候是增加版本号,普通运行下无法自增长
// 版本号自增之后再写入文件(此处是关键,版本号自增+1)
versionProps['VERSION_NAME'] = ++versionName
versionProps.store(versionFile.newWriter(),null)
print('ICBC versionName : ' + versionName)
}
return versionName
}else{
throw new GradleException("Could not find version.properties!")
}
}
第四 变量task定义容易出错
def task = ':app:assembleICBC_APPRelease'
在打包的时候能看到这个task的值
image.png
红框的值就是task的值,一定要写对,要不然versionCode和versionName无法自增
OK完毕,再次总结一下。
后记:VERSION_NAME = YOUR NAME (比如 1.1.0)设置成这种格式,不适合自增加,还需手动设置为好。