如何避免资产冗余将 Android 应用程序拆分为模块?
How to avoid redundancy of assets splitting Android app into modules?
我打算将我的应用程序按功能拆分成一组独立的模块。许多功能(我的新设计中的模块)共享图像资产和字符串常量。
如果我在 main/app 模块中添加可重用资产,那么即使我不包含使用它们的模块,它们也会被编译到 APK 中。如果我将可重用资产添加到所有模块,那么我将面临冗余带来的所有问题。
将应用拆分为模块的正确方法是什么?我设计的最终目标是 enable/disable 构建阶段的任何功能(通过 build.gradle)。
假设我们有应用程序 A 和库 L1、L2 和 L3。 L1 和 L2 共享一些公共资源 and/or 资产。从生产的角度来看,无论如何只会包含这些公共资源 and/or 资产的一个副本,但从开发的角度来看,冗余是不好的(例如,确保您更改两个副本)。
因此,我将创建一个资源模块 Mfoo,其中包含那些公共资源 and/or 资产。让 L1 和 L2 依赖于 Mfoo。 A 的不同产品风味(?)取决于 L1、L2 和 L3[= 的各种混合32=]。只会使用 Mfoo 的一个副本,因为 Gradle 会消除传递依赖。这与 L1 和 L2 没有什么不同,两者都取决于 support-v13
.
当然,根据您拥有的库数量和共享内容的组合,您可以在此处进入 Michael Bay 级别的组合爆炸。
我打算将我的应用程序按功能拆分成一组独立的模块。许多功能(我的新设计中的模块)共享图像资产和字符串常量。
如果我在 main/app 模块中添加可重用资产,那么即使我不包含使用它们的模块,它们也会被编译到 APK 中。如果我将可重用资产添加到所有模块,那么我将面临冗余带来的所有问题。
将应用拆分为模块的正确方法是什么?我设计的最终目标是 enable/disable 构建阶段的任何功能(通过 build.gradle)。
假设我们有应用程序 A 和库 L1、L2 和 L3。 L1 和 L2 共享一些公共资源 and/or 资产。从生产的角度来看,无论如何只会包含这些公共资源 and/or 资产的一个副本,但从开发的角度来看,冗余是不好的(例如,确保您更改两个副本)。
因此,我将创建一个资源模块 Mfoo,其中包含那些公共资源 and/or 资产。让 L1 和 L2 依赖于 Mfoo。 A 的不同产品风味(?)取决于 L1、L2 和 L3[= 的各种混合32=]。只会使用 Mfoo 的一个副本,因为 Gradle 会消除传递依赖。这与 L1 和 L2 没有什么不同,两者都取决于 support-v13
.
当然,根据您拥有的库数量和共享内容的组合,您可以在此处进入 Michael Bay 级别的组合爆炸。