Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
a-solovyev opened this issue Jul 18, 2018 · 5 comments
Open

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

a-solovyev opened this issue Jul 18, 2018 · 5 comments

Comments

@a-solovyev
Copy link

Имеется следующая структура
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
Copy link
Collaborator

senneco commented Jul 25, 2018

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

@xanderblinov
Copy link
Collaborator

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

@xanderblinov
Copy link
Collaborator

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

@a-solovyev
Copy link
Author

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

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

sergevalevich pushed a commit to sergevalevich/Moxy-Multimodule that referenced this issue Mar 3, 2019
…n module.

This allows Instant App support (Arello-Mobile#209),
running unit-tests for feature modules (Arello-Mobile#223)
and other issues Arello-Mobile#224.

Here, Moxy always references to MoxyReflector by com.arellomobile.mvp package and generates
MoxyReflectorDelegate for each module.

In order to use Moxy, there is no need to follow instructions described on this page https://github.com/Arello-Mobile/Moxy/wiki/Multiple-modules

Now it is only required to add 1 line of code to BaseActivity.onCreate of each module : MoxyReflector.registerDelegate(MoxyReflectorDelegate.INSTANCE);
@sergevalevich
Copy link

@xanderblinov @senneco could you please check this PR (#247) ?
Some of the reported multimodule issues should be fixed

sergevalevich pushed a commit to sergevalevich/Moxy-Multimodule that referenced this issue Jul 22, 2019
…n module.

This allows Instant App support (Arello-Mobile#209),
running unit-tests for feature modules (Arello-Mobile#223)
and other issues Arello-Mobile#224.

Here, Moxy always references to MoxyReflector by com.arellomobile.mvp package and generates
MoxyReflectorDelegate for each module.

In order to use Moxy, there is no need to follow instructions described on this page https://github.com/Arello-Mobile/Moxy/wiki/Multiple-modules

Now it is only required to add 1 line of code to BaseActivity.onCreate of each module : MoxyReflector.registerDelegate(MoxyReflectorDelegate.INSTANCE);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants