Moxy
Moxy copied to clipboard
Генерируется несколько ViewState в многомодульном проекте (версии 2.1.1 и 2.1.2)
После обновления до 2.1.2 билд многомодульного проекта фейлится с ошибкой:
Type moxy.MvpView$$State is defined multiple times
На 2.1.1 то же самое, а вот 2.0.2 билдится нормально.
Полный лог билда: https://travis-ci.com/github/RankoR/android-smart-rate/jobs/341635309
Проект, на котором воспроизводил: https://github.com/RankoR/android-smart-rate/
Да, это известная проблема, фикс уже в процессе. С вашей стороны это вызвано тем, что BasePresenter у вас определён как в библиотечном модуле, так и в app модуле. В качестве временного решения вы можете сделать в модуле MyBaseView: MvpView, и указать его в BasePresenter. Но фикс так себе, и проблему, конечно, нужно решить со стороны библиотеки. Спасибо за подробный репорт!
В версии 2.1.1 аннотация @InjectViewState
стала наследуемой, и была добавлена в MvpPresenter
, чтобы убрать необходимость указывать её вручную на каждом презентере.
Эта аннотация является точкой входа для процессора аннотаций, который генерирует ViewState
. Для каждого презентера, унаследованного от MvpPresenter
, будет сгенерирован ViewState
для того интерфейса View, который указан в generic-параметре этого презентера.
Проблема: если в двух разных модулях приложения есть BasePresenter<MvpView>
, процессор аннотаций сгерирует moxy.MvpView$$State
в обоих модулях, и приложение не скомпилируется из-за дублирования класса.
Предлагаемое решение:
Не генерировать ViewState
для Presenter
, если:
- этот
Presenter
- абстрактный класс - ИЛИ этот
Presetner
имеет в generic-параметре не конкретный интерфейс<SomeView>
, а<T extends SomeView>
Приветствую
А в случае, если один модуль содержит абстрактный BaseDocsPresenter<DocsView>
, а в нескольких других модулях описаны его наследники, то есть какая-то возможность избежать множественной генерации ViewState
?
@youndie у наследников генерируются отдельные ViewState для DocsView, и в итоге образуется коллизия?
да, на каждый модуль генерируется свой ViewState
up, проблема от @alaershov все еще существует
Несколько часов пытался понять в чем дело, пока не нашел этот тред( Есть какие-нибудь новости по фиксу?
Хмм, у нас в многомодульном проекте всё было шоколадно =( Может у вас есть какое-то наследование презентеров сквозь модули? Или вью стейтов. Сложно предположить, что за кейс