Skip to content

Commit 8112ffc

Browse files
authored
Added application flavor and applied convention plugin to all module (#2102)
* Refactor - renamed datastore module to database module * Refactor - Added application flavor - Moved files to respective module - Applied convention plugins in all module - Removed unnecessary dependencies from all module - Added few modules like :core:ui, :core:testing, :core:domain
1 parent d9cd3b1 commit 8112ffc

File tree

390 files changed

+807
-586
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

390 files changed

+807
-586
lines changed

build-logic/convention/build.gradle.kts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ gradlePlugin {
4646
id = "mifos.android.application"
4747
implementationClass = "AndroidApplicationConventionPlugin"
4848
}
49+
register("androidApplicationJacoco") {
50+
id = "mifos.android.application.jacoco"
51+
implementationClass = "AndroidApplicationJacocoConventionPlugin"
52+
}
4953
register("androidHilt") {
5054
id = "mifos.android.hilt"
5155
implementationClass = "AndroidHiltConventionPlugin"
@@ -66,6 +70,10 @@ gradlePlugin {
6670
id = "mifos.android.test"
6771
implementationClass = "AndroidTestConventionPlugin"
6872
}
73+
register("androidLibraryJacoco") {
74+
id = "mifos.android.library.jacoco"
75+
implementationClass = "AndroidLibraryJacocoConventionPlugin"
76+
}
6977
register("androidRoom") {
7078
id = "mifos.android.room"
7179
implementationClass = "AndroidRoomConventionPlugin"
@@ -74,6 +82,10 @@ gradlePlugin {
7482
id = "mifos.android.application.firebase"
7583
implementationClass = "AndroidApplicationFirebaseConventionPlugin"
7684
}
85+
register("androidFlavors") {
86+
id = "mifos.android.application.flavors"
87+
implementationClass = "AndroidApplicationFlavorsConventionPlugin"
88+
}
7789
register("androidLint") {
7890
id = "mifos.android.lint"
7991
implementationClass = "AndroidLintConventionPlugin"

build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import org.gradle.api.Project
66
import org.gradle.kotlin.dsl.configure
77
import org.gradle.kotlin.dsl.getByType
88
import org.mifos.configureBadgingTasks
9+
import org.mifos.configureGradleManagedDevices
910
import org.mifos.configureKotlinAndroid
1011
import org.mifos.configurePrintApksTask
1112

@@ -23,6 +24,7 @@ class AndroidApplicationConventionPlugin : Plugin<Project> {
2324
defaultConfig.targetSdk = 34
2425
@Suppress("UnstableApiUsage")
2526
testOptions.animationsDisabled = true
27+
configureGradleManagedDevices(this)
2628
}
2729
extensions.configure<ApplicationAndroidComponentsExtension> {
2830
configurePrintApksTask(this)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import com.android.build.api.dsl.ApplicationExtension
2+
import org.gradle.api.Plugin
3+
import org.gradle.api.Project
4+
import org.gradle.kotlin.dsl.configure
5+
import org.mifos.configureFlavors
6+
7+
class AndroidApplicationFlavorsConventionPlugin : Plugin<Project> {
8+
override fun apply(target: Project) {
9+
with(target) {
10+
extensions.configure<ApplicationExtension> {
11+
configureFlavors(this)
12+
}
13+
}
14+
}
15+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import com.android.build.api.variant.ApplicationAndroidComponentsExtension
2+
import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
3+
import org.gradle.api.Plugin
4+
import org.gradle.api.Project
5+
import org.gradle.kotlin.dsl.getByType
6+
import org.mifos.configureJacoco
7+
8+
class AndroidApplicationJacocoConventionPlugin : Plugin<Project> {
9+
override fun apply(target: Project) {
10+
with(target) {
11+
pluginManager.apply("jacoco")
12+
val androidExtension = extensions.getByType<BaseAppModuleExtension>()
13+
14+
androidExtension.buildTypes.configureEach {
15+
enableAndroidTestCoverage = true
16+
enableUnitTestCoverage = true
17+
}
18+
19+
configureJacoco(extensions.getByType<ApplicationAndroidComponentsExtension>())
20+
}
21+
}
22+
}

build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import org.gradle.api.Plugin
33
import org.gradle.api.Project
44
import org.gradle.kotlin.dsl.configure
55
import org.gradle.kotlin.dsl.dependencies
6+
import org.mifos.configureGradleManagedDevices
67
import org.mifos.libs
78

89
class AndroidFeatureConventionPlugin : Plugin<Project> {
@@ -15,25 +16,24 @@ class AndroidFeatureConventionPlugin : Plugin<Project> {
1516
extensions.configure<LibraryExtension> {
1617
defaultConfig {
1718
// set custom test runner
18-
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
19+
testInstrumentationRunner = "com.mifos.core.testing.MifosTestRunner"
1920
}
2021
testOptions.animationsDisabled = true
22+
configureGradleManagedDevices(this)
2123
}
2224

2325
dependencies {
24-
add("implementation", project(":core:data"))
26+
add("implementation", project(":core:ui"))
2527
add("implementation", project(":core:designsystem"))
2628
add("implementation", project(":core:common"))
29+
add("implementation", project(":core:data"))
2730

2831
add("implementation", libs.findLibrary("androidx.hilt.navigation.compose").get())
2932
add("implementation", libs.findLibrary("androidx.lifecycle.runtimeCompose").get())
3033
add("implementation", libs.findLibrary("androidx.lifecycle.viewModelCompose").get())
3134
add("implementation", libs.findLibrary("androidx.tracing.ktx").get())
3235

33-
add(
34-
"androidTestImplementation",
35-
libs.findLibrary("androidx.lifecycle.runtimeTesting").get()
36-
)
36+
add("androidTestImplementation", libs.findLibrary("androidx.lifecycle.runtimeTesting").get())
3737
}
3838
}
3939
}

build-logic/convention/src/main/kotlin/AndroidHiltConventionPlugin.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ class AndroidHiltConventionPlugin : Plugin<Project> {
77
override fun apply(target: Project) {
88
with(target) {
99
with(pluginManager) {
10-
apply("com.google.devtools.ksp")
10+
apply("org.jetbrains.kotlin.kapt")
1111
apply("dagger.hilt.android.plugin")
1212
}
1313

1414
dependencies {
1515
"implementation"(libs.findLibrary("hilt.android").get())
16-
"ksp"(libs.findLibrary("hilt.compiler").get())
16+
"kapt"(libs.findLibrary("hilt.compiler").get())
1717
}
1818
}
1919
}

build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import org.gradle.api.Project
55
import org.gradle.kotlin.dsl.configure
66
import org.gradle.kotlin.dsl.dependencies
77
import org.gradle.kotlin.dsl.kotlin
8+
import org.mifos.configureFlavors
9+
import org.mifos.configureGradleManagedDevices
810
import org.mifos.configureKotlinAndroid
911
import org.mifos.configurePrintApksTask
1012
import org.mifos.disableUnnecessaryAndroidTests
@@ -23,6 +25,8 @@ class AndroidLibraryConventionPlugin : Plugin<Project> {
2325
configureKotlinAndroid(this)
2426
defaultConfig.targetSdk = 34
2527
testOptions.animationsDisabled = true
28+
configureFlavors(this)
29+
configureGradleManagedDevices(this)
2630
// The resource prefix is derived from the module name,
2731
// so resources inside ":core:module1" must be prefixed with "core_module1_"
2832
resourcePrefix =
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import com.android.build.api.dsl.LibraryExtension
2+
import com.android.build.api.variant.LibraryAndroidComponentsExtension
3+
import org.gradle.api.Plugin
4+
import org.gradle.api.Project
5+
import org.gradle.kotlin.dsl.getByType
6+
import org.mifos.configureJacoco
7+
8+
class AndroidLibraryJacocoConventionPlugin : Plugin<Project> {
9+
override fun apply(target: Project) {
10+
with(target) {
11+
pluginManager.apply("jacoco")
12+
val androidExtension = extensions.getByType<LibraryExtension>()
13+
14+
androidExtension.buildTypes.configureEach {
15+
enableAndroidTestCoverage = true
16+
enableUnitTestCoverage = true
17+
}
18+
19+
configureJacoco(extensions.getByType<LibraryAndroidComponentsExtension>())
20+
}
21+
}
22+
}

build-logic/convention/src/main/kotlin/AndroidTestConventionPlugin.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import com.android.build.gradle.TestExtension
22
import org.gradle.api.Plugin
33
import org.gradle.api.Project
44
import org.gradle.kotlin.dsl.configure
5+
import org.mifos.configureGradleManagedDevices
56
import org.mifos.configureKotlinAndroid
67

78
class AndroidTestConventionPlugin : Plugin<Project> {
@@ -14,6 +15,7 @@ class AndroidTestConventionPlugin : Plugin<Project> {
1415

1516
extensions.configure<TestExtension> {
1617
configureKotlinAndroid(this)
18+
configureGradleManagedDevices(this)
1719
defaultConfig.targetSdk = 34
1820
}
1921
}

build-logic/convention/src/main/kotlin/org/mifos/AndroidCompose.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ internal fun Project.configureAndroidCompose(
4545
kotlinOptions {
4646
freeCompilerArgs += buildComposeMetricsParameters()
4747
freeCompilerArgs += stabilityConfiguration()
48+
freeCompilerArgs += strongSkippingConfiguration()
4849
}
4950
}
5051
}
@@ -79,3 +80,8 @@ private fun Project.stabilityConfiguration() = listOf(
7980
"-P",
8081
"plugin:androidx.compose.compiler.plugins.kotlin:stabilityConfigurationPath=${project.rootDir.absolutePath}/compose_compiler_config.conf",
8182
)
83+
84+
private fun Project.strongSkippingConfiguration() = listOf(
85+
"-P",
86+
"plugin:androidx.compose.compiler.plugins.kotlin:experimentalStrongSkipping=true",
87+
)

0 commit comments

Comments
 (0)