-
Notifications
You must be signed in to change notification settings - Fork 49
/
build.gradle
134 lines (114 loc) · 3.59 KB
/
build.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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
apply from: project.file('metadata.gradle')
apply from: project.file('versioning.gradle')
final ANDROID_SDK_PATH = {
final localProperties = new Properties()
try {
localProperties.load(new FileInputStream("${project.rootProject.projectDir}/local.properties"))
} catch (IOException e) { /* ignore errors */
}
def androidSdkPath = localProperties['sdk.dir'] ?: System.getenv('ANDROID_HOME')
if (!androidSdkPath) {
throw new RuntimeException("Missing 'sdk.dir' in local.properties or ANDROID_HOME")
}
androidSdkPath
}()
ext {
MIN_SDK_VERSION = 16
SDK_VERSION = 28
BUILD_TOOLS_VERSION = '28.0.3'
ANDROIDX_CORE_VERSION = '1.0.0'
ANDROIDX_ANNOTATION_VERSION = '1.0.0'
ANDROIDX_RECYCLERVIEW_VERSION = '1.0.0'
ANDROID_JAR = fileTree(dir: "${ANDROID_SDK_PATH}/platforms/android-${SDK_VERSION}/", include: 'android.jar')
metadata.version = versionName
}
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
}
}
allprojects {
repositories {
google()
jcenter()
}
gradle.projectsEvaluated {
if (project.name == "example") {
return
}
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:all" << "-Xlint:-processing"
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
String shell(String command) {
def proc = ["sh", "-c", "cd ${project.rootDir} ; ${command}"].execute()
if (proc.waitFor() != 0) {
throw new RuntimeException("Failed to run: ${command}\n${proc.err.text}")
} else {
def err = proc.err.text
if (err) {
System.err.println(err)
}
}
return proc.in.text;
}
task releng {
doLast {
def currentBranch = shell("git symbolic-ref --short HEAD")
def tag = "v" + versionName
println "Release engineering for ${tag} (branch=${currentBranch})"
def changes = shell "git status -s"
if (changes.trim()) {
throw new RuntimeException("There are changes not commited yet.\n${changes}")
}
println "> git tag ${tag}"
shell "git tag ${tag}"
println "> git push origin ${tag}"
shell "git push origin ${tag}"
shell "git push origin ${currentBranch}"
}
}
class TimingsListener implements TaskExecutionListener, BuildListener {
private long clock
private timings = []
@Override
void beforeExecute(Task task) {
clock = System.nanoTime()
}
@Override
void afterExecute(Task task, TaskState taskState) {
def now = System.nanoTime()
def ms = java.util.concurrent.TimeUnit.NANOSECONDS.toMillis(now - clock)
clock = now
timings.add([ms, task.path])
}
@Override
void buildFinished(BuildResult result) {
def timingsOverThreshold = timings.grep { timing -> timing[0] > 1000 }
if (!timingsOverThreshold.empty) {
println "Task timings:"
for (timing in timingsOverThreshold.toSorted { a, b -> b[0] <=> a[0] }) {
printf "%7sms %s\n", timing
}
}
}
@Override
void buildStarted(Gradle gradle) {}
@Override
void projectsEvaluated(Gradle gradle) {}
@Override
void projectsLoaded(Gradle gradle) {}
@Override
void settingsEvaluated(Settings settings) {}
}
gradle.addListener new TimingsListener()