Arello-Mobile / Moxy

Moxy is MVP library for Android
https://github.com/Arello-Mobile/Moxy/wiki
MIT License
1.6k stars 207 forks source link

Didn't find class "com.arellomobile.mvp.MoxyReflector" [Moxy-x kapt в много модульном проекте] #260

Closed ZadorozhnyiSemen closed 5 years ago

ZadorozhnyiSemen commented 5 years ago

Добрый день, столкнулся с проблемой: В многомодульном проекте (используется moxy-x dagger2 kapt) Следовал указаниям по вики https://github.com/Arello-Mobile/Moxy/wiki/Multiple-modules приблизительная структура :app includes :registration | :registration includes :shared | :app includes :shared :shared хранит базовые классы для фрагментов и активити moxy и зависимости

api 'tech.schoolhelper:moxy-x:1.7.0' api "tech.schoolhelper:moxy-x-androidx:1.7.0" kapt "tech.schoolhelper:moxy-x-compiler:1.7.0"

остальные можули только компайлер для moxy-x

Все сделано по вики - объявлен @RegisterMoxyReflectorPackages с уникальми именами и аргументы для kapt прописаны

MoxyReflector'ы генерируются, MoxyReflector в модуле :app, собирает в себя все байндеры и провайдеры

Но в рантайме приложение падает со следующей ошибкой

 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.sample.app, PID: 9115
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/arellomobile/mvp/MoxyReflector;
    at com.arellomobile.mvp.MvpPresenter$Binder.bind(MvpPresenter.java:153)
    at com.arellomobile.mvp.MvpPresenter.<init>(MvpPresenter.java:26)

 Caused by: java.lang.ClassNotFoundException: Didn't find class "com.arellomobile.mvp.MoxyReflector" on path: DexPathList[[zip file "/data/app/com.sample.app-fPS6LFIkqRjJigLJMa6C7A==/base.apk"],nativeLibraryDirectories=[/data/app/com.sample.app-fPS6LFIkqRjJigLJMa6C7A==/lib/arm64, /system/lib64]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
    at java.lang.ClassLoader.loadClass

Что может послужить причиной?

aasitnikov commented 5 years ago

Посмотри https://github.com/Arello-Mobile/Moxy/issues/134 Ещё в application модуле нужно не указывать moxyReflectorPackage

ZadorozhnyiSemen commented 5 years ago

Да, исключение из :app помогло, спасибо!