Skip to content

Instantly share code, notes, and snippets.

@ThePredators
Last active March 19, 2022 12:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ThePredators/772a7b29ce01c423946954fddd38cec2 to your computer and use it in GitHub Desktop.
Save ThePredators/772a7b29ce01c423946954fddd38cec2 to your computer and use it in GitHub Desktop.

Koin in AAR ?

Setup :

package fr.freekit.koin

import org.koin.core.Koin
import org.koin.core.KoinComponent

interface FKoinKomponent : KoinComponent {
    override fun getKoin(): Koin = KoinCtx.koin
}
package fr.freekit.koin

import android.content.Context
import android.util.Log.VERBOSE
import org.koin.android.ext.koin.androidContext
import org.koin.android.ext.koin.androidLogger
import org.koin.core.Koin
import org.koin.core.logger.Level
import org.koin.dsl.koinApplication

object KoinCtx {
    private lateinit var appContext: Context

    val koin: Koin by lazy {
        koinApplication {
            androidContext(appContext)
            androidLogger(level = Level.ERROR)
            modules(
                listOf(
                  // List all your Koin Module in here
                )
            )
        }.koin
    }

    @Synchronized
    fun init(context: Context) {
        check(!KoinCtx::appContext.isInitialized) { "Already initialized!" }
        appContext = context.applicationContext
    }
}

How to use ?

package fr.freekit.sampleApp

import org.koin.android.ext.koin.androidContext
import org.koin.core.context.startKoin
import fr.freekit.KoinCtx.init

class SampleFreekit: MultiDexApplication() {

    override fun onCreate() {
        super.onCreate()

        KoinCtx.init(context)

        startKoin {
            androidContext(this@SampleFreekit)
            modules(
                listOf(
                    // list your app modules in here
                )
            )
        }
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment