Back to Posts

Android Studio Version Management

Posted in Android

Android Studio 版本自动更新

在开发Android项目的过程中,一些发布频率很高的应用,每次手动更改不是很方便,在一翻查找后,参考了这位同学的博文,感谢这位同学的无私奉献,我个人比较懒,为了考虑以后项目用的着,于是有些这篇文章。

思路:

  • 先加载项目的gradle.properties文件,一般生成项目这个文件都会存在
  • 判断项目是否存在VERSION_CODE,到这里就清晰了,没有就生成一个
  • 获取当前task的名称,仅当task包含:app:assembleRelease:app:generateReleaseSources时,则判定为正式环境,更新versionCode
  • 然后返回versionCode

使用方法

defaultConfig中填写方法名

defaultConfig {
    applicationId "com.application"
    minSdkVersion 14
    targetSdkVersion 23
    versionCode updateVersion()
    versionName "1.0"
    multiDexEnabled true
  }

更新versionCode方法,放在:app的gradle文里面就行

def updateVersion() {
  def version
  def gradleFile = file('../gradle.properties')

  if (gradleFile.canRead()) {
    Properties properties = new Properties()
    properties.load(gradleFile.newInputStream())

    if (properties['VERSION_CODE'] == null) {
      properties['VERSION_CODE'] = '1'
      properties.store(gradleFile.newWriter(), null)
      properties.load(gradleFile.newInputStream())
    }

    version = properties['VERSION_CODE'] as int

    gradle.startParameter.taskNames.each { name ->
      println "${rootProject.name} taskName = ${name}"
      if (':app:assembleRelease'.equals(name) || ':app:generateReleaseSources'.equals(name)) {
        properties['VERSION_CODE'] = (++version) as String
        properties.store(gradleFile.newWriter(), "update version ${version}")
      }
    }
  } else {
    throw new GradleException("Could not read gradle.properties!")
  }
  return version
}

Android Devoloper. This is my personal blog and any views expressed here are mine.

Read Next

简易代码重构对应表