ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android] koin 적용시 에러 DefinitionOverrideException: Definition '[Factory:'kotlin.Unit']' try to override existing definition.
    카테고리 없음 2021. 10. 10. 15:18

     

     

    안녕 형들~ 🙌

    오늘은 koin 적용시에 module 을 잘 적용하지 못해서 발생하는 DefinitionOverrideException 에 처리해 보려고해!! 

     

    E/AndroidRuntime: FATAL EXCEPTION: main
        Process: [project], PID: 24834
        java.lang.RuntimeException: Unable to create application com.xxxxx.Application: org.koin.core.error.DefinitionOverrideException: Definition '[Factory:'kotlin.Unit']' try to override existing definition. Please use override option to fix it
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7540)
            at android.app.ActivityThread.access$1500(ActivityThread.java:301)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2158)
            at android.os.Handler.dispatchMessage(Handler.java:106)
            at android.os.Looper.loop(Looper.java:246)
            at android.app.ActivityThread.main(ActivityThread.java:8595)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)

     

    koin 그래프에 모듈이 없던지 있더라도 override 가 안되어있는 경우에 발생하는 에러인데,

    한번 정의된 koin 을 사용하는 경우에, loadKoinModules 를 사용하고 그 안에 들어가는 module 쪽에

    (override = true) { single | factory } 를 설정해줘서 해당 에러를 피할 수 있으니깐 잘 적용시켰는지 확인해주길 바래~

     

    아래는 Test 클래스가 있다고 할 때 loadKoinModules 을 이용해서 어떻게 override 시킬 수 있는지 적어본 거니깐 참고 해주면 좋겠어~

     

    loadKoinModules(
      module(override = true) { newModule }
    )
    
    val newModule = single<Test> { Test() }

     

    그럼 이만 끝!

     

     

Designed by Tistory.