Это основной код приложения.Позвольте мне отметить, что это объявлено в AndroidManifest.
class MainApplication: Application(), KodeinAware{
override val kodein = Kodein.lazy{
bind() from singleton {TestClass()}
import(androidXModule(this@MainApplication))
}
}
Когда я пытаюсь получить доступ к экземпляру TestClass () из Activity (который является KodeinAware):
override val kodein by closestKodein()
private val test: TestClass by instance()
TestClass ():
class TestClass{
val x = 5
}
А затем в onCreate, например,
val x = test.x
Вылетает.Когда импорт androidXModule закомментирован, он работает правильно.Очевидно, что никакой функциональности androidXModule здесь не используется, но он мне нужен для других случаев.Это было протестировано на простом проекте, в котором нет ничего, кроме MainActivity, TestClass и пользовательского MainApplication.Вот исключение logcat:
2019-02-01 19:16:12.472 20895-20895/com.x.x.x E/AndroidRuntime: FATAL
EXCEPTION: main
Process: com.x.x.x, PID: 20895
java.lang.NoSuchMethodError: No static method importOnce$default(Lorg/kodein/di/Kodein$Builder;Lorg/kodein/di/Kodein$Module;ZILjava/lang/Object;)V in class Lorg/kodein/di/Kodein$Builder; or its super classes (declaration of 'org.kodein.di.Kodein$Builder' appears in /data/app/com.x.x.x-Y3HhfW-NAj95_Rb4y3S51A==/split_lib_dependencies_apk.apk)
at org.kodein.di.android.x.ModuleKt$androidXModule$1.invoke(module.kt:17)
at org.kodein.di.android.x.ModuleKt$androidXModule$1.invoke(Unknown Source:2)
at org.kodein.di.internal.KodeinBuilderImpl.import(KodeinBuilderImpl.kt:46)
at org.kodein.di.Kodein$Builder$DefaultImpls.import$default(Kodein.kt:301)
at com.x.x.x.MainApplication$kodein$1.invoke(MainApplication.kt:21)
at com.x.x.x.MainApplication$kodein$1.invoke(MainApplication.kt:15)
at org.kodein.di.internal.KodeinImpl$Companion.newBuilder(KodeinImpl.kt:22)
at org.kodein.di.internal.KodeinImpl$Companion.access$newBuilder(KodeinImpl.kt:21)
at org.kodein.di.internal.KodeinImpl.<init>(KodeinImpl.kt:19)
at org.kodein.di.Kodein$Companion$lazy$1.invoke(Kodein.kt:414)
at org.kodein.di.Kodein$Companion$lazy$1.invoke(Kodein.kt:396)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at org.kodein.di.LazyKodein.getBaseKodein(Unknown Source:7)
at org.kodein.di.LazyKodein.getContainer(lateinit.kt:29)
at org.kodein.di.KodeinAwareKt$Instance$1.invoke(KodeinAware.kt:157)
at org.kodein.di.KodeinAwareKt$Instance$1.invoke(Unknown Source:8)
at org.kodein.di.KodeinProperty$provideDelegate$1.invoke(properties.kt:42)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at com.x.x..MainActivity.getTest(Unknown Source:25)
at com.x.x.x.MainActivity.onCreate(MainActivity.kt:22)
at android.app.Activity.performCreate(Activity.java:7009)
at android.app.Activity.performCreate(Activity.java:7000)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
"at com.xxxMainApplication $ kodein $ 1.invoke (MainApplication.kt: 21)" строка указывает на импорт androidXModule внутри MainApplication