Setup Koin dependency injection in Kotlin Multiplatform

koin = "4.0.0"

[libraries]
#koin compose multiplatform
koin-compose = { module = "io.insert-koin:koin-compose", version.ref = "koin_version" }
koin-compose-viewmodel = { module = "io.insert-koin:koin-compose-viewmodel", version.ref = "koin_version" }
koin-compose-view-model-navigation = { module = "io.insert-koin:koin-compose-view-model-navigation", version.ref = "koin_version" }
#koin-android
koin-android = { module = "io.insert-koin:koin-android", version.ref = "koin_version" }
koin-androidx-compose = { module = "io.insert-koin:koin-androidx-compose", version.ref = "koin_version" }

[bundles]
koin-android = [
    "koin-android",
    "koin-androidx-compose"
]
koin-compose = [
    "koin-compose",
    "koin-compose-viewmodel",
    "koin-compose-view-model-navigation"
]Code language: PHP (php)

In build.gradle.kts

androidMain.dependencies {
            //...
            implementation(libs.bundles.koin.android)
        }
        commonMain.dependencies {
            //....
            implementation(libs.bundles.koin.compose)
        }Code language: JavaScript (javascript)

Initiate Koin in androidMain module

class MyApplication: Application() {

    override fun onCreate() {
        super.onCreate()
        initKoin {
            androidContext(this@MyApplication)
        }
    }
}

Mention MyApplication.kt in AndroidManifest.xml

        android:name=".MyApplication"Code language: JavaScript (javascript)

Initiate koin in iosMain module

fun MainViewController() = ComposeUIViewController(
    configure = {
        initKoin()
    }
) { App() }

Leave a Reply

Your email address will not be published. Required fields are marked *