-
[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() }
그럼 이만 끝!