-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathbuild.gradle.kts
94 lines (83 loc) · 3.03 KB
/
build.gradle.kts
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
import com.android.build.gradle.BaseExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension
@Suppress("DSL_SCOPE_VIOLATION")
plugins {
id("build-logic.root-project")
alias(libs.plugins.com.android.application) apply false
alias(libs.plugins.org.jetbrains.kotlin.android) apply false
alias(libs.plugins.com.android.library) apply false
}
fun Project.configureBaseExtension() {
extensions.findByType(BaseExtension::class)?.run {
compileSdkVersion(Versions.compileSdkVersion)
buildToolsVersion = Versions.buildToolsVersion
defaultConfig {
val gitCommitCount = "git rev-list --count HEAD".runCommand().toInt()
val gitCommitId = "git rev-parse --short HEAD".runCommand()
val appVersionName = "${Versions.versionName}.r${gitCommitCount}.${gitCommitId}"
minSdk = Versions.minSdkVersion
targetSdk = Versions.targetSdkVersion
versionCode = gitCommitCount
versionName = appVersionName
}
signingConfigs {
val buildKeyFile = File(rootDir, "buildKey.jks")
if (buildKeyFile.exists()) {
create("leafide") {
storeFile = buildKeyFile
storePassword = System.getenv("KEYSTORE_PASSWORD")
keyAlias = System.getenv("KEY_ALIAS")
keyPassword = System.getenv("KEY_PASSWORD")
this.enableV1Signing = true
this.enableV2Signing = true
this.enableV3Signing = true
}
}
}
buildTypes {
val sign = signingConfigs.findByName("leafide")
if (sign != null) {
getByName("debug") {
signingConfig = sign
isMinifyEnabled = false
}
getByName("release") {
signingConfig = sign
isMinifyEnabled = false
}
}
}
compileOptions {
sourceCompatibility = Versions.javaVersion
targetCompatibility = Versions.javaVersion
}
}
}
fun Project.configureKotlinExtension() {
extensions.findByType(KotlinAndroidProjectExtension::class)?.run {
jvmToolchain(Versions.jvmToolchainVersion)
}
}
fun String.runCommand(): String {
val parts = this.split("\\s".toRegex())
val processBuilder = ProcessBuilder(*parts.toTypedArray())
.redirectOutput(ProcessBuilder.Redirect.PIPE)
.redirectError(ProcessBuilder.Redirect.PIPE)
.start()
processBuilder.waitFor()
return processBuilder.inputStream.bufferedReader().readText().trim()
}
subprojects {
plugins.withId("com.android.application") {
configureBaseExtension()
}
plugins.withId("com.android.library") {
configureBaseExtension()
}
plugins.withId("org.jetbrains.kotlin.android") {
configureKotlinExtension()
}
}
tasks.register<Delete>("clean").configure {
delete(rootProject.buildDir)
}