Skip to content

Commit 35f5205

Browse files
Migrating from hilt to koin (This) (#1764)
* Migrating from hilt to koin * Fixed Instance creation error * refactor: Removed Hilt and migrated to Koin This commit removes Hilt and migrates the project to Koin for dependency injection. The following changes were made: - Removed the `AndroidHiltConventionPlugin`. - Added the `AndroidKoinConventionPlugin`. - Updated dependencies to use Koin. - Updated KSP configuration for Koin. - Updated feature modules to use Koin. - Updated common modules to use Koin . - Removed Hilt annotations and replaced them with Koin annotations. - Updated ViewModels to use Koin for dependency injection. - Updated modules to use Koin for dependency injection. * Formatted Dependencies * migrating from hilt to koin clean up commit * Revert "migrating from hilt to koin clean up commit" This reverts commit bb63058. --------- Co-authored-by: Sk Niyaj Ali <[email protected]>
1 parent 3ce0b36 commit 35f5205

File tree

232 files changed

+2176
-1365
lines changed

Some content is hidden

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

232 files changed

+2176
-1365
lines changed

.github/workflows/master_dev_ci.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ jobs:
133133
run: ./gradlew :mifospay:assembleDemoDebug
134134

135135
- name: Check badging
136+
# This step is allowed to fail, as it's not critical for the build
137+
continue-on-error: true
136138
run: ./gradlew :mifospay:checkProdReleaseBadging
137139

138140
- name: Upload APKs

.github/workflows/monthly.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ name: Bump our Calendar Version
22

33
on:
44
workflow_dispatch:
5-
schedule:
6-
- cron: '30 3 1 * *'
5+
# This is a monthly cron job that runs on the first of the month at 3:30 AM UTC
6+
# Turning off for now
7+
# schedule:
8+
# - cron: '30 3 1 * *'
79
jobs:
810
tag:
911
name: Tag Monthly Release

.github/workflows/weekly.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ name: Tag Weekly Release
22

33
on:
44
workflow_dispatch:
5-
schedule:
6-
- cron: '0 4 * * 0'
5+
# This is a weekly cron job that runs every Sunday at 4:00 AM UTC
6+
# Turning off for now
7+
# schedule:
8+
# - cron: '0 4 * * 0'
79
jobs:
810
tag:
911
name: Tag Weekly Release

build-logic/convention/build.gradle.kts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,6 @@ gradlePlugin {
5151
id = "mifospay.android.application"
5252
implementationClass = "AndroidApplicationConventionPlugin"
5353
}
54-
register("androidHilt") {
55-
id = "mifospay.android.hilt"
56-
implementationClass = "AndroidHiltConventionPlugin"
57-
}
5854
register("androidLibraryCompose") {
5955
id = "mifospay.android.library.compose"
6056
implementationClass = "AndroidLibraryComposeConventionPlugin"
@@ -91,6 +87,10 @@ gradlePlugin {
9187
id = "mifospay.android.application.flavors"
9288
implementationClass = "AndroidApplicationFlavorsConventionPlugin"
9389
}
90+
register("androidKoin") {
91+
id = "mifospay.android.koin"
92+
implementationClass = "AndroidKoinConventionPlugin"
93+
}
9494
register("detekt") {
9595
id = "mifos.detekt.plugin"
9696
implementationClass = "MifosDetektConventionPlugin"

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

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
12
import com.android.build.gradle.LibraryExtension
2-
import com.android.build.gradle.internal.scope.ProjectInfo.Companion.getBaseName
3+
import com.google.devtools.ksp.gradle.KspExtension
34
import org.gradle.api.Plugin
45
import org.gradle.api.Project
56
import org.gradle.kotlin.dsl.configure
@@ -12,8 +13,9 @@ class AndroidFeatureConventionPlugin : Plugin<Project> {
1213
with(target) {
1314
pluginManager.apply {
1415
apply("mifospay.android.library")
15-
apply("mifospay.android.hilt")
16+
apply("mifospay.android.koin")
1617
}
18+
1719
extensions.configure<LibraryExtension> {
1820
defaultConfig {
1921
// set custom test runner
@@ -22,28 +24,42 @@ class AndroidFeatureConventionPlugin : Plugin<Project> {
2224
testOptions.animationsDisabled = true
2325
}
2426

27+
extensions.configure<KspExtension> {
28+
arg("KOIN_USE_COMPOSE_VIEWMODEL","true")
29+
}
30+
2531
dependencies {
2632
add("implementation", project(":core:ui"))
2733
add("implementation", project(":core:designsystem"))
34+
add("implementation", project(":core:data"))
2835

2936
add("implementation", project(":libs:material3-navigation"))
3037

38+
add("implementation", libs.findLibrary("androidx.navigation.compose").get())
3139
add("implementation", libs.findLibrary("kotlinx.collections.immutable").get())
32-
add("implementation", libs.findLibrary("androidx.hilt.navigation.compose").get())
3340
add("implementation", libs.findLibrary("androidx.lifecycle.runtimeCompose").get())
3441
add("implementation", libs.findLibrary("androidx.lifecycle.viewModelCompose").get())
3542
add("implementation", libs.findLibrary("androidx.tracing.ktx").get())
3643

44+
add("implementation", platform(libs.findLibrary("koin-bom").get()))
45+
add("implementation", libs.findLibrary("koin-android").get())
46+
add("implementation", libs.findLibrary("koin.androidx.compose").get())
47+
48+
add("implementation", libs.findLibrary("koin.android").get())
49+
add("implementation", libs.findLibrary("koin.androidx.navigation").get())
50+
add("implementation", libs.findLibrary("koin.androidx.compose").get())
51+
add("implementation", libs.findLibrary("koin.core.viewmodel").get())
52+
3753
add("androidTestImplementation", libs.findLibrary("androidx.lifecycle.runtimeTesting").get())
3854

3955
add("testImplementation", kotlin("test"))
40-
add("testImplementation", libs.findLibrary("hilt.android.testing").get())
56+
57+
add("testImplementation", libs.findLibrary("koin.test").get())
58+
add("testImplementation", libs.findLibrary("koin.test.junit4").get())
4159

4260
add("debugImplementation", libs.findLibrary("androidx.compose.ui.test.manifest").get())
4361
add("androidTestImplementation", libs.findLibrary("androidx.navigation.testing").get())
4462
add("androidTestImplementation", libs.findLibrary("androidx.compose.ui.test").get())
45-
add("androidTestImplementation", libs.findLibrary("hilt.android.testing").get())
46-
add("androidTestImplementation", libs.findLibrary("androidx.lifecycle.runtimeTesting").get())
4763
}
4864
}
4965
}

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

Lines changed: 0 additions & 21 deletions
This file was deleted.
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import com.google.devtools.ksp.gradle.KspExtension
2+
import org.gradle.api.Plugin
3+
import org.gradle.api.Project
4+
import org.gradle.kotlin.dsl.configure
5+
import org.gradle.kotlin.dsl.dependencies
6+
import org.mifospay.libs
7+
8+
9+
class AndroidKoinConventionPlugin : Plugin<Project> {
10+
override fun apply(target: Project) {
11+
with(target) {
12+
with(pluginManager) {
13+
apply("com.google.devtools.ksp")
14+
}
15+
16+
dependencies {
17+
val bom = libs.findLibrary("koin-bom").get()
18+
add("implementation", platform(bom))
19+
add("implementation", libs.findLibrary("koin.core").get())
20+
21+
add("implementation", libs.findLibrary("koin.annotations").get())
22+
add("ksp", libs.findLibrary("koin.ksp.compiler").get())
23+
24+
25+
add("testImplementation", libs.findLibrary("koin.test").get())
26+
add("testImplementation", libs.findLibrary("koin.test.junit4").get())
27+
}
28+
29+
extensions.configure<KspExtension> {
30+
arg("KOIN_CONFIG_CHECK","true")
31+
arg("USE_COMPOSE_VIEWMODEL", "false")
32+
arg("KOIN_USE_COMPOSE_VIEWMODEL", "true")
33+
}
34+
}
35+
}
36+
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class AndroidLibraryConventionPlugin : Plugin<Project> {
2121
apply("mifos.detekt.plugin")
2222
apply("mifos.spotless.plugin")
2323
apply("mifos.ktlint.plugin")
24+
apply("mifospay.android.koin")
2425
}
2526

2627
extensions.configure<LibraryExtension> {
@@ -32,10 +33,12 @@ class AndroidLibraryConventionPlugin : Plugin<Project> {
3233
// so resources inside ":core:module1" must be prefixed with "core_module1_"
3334
resourcePrefix = path.split("""\W""".toRegex()).drop(1).distinct().joinToString(separator = "_").lowercase() + "_"
3435
}
36+
3537
extensions.configure<LibraryAndroidComponentsExtension> {
3638
configurePrintApksTask(this)
3739
disableUnnecessaryAndroidTests(target)
3840
}
41+
3942
dependencies {
4043
add("testImplementation", kotlin("test"))
4144
add("implementation", libs.findLibrary("androidx.tracing.ktx").get())

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,5 @@ internal fun Project.configureAndroidCompose(
5858
.let(reportsDestination::set)
5959

6060
stabilityConfigurationFile = rootProject.layout.projectDirectory.file("compose_compiler_config.conf")
61-
62-
enableStrongSkippingMode = true
6361
}
6462
}

build-logic/convention/src/main/kotlin/org/mifospay/ProjectExtensions.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ import org.gradle.kotlin.dsl.getByType
1111
val Project.libs
1212
get(): VersionCatalog = extensions.getByType<VersionCatalogsExtension>().named("libs")
1313

14+
val Project.dynamicVersion
15+
get() = project.version.toString().split('+')[0]
16+
1417
inline fun Project.detektGradle(crossinline configure: DetektExtension.() -> Unit) =
1518
extensions.configure<DetektExtension> {
1619
configure()

0 commit comments

Comments
 (0)