
使用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.
在相应的应用程序项目(或库项目)的build.gradle中,在最后添加文件:

//编译之前,执行updateVerion preBuild.dependsOn updateVersion
这句话在编译之前依赖于updateVersion. updateVersion是我们要执行的任务-修改版本号.
假设Version.java的内容如下:

public class Version {
public static final String VERSION = "2016-08-20";
}
(为了便于修改脚本更改gradle版本,建议此文件中仅包含一个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;
}
重建后更改gradle版本,它将自动修改Version的值.
整个过程是:
阅读旧文本行,替换新行,然后重写. 编译前依赖任务.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-284293-1.html
钱用错地方了
三是武器落后
所有的朋友们一起都来
接下来是应该看我们的了