Объяснение:
Попробуйте организовать подмодулях со следующими правилами:
1).Главный модуль приложения с Activity
, Fragment
+ xmlayouts
Нет модули не должны зависеть от этого модуля. Этот модуль будет зависеть от модуля ресурсов, подмодуль 1, подмодуль 2.
Не храните общие ценности в этом модуле, как colors
, dimens
и т.д.
2).модуль ресурсов с colors
, attrs
, dimens
и т.д.
Просто создать андроида библиотечный модуль и хранить здесь только общие ресурсы. Этот модуль не должен иметь никаких зависимостей. И каждый модуль, который нуждается в ресурсах, будет зависеть от этого модуля.
3).Подмодуль 1 с пользовательскими предупреждениями.
Этот модуль будет зависеть от ресурсный модуль.
4).Подмодуль 2 с пользовательскими видами.
Этот модуль будет зависеть от ресурсный модуль.
Diagramm:
Код:
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
везде.
UPDATE
Не забудьте импорт правильного R
класса.
спасибо за подробное объяснение – RJFares
После того как я переместил все ресурсы (за исключение макетов), цвет в моем, которые вводимом коэффициенте ссылающегося значение, сгенерированные в папке сборки нет (например, @ цвета/черного или @color/md_brown_800). Это значения, автоматически генерируемые в сборке, но не установленные мной, конечно. Как решить эту проблему? – RJFares
@RJFares Это довольно просто. В 'import' вы должны проверить, что вы импортируете класс« R »из целевого модуля, а не из текущего модуля. Поскольку класс 'R' генерируется для каждого модуля – Alexander