@Nov1k

Как подключить библиотеку-матрешку к мастер приложению?

Пишу android библиотеку, которая подключат к себе в gradle другие библиотеки. При подключении моей библиотеки к мастер приложению - runtime exception:

java.lang.NoClassDefFoundError: Failed resolution of: Lretrofit2/converter/moshi/MoshiConverterFactory;
    at com.test.player.di.AppContainer.<init>(AppContainer.kt:33)
    at com.test.player.presentation.player.PlayerFragment.onAttach(PlayerFragment.kt:14)
    at androidx.fragment.app.Fragment.performAttach(Fragment.java:2922)
    at androidx.fragment.app.FragmentStateManager.attach(FragmentStateManager.java:464)
    at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:275)
    at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189)
    at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100)
    at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002)
    at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3138)
    at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:3072)
    at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:251)
    at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:502)
    at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:246)
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1334)
    at android.app.Activity.performStart(Activity.java:7029)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2741)
    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 "retrofit2.converter.moshi.MoshiConverterFactory" on path: DexPathList[[zip file "/data/app/com.w.rootapp-yEIBY0UbE9bKTdmbKW6ilA==/base.apk"],nativeLibraryDirectories=[/data/app/com.w.rootapp-yEIBY0UbE9bKTdmbKW6ilA==/lib/x86, /system/lib, /vendor/lib]]


Т.е библиотеки из моей sdk не попадают в финальный dex. Переключился на project вид студии и убедился в этом. Библиотек из моей sdk - нет. Почему?
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 1
@fuliozor
Web and Android developer
По умолчанию зависимости не попадают в библиотеку при сборке и это правильно. Вообще это очень плохая идея если вы не понимаете что именно и зачем вы делаете. Правильным решением будет опубликовать вашу библиотеку в maven репозитории, при этом генерируя pom.xml с нужными зависимостями (в этом вам поможет плагин для gradle - maven-publish). Тогда при подключении вашей библиотеки в проект gradle автоматически подтянет нужные зависимости из pom.xml в проект.
Если же вы все таки хотите запихнуть зависимости в aar то вам стоит копать в сторону fat-aar, например мне удалось найти вот такой плагин https://github.com/kezong/fat-aar-android
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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