在模块之间共享组件

RJF*_*res 6 android module intellij-idea android-studio

在我的项目中,我有主应用程序模块,它依赖于我为项目添加的子模块,假设一个用于自定义警报对话框,另一个用于自定义视图等...

如何从主应用程序模块获取子模块中的值的引用?例如,具有布局xml的自定义警报对话框需要采用主应用程序模块中的颜色值.

我试图将主应用程序模块添加为子模块中的依赖项,但由于存在循环依赖性,因此肯定不会起作用.

Ale*_*der 18

说明:

尝试使用下一个规则组织子模块:

1). 主要应用模块Activity,Fragment+xmlayouts

没有模块必须依赖于此模块.该模块将依赖于资源模块,子模块1,子模块2.

不要存放任何共享的价值在该模块中一样colors,dimens等等.

2). 资源模块colors,attrs,dimens等.

只需创建android库模块并在此处仅存储共享资源.此模块必须没有依赖项.每个需要资源的模块都依赖于这个模块.

3). 子模块1带有自定义警报.

该模块将依赖于资源模块.

4). 具有自定义视图的子模块2.

该模块将依赖于资源模块.

Diagramm:

在此输入图像描述

码:

https://github.com/AlexanderGarmash/AndroidModulesShowcase

描述:

<module_root>/app/build.gradle 依赖部分:

compile project (':ResourceModule')
compile project (':Submodule1')
compile project (':Submodule2')
Run Code Online (Sandbox Code Playgroud)

<module_root>/ResourceModule/build.gradle 依赖部分:

没有

<module_root>/Submodule1/build.gradle 依赖部分:

compile project (':ResourceModule')
Run Code Online (Sandbox Code Playgroud)

<module_root>/Submodule2/build.gradle 依赖部分:

compile project (':ResourceModule')
Run Code Online (Sandbox Code Playgroud)

好处:

  • 低耦合
  • 透明清晰的结构

缺点:

  • 如果你有很多模块,你不要忘记链接到ResourceModule任何地方.

UPDATE

不要忘记导入正确的R类. 在此输入图像描述