-
Notifications
You must be signed in to change notification settings - Fork 123
/
Copy pathreleaseinfo.gradle
90 lines (88 loc) · 3.24 KB
/
releaseinfo.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import groovy.xml.MarkupBuilder
/**
* 描述:版本发布文档自动维护脚本
* 流程描述:
* 1、将版本相关信息解析出来
* 2、将解析出的数据生成xml格式数据
* 3、写入到已有的文档数据中
**/
ext {
versionName = rootProject.ext.android.versionName
versionCode = rootProject.ext.android.versionCode
versionInfo = 'App的第2个版本,修复网络数据解析问题,处于稳定版本。'
destFile = file('releasesInfo.xml')//指定输出文件
if (destFile != null && !destFile.exists()) {
destFile.createNewFile()
}
}
//挂在到应用构建的过程中
this.project.afterEvaluate { project ->
def buildTask = project.tasks.getByName('assembleRelease')
if (buildTask != null) {
buildTask.doLast {//assembleRelease 之后执行
releaseInfoTask.onlyIf {
true
}
}
}
}
//创建一个Task,并指定输入输出
task releaseInfoTask {
inputs.property('versionCode', this.versionCode)
inputs.property('versionName', this.versionName)
inputs.property('versionInfo', this.versionInfo)
outputs.file this.destFile
doLast {
//将输入的内容写入到输出文件中去
def data = inputs.getProperties()
File file = outputs.getFiles().getSingleFile()
def versionMsg = new VersionMsg(data)
//将实体对象写入到xml文件中
def sw = new StringWriter()
def xmlBuilder = new MarkupBuilder(sw)
if (file.text != null && file.text.size() <= 0) {
//没有内容
xmlBuilder.releases {
release {
versionCode(versionMsg.versionCode)
versionName(versionMsg.versionName)
versionInfo(versionMsg.versionInfo)
}
}
//直接写入
file.withWriter { writer ->
writer.append("<?xml version=\"1.0\" encoding=\"GBK\"?>" + '\r\n')
writer.append(sw.toString())
}
} else {//有内容判断版本是否改变
def releases = new XmlParser().parse(file)
def codeName = releases.release[-1].versionName.text()
if (codeName != versionMsg.versionName) {//新的版本信息
xmlBuilder.release {
versionCode(versionMsg.versionCode)
versionName(versionMsg.versionName)
versionInfo(versionMsg.versionInfo)
}
//插入到最后一行前面
def lines = file.readLines()
def lengths = lines.size() - 1
file.withWriter { writer ->
lines.eachWithIndex { line, index ->
if (index != lengths) {
writer.append(line + '\r\n')
} else if (index == lengths) {
writer.append('\r\n' + sw.toString() + '\r\n')
writer.append(lines.get(lengths))
}
}
}
}
}
}
}
//信息实体类
class VersionMsg {
String versionCode
String versionName
String versionInfo
}