我打算将我的应用程序功能分成一组独立的模块。许多功能(我的新设计中的模块)共享图像资源和字符串常量。
如果我在main / app模块中添加可重用资产,那么即使我不包含使用它们的模块,它们也会被编译到APK中。如果我将可重用资产添加到所有模块,那么我将面临冗余带来的所有问题。
将应用分成模块的正确方法是什么?我的设计的最终目标是在构建阶段(通过build.gradle)启用/禁用任何功能。
答案 0 :(得分:2)
假设我们有应用A,库L 1 ,L 2 和L 3 。 L 1 和L 2 共享一些公共资源和/或资产。从生产的角度来看,无论如何只会包含这些公共资源和/或资产的一个副本,但从开发的角度来看冗余是不好的(例如,确保您更改两个副本)。
因此,我创建了一个包含这些公共资源和/或资产的资源模块M foo 。 L 1 且L 2 取决于M foo 。具有不同的A产品风味(α)取决于L 1 ,L 2 和L 3 的各种混合物。将只使用M foo 的一个副本,因为Gradle将净化传递依赖性。这与L 1 和L 2 没有什么不同,这取决于support-v13
。
当然,根据您拥有的图书馆数量和共享内容的组合,您可以在这里进入Michael Bay级别的组合爆炸。