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

Работа с несколькими модулями #209

Open a-solovyev opened 6 years ago

a-solovyev commented 6 years ago

Имеется следующая структура FeatureModule -- ActivityA -- ActivtyB FullAppModule -- ActivityC

FeatureModule - отдельная фича приложения (доступная для запуска отдельно от полного приложения), FullAppModule - полное приложение, которые содержит в себе FeatureModule. ActivityA, ActivityB, ActivityC используют Moxy.

Согласно документации, чтобы сборка FullAppModule успешно работала необходимо в FeatureModule в build.gradle указать путь arg("moxyReflectorPackage", "some.unique.package.name") и прописать его в FullAppModule в виде аннотации @RegisterMoxyReflectorPackages.

Если сделать таким способом, то при запуске FeatureModule отдельно от FullAppModule функционал Moxy не будет работать, т.к. MvpProcessor ищет MoxyReflector внутри пакета com.arellomobile.mvp, а его там нет, т.к. из-за правила arg("moxyReflectorPackage", "some.unique.package.name") он сгенерировался в другом пакете.

Концепция с RegisterMoxyReflectorPackages не очень подходит, когда в проекте есть модули, доступные для запуска по отдельности.

Планируется ли какой-то фикс для этой ситуации?

senneco commented 6 years ago

Это интересная точка роста. Только у меня пока нет идей, как это можно хорошо сделать. Наверное, нужно добавлять какой-то аргумент аннотейшен процессора и как-то по другому генерировать код.

xanderblinov commented 6 years ago

Есть идея сделать как в архитектурных компонентах от Google. Проработаем этот вариант

xanderblinov commented 6 years ago

Модули ActivityA и ActivtyB это library module, так? А кто их запускает?

a-solovyev commented 6 years ago

Описанная ситуация - для проекта с поддержкой Instant App.

В представленной выше схеме это FeatureModule - фича из InstantApp, FullModule - модуль полного приложения, который включает в себя FeatureModule. Соответственно, ActivityA/ActivityB могут запускаться как из FeatureModule, так и из полного приложения. ActivityC - запускается только из полного приложения.

sergevalevich commented 5 years ago

@xanderblinov @senneco could you please check this PR (https://github.com/Arello-Mobile/Moxy/pull/247) ? Some of the reported multimodule issues should be fixed