Импорт AndroidXModule в Kodein вызывает сбой - PullRequest
0 голосов
/ 02 февраля 2019

Это основной код приложения.Позвольте мне отметить, что это объявлено в 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

...