-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathAndroidApplicationPlugin.kt
More file actions
104 lines (95 loc) · 3.83 KB
/
AndroidApplicationPlugin.kt
File metadata and controls
104 lines (95 loc) · 3.83 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
100
101
102
103
104
import AppExt.APP_PREFIX
import AppExt.findPluginId
import AppExt.findVersionInt
import AppExt.findVersionString
import AppExt.libs
import com.android.build.api.dsl.ApplicationExtension
import com.stslex93.notes.configureKotlinAndroid
import com.stslex93.notes.configureKover
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) {
pluginManager.apply {
apply(libs.findPluginId("application"))
apply(libs.findPluginId("kotlin"))
apply(libs.findPluginId("ksp"))
apply(libs.findPluginId("kover"))
}
extensions.configure<ApplicationExtension> {
configureKotlinAndroid(this)
configureKover()
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
}