-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathAndroidApplicationPlugin.kt
More file actions
99 lines (91 loc) · 3.68 KB
/
AndroidApplicationPlugin.kt
File metadata and controls
99 lines (91 loc) · 3.68 KB
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
import AppExt.APP_PREFIX
import AppExt.findVersionInt
import AppExt.findVersionString
import AppExt.libs
import com.android.build.api.dsl.ApplicationExtension
import com.stslex93.notes.configureKotlinAndroid
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
import java.io.File
import java.io.FileInputStream
import java.io.InputStreamReader
import java.util.Properties
class AndroidApplicationPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
with(pluginManager) {
apply("com.android.application")
apply("org.jetbrains.kotlin.android")
apply("com.google.devtools.ksp")
}
extensions.configure<ApplicationExtension> {
configureKotlinAndroid(this)
namespace = APP_PREFIX
defaultConfig.apply {
applicationId = APP_PREFIX
targetSdk = libs.findVersionInt("targetSdk")
versionName = libs.findVersionString("versionName")
versionCode = libs.findVersionInt("versionCode")
signingConfigs {
val keystoreProperties =
gradleKeystoreProperties(project.rootProject.projectDir)
val keyStore = getFile(
projectRootDir = project.rootProject.projectDir,
path = keystoreProperties.getProperty("storeFile")
)
create("release") {
keyAlias = keystoreProperties.getProperty("keyAlias")
keyPassword = keystoreProperties.getProperty("keyPassword")
storeFile = keyStore
storePassword = keystoreProperties.getProperty("storePassword")
}
with(getByName("debug")) {
keyAlias = keystoreProperties.getProperty("keyAlias")
keyPassword = keystoreProperties.getProperty("keyPassword")
storeFile = keyStore
storePassword = keystoreProperties.getProperty("storePassword")
}
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
signingConfig = signingConfigs.getByName("release")
isDebuggable = false
}
debug {
signingConfig = signingConfigs.getByName("debug")
isDebuggable = true
}
}
}
buildFeatures.viewBinding = true
}
}
}
}
fun getFile(
projectRootDir: File,
path: String
): File {
val file = File(projectRootDir, path)
if (file.isFile) {
return file
} else {
throw IllegalStateException("${file.name} is inValid")
}
}
fun gradleKeystoreProperties(projectRootDir: File): Properties {
val properties = Properties()
val localProperties = File(projectRootDir, "keystore.properties")
if (localProperties.isFile) {
InputStreamReader(FileInputStream(localProperties), Charsets.UTF_8).use { reader ->
properties.load(reader)
}
}
return properties
}