Задать вопрос
@Nov1k

Почему для работы с библиотекой, использующей koin нужно добавлять koin зависимость в root приложение?

Пытаюсь сделать библиотеку которая используем koin и добавить ее в root приложение через .aar файл. Runtime crush.
java.lang.NoClassDefFoundError: Failed resolution of: Lorg/koin/dsl/KoinApplicationKt;
        at com.w.libraryapp.di.DemoSdkApplication.init(DemoSdkApplication.kt:15)
        at com.w.rootapp.MainActivity.onCreate(MainActivity.kt:11)
        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)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "org.koin.dsl.KoinApplicationKt" on path: DexPathList[[zip file "/data/app/com.w.rootapp-B3bQ-BAtuqIeS9-mBm7vlw==/base.apk"],nativeLibraryDirectories=[/data/app/com.w.rootapp-B3bQ-BAtuqIeS9-mBm7vlw==/lib/x86, /system/lib, /vendor/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at com.w.libraryapp.di.DemoSdkApplication.init(DemoSdkApplication.kt:15)
        at com.w.rootapp.MainActivity.onCreate(MainActivity.kt:11)
        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)

Если добавить koin зависимость в root приложение то чинится, но root приложение не должно использовать koin.
А вот если добавлять библиотеку в root приложение не как .aar , а отельным модулем то все отлично работает и в gradle модуля root приложения зависимостей koin добавлять не требуется.
Приложение связанное с библиотекой через модуль - https://github.com/Novikov/MarketPlace
Приложение с подключенной библиотекой через .aar - https://github.com/Novikov/RootApp
Библиотека отдельным модулем - https://github.com/Novikov/LibApp
  • Вопрос задан
  • 148 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы