博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
gradle 修改java中的版本号
阅读量:6896 次
发布时间:2019-06-27

本文共 2079 字,大约阅读时间需要 6 分钟。

  hot3.png

        在做SDK的时候,经常需要手动去修改版本号。比如

public class Version{//先注释掉之前的版本号   //   public static final String VERSION = "1.0";//再写上新的版本号      public static final String VERSION = "1.1";}

这样的问题有两个:

1。重复劳动。完全是人工的。

2。遗漏的可能。 换个人去开发SDK了,可能就忘了修改这个VERSION了。

总之:靠人不靠谱。(强行安利一个电影:《》。结局反转,黑客,人最不可靠)

接下来,借助gradle,实现一种编译时,自动修改版本号的方法。保证代码的随时更新。

一。何时运行?

修改版本号,肯定是在编译之前运行。不然都编译完了再去修改版本号有个毛意义啊?所以我们得找到gradle在编译之前可以进行的命令:preBuild。

在对应的app工程(或者library的工程)的build.gradle中,文件最后加入:

//编译之前,执行updateVerionpreBuild.dependsOn updateVersion

这句话就是在编译之前,依赖updateVersion。updateVersion就是我们要进行的task——去修改版本号。

二。写task脚本

假设Version.java的内容如下:

public class Version {     public static final String VERSION = "2016-08-20";}

(为了便于脚本修改,建议这个文件里面只有一个VERSION变量,其他不要有。当然只是建议)

在build.gradle中继续加入:

//替换版本号task updateVersion << {   //Version文件的目录。这里应该改为你的实际目录    def versionFileDir = projectDir.getAbsolutePath() + File.separatorChar + 'Version.java';    println versionFileDir;   //读取旧的version字符串    def oldVersionStr = findOldVersionStr(versionFileDir);    println oldVersionStr;   //获取新的version字符串    def newVersionValue = getNewVersionValue();    println newVersionValue;   //拼接为java的语句    def newVersionStr = "public static final String VERSION = \"" + newVersionValue + "\";"    println newVersionStr;   //重新写入到文件中    def updatedContent = new File(versionFileDir).getText('UTF-8').replaceAll(oldVersionStr, newVersionStr);    new File(versionFileDir).write(updatedContent, 'UTF-8')}//读取旧的version字符串def findOldVersionStr(path) {    def readerString = "";    new File(path).withReader('UTF-8') { reader ->        reader.eachLine {            //读取一行,如果发现有"VERSION"字符,说明是我们要修改的那一行。            if (it.contains("VERSION")) {                //保存it到string,然后返回                readerString <<= it                return readerString            }        }        return readerString    }}//获取新的版本号def getNewVersionValue() {   //举例:用日期作为版本号    def date = new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"));    return date;}

    rebuild运行之后,就会自动修改Version的值了。

 

总体流程就是:

    读取旧的一行文字,替换新的,然后重写进去。在编译前依赖一下task。

转载于:https://my.oschina.net/lifj/blog/749345

你可能感兴趣的文章
配置防盗链
查看>>
Laravel修改配置后一定要清理缓存 "php artisan config:clear"!
查看>>
Nginx线程池性能提升9倍(Thread Pools in NGINX Boost Performance 9x!)
查看>>
Skype for business/Lync之证书解析(一):证书原理
查看>>
.net 分布式架构之配置中心
查看>>
DNS server 2008
查看>>
Jquery学习笔记-表单元素选择器
查看>>
分布式监控系统Ganglia简介及安装
查看>>
mysql1
查看>>
【MongoDB系列】简介、安装、基本操作命令
查看>>
面向对象分析笔记
查看>>
在OEL6.1下安装ORACLE 11G R2
查看>>
windows平台下gvim的一些配置
查看>>
DPM 2010 Error Code Catalog
查看>>
SAP打开界面黑色问题处理方法
查看>>
ubuntu 安装mysql
查看>>
SQL查询下级节点
查看>>
编码的原理讲解
查看>>
我的友情链接
查看>>
我的友情链接
查看>>