简评:优雅的设置 Android 应用的 versionCode & Name。

Android 开发者一定对下面的这两个属性很熟悉吧:

defaultConfig {    ...    versionCode 1    versionName "1.0.0"}

但直接这样设置有两个不好的地方:

  • 不知道这个 version 对应的是哪一个 commit。
  • 每次修改 versionCode 和 versionName,都要更新 build.gradle 文件。

如果你使用 git 作为你的版本控制工具,这篇文章就可以帮助你快捷设置 versionName & versionCode。

Version Name

对于 versionName 我们可以用 git describe 命令。

a. git describe 会从当前 commit 找到最近的一个 tag。
b. 如果这个 tag 就指向当前 commit,那就直接输出 tag。
c. 否则输出之前的 tag + 中间间隔的 commit 数 + 当前的 commit ID。比如:1.0-2-gdc226a


Version Code
versionCode 是一个数字,通常每一个 git tag 对应一个 version。


当然,对于开发中的内部版本是没有必要每个都打 tag 的,这时我们可以用时间戳来作为 versionCode。


因此,可以创建一个 script-git-version.gradle 文件:

buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'org.ajoberstar:grgit:1.5.0'    }}import org.ajoberstar.grgit.Grgitext {    git = Grgit.open(currentDir: projectDir)    gitVersionName = git.describe()    gitVersionCode = git.tag.list().size()    gitVersionCodeTime = git.head().time}task printVersion() {    println("Version Name: $gitVersionName")    println("Version Code: $gitVersionCode")    println("Version Code Time: $gitVersionCodeTime")}

之后在 build.gradle 中这样用:

apply plugin: 'com.android.application'apply from: "$project.rootDir/tools/script-git-version.gradle"
productFlavors {    dev {        versionCode gitVersionCodeTime        versionName gitVersionName    }    prod {        versionCode gitVersionCode        versionName gitVersionName    }}
Version Name: 1.0-2-gdca226aVersion Code: 2Version Code Time: 1484407970

这样来设置 versionCode 和 versionName 就可以很方便的分辨出每个版本对应的 commit,也不用每次都手动去改 build.gradle 文件了。

原文:Configuring Android Project — Version Name & Code
欢迎关注知乎专栏「极光日报」,每天为 Makers 导读三篇优质英文文章。

日报延伸阅读
-改进 Android 项目的资源目录
-正确配置你的 Android 项目

更多相关文章

  1. Android(安卓)6.0中添加硬件抽象层(HAL)
  2. android 动态设置读取文件的编码格式(charset)
  3. Android(安卓)Studio 配置签名
  4. Android中对/data/data//files下文件的读写操作
  5. Android(安卓)使用aab 发布
  6. Android音频处理学习之MediaExtractor获取aac文件后添加ADTS头
  7. 【转载】【Android】如何快速分析fd leaks, 文件句柄泄露.
  8. 笔记33--ListView和ScrollView点击事件的冲突
  9. 关于Android(安卓)版本覆盖安装,安装过程中闪退出现的问题,

随机推荐

  1. 快速提高Android开发调试的使用技巧
  2. Android(安卓)adb opendir failed ,permi
  3. 编程回忆之Android回忆(AnimationDrawable
  4. Android(安卓)Widget事件
  5. 高通Android(安卓)display架构分析
  6. input subsystem
  7. RabbitMQ 入门之基础概念
  8. ERROR:Android(安卓)requires .class comp
  9. 居中显示并旋转 android Button 里的属性
  10. Android(安卓)adb 查看已经安装的应用、