Skip to content

Commit d54c08c

Browse files
committed
Refactor Build System for reusability part 1.
1 parent 2de80f2 commit d54c08c

File tree

4 files changed

+41
-22
lines changed

4 files changed

+41
-22
lines changed

app/build.gradle.kts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,13 @@ android {
1515
compileSdkVersion(AndroidSdk.compile)
1616

1717
defaultConfig {
18-
applicationId = appId
1918
minSdkVersion(AndroidSdk.min)
2019
targetSdkVersion(AndroidSdk.target)
21-
versionCode = 1
22-
versionName = "1.0"
23-
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
20+
21+
applicationId = AndroidClient.appId
22+
versionCode = AndroidClient.versionCode
23+
versionName = AndroidClient.versionName
24+
testInstrumentationRunner = AndroidClient.testRunner
2425
}
2526

2627
sourceSets {

buildSrc/src/main/kotlin/Dependencies.kt

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,35 @@
1-
const val projectName = "Android-CleanArchitecture-Kotlin" //TODO: Reuse this in settings.gradle
2-
const val appId = "com.fernandocejas.sample"
3-
const val kotlinVersion = "1.4.0"
1+
object Kotlin {
2+
const val standardLibrary = "1.4.0"
3+
const val coroutines = "1.3.9"
4+
}
5+
6+
object AndroidSdk {
7+
const val min = 21
8+
const val compile = 29
9+
const val target = compile
10+
}
11+
12+
object AndroidClient {
13+
const val appId = "com.fernandocejas.sample"
14+
const val versionCode = 1
15+
const val versionName = "1.0"
16+
const val testRunner = "androidx.test.runner.AndroidJUnitRunner"
17+
}
418

519
object BuildPlugins {
20+
621
object Versions {
722
const val buildToolsVersion = "4.0.1"
823
const val gradleVersion = "6.6.1"
924
}
10-
1125
const val androidGradlePlugin = "com.android.tools.build:gradle:${Versions.buildToolsVersion}"
12-
const val kotlinGradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
26+
const val kotlinGradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Kotlin.standardLibrary}"
1327
const val androidApplication = "com.android.application"
1428
const val kotlinAndroid = "kotlin-android"
1529
const val kotlinKapt = "kotlin-kapt"
1630
const val kotlinAndroidExtensions = "kotlin-android-extensions"
1731
}
1832

19-
object AndroidSdk {
20-
const val min = 21
21-
const val compile = 29
22-
const val target = compile
23-
}
24-
2533
object Libraries {
2634
private object Versions {
2735
const val appCompat = "1.2.0"
@@ -33,7 +41,6 @@ object Libraries {
3341
const val lifecycleExtensions = "2.1.0"
3442
const val annotations = "1.1.0"
3543
const val ktx = "1.3.2"
36-
const val coroutines = "1.3.9"
3744
const val glide = "4.11.0"
3845
const val retrofit = "2.9.0"
3946
const val okHttpLoggingInterceptor = "4.9.0"
@@ -44,16 +51,16 @@ object Libraries {
4451
const val javaxInject = "1"
4552
}
4653

47-
const val kotlinStdLib = "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion"
48-
const val kotlinCoroutines = "org.jetbrains.kotlinx:kotlinx-coroutines-core:${Versions.coroutines}"
49-
const val kotlinCoroutinesAndroid = "org.jetbrains.kotlinx:kotlinx-coroutines-android:${Versions.coroutines}"
54+
const val kotlinStdLib = "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${Kotlin.standardLibrary}"
55+
const val kotlinCoroutines = "org.jetbrains.kotlinx:kotlinx-coroutines-core:${Kotlin.coroutines}"
56+
const val kotlinCoroutinesAndroid = "org.jetbrains.kotlinx:kotlinx-coroutines-android:${Kotlin.coroutines}"
5057
const val appCompat = "androidx.appcompat:appcompat:${Versions.appCompat}"
5158
const val constraintLayout = "androidx.constraintlayout:constraintlayout:${Versions.constraintLayout}"
5259
const val ktxCore = "androidx.core:core-ktx:${Versions.ktx}"
5360
const val lifecycleCompiler = "androidx.lifecycle:lifecycle-compiler:${Versions.lifecycle}"
5461
const val viewModel = "androidx.lifecycle:lifecycle-viewmodel-ktx:${Versions.lifecycle}"
5562
const val liveData = "androidx.lifecycle:lifecycle-livedata-ktx:${Versions.lifecycle}"
56-
const val lifecycleExtensions = "androidx.lifecycle:lifecycle-extensions:${Versions.lifecycleExtensions}" //TODO: Deprecated
63+
const val lifecycleExtensions = "androidx.lifecycle:lifecycle-extensions:${Versions.lifecycleExtensions}"
5764
const val cardView = "androidx.cardview:cardview:${Versions.cardView}"
5865
const val recyclerView = "androidx.recyclerview:recyclerview:${Versions.recyclerView}"
5966
const val material = "com.google.android.material:material:${Versions.material}"

gradle.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ org.gradle.configureondemand=true
66
#Application Properties
77
kotlin.incremental=true
88
android.useAndroidX=true
9-
android.enableJetifier=true
9+
android.enableJetifier=true
10+
kotlin.code.style=official

settings.gradle.kts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,11 @@
1-
include (":app")
1+
//Include all the existent modules in the project
2+
rootDir
3+
.walk()
4+
.maxDepth(1)
5+
.filter {
6+
it.name != "buildSrc" && it.isDirectory &&
7+
file("${it.absolutePath}/build.gradle.kts").exists()
8+
}
9+
.forEach {
10+
include(":${it.name}")
11+
}

0 commit comments

Comments
 (0)