在我的项目中,我有一个主app模块,它依赖于我为项目添加的子模块,让我们说一个用于自定义警报对话框,另一个用于自定义视图等等...
如何从主应用程序模块获取子模块中的值的引用? 例如,具有布局xml的自定义警报对话框需要采用主应用程序模块中的颜色值。
我尝试将主app模块添加为子模块中的依赖项,但由于存在循环依赖,因此肯定不会起作用。
答案 0 :(得分:14)
尝试使用下一个规则组织子模块:
1)。 主应用模块 Activity
,Fragment
+ xmlayouts
没有模块必须依赖于此模块。此模块将依赖于 资源模块,子模块1,子模块2.
请勿在此模块中存储任何共享值,例如colors
,dimens
等。
2)。 资源模块包含colors
,attrs
,dimens
等。
只需创建android库模块并在此处仅存储共享资源。此模块必须没有依赖项。每个需要资源的模块都依赖于这个模块。
带有自定义提醒的3)。 子模块1 。
此模块取决于 资源模块 。
带有自定义视图的4)。 子模块2 。
此模块取决于 资源模块 。
https://github.com/AlexanderGarmash/AndroidModulesShowcase
<module_root>/app/build.gradle
依赖项部分:
compile project (':ResourceModule')
compile project (':Submodule1')
compile project (':Submodule2')
<module_root>/ResourceModule/build.gradle
依赖项部分:
没有
<module_root>/Submodule1/build.gradle
依赖项部分:
compile project (':ResourceModule')
<module_root>/Submodule2/build.gradle
依赖项部分:
compile project (':ResourceModule')
ResourceModule
无处不在。答案 1 :(得分:1)
如果要在库中使用资源值,则应在库模块而不是app模块中添加资源值。因为在添加库时,app可以使用库的资源,反之亦然。