在多模块Android项目中导入库的最佳实践

时间:2018-03-23 11:15:29

标签: android gradle

我们说我有一个包含4个模块的Android项目:appfeature1feature2feature3common

app取决于所有三个feature*模块。 feature*个模块不依赖于彼此,但它们依赖于common

如果我有一个用于其中两个库的库(让我们说我在feature1feature2中使用了Retrofit),哪个解决方案被认为是更好的练?

    {li> implementation 'com.squareup.retrofit2:retrofit:2.4.0'位于feature1feature2 gradle文件中 {li} api 'com.squareup.retrofit2:retrofit:2.4.0'common gradle文件中

    第一个解决方案提供了更多控制 - 编译器不允许我在feature3中使用Retrofit,除非我在gradle文件中明确创建了这个依赖项。然而,第二个代码导致代码量减少,没有重复(是的,我知道,我可以提取常量以减少代码重复,但仍然会有比第二种方法更多的代码)。

2 个答案:

答案 0 :(得分:0)

创建具有公共依赖项的feature.gradle文件以及项目文件夹中的其他公共代码。在feature1feature2 build.gradle添加以下内容:

apply from: rootProject.file('feature.gradle')

答案 1 :(得分:0)

我认为,最好只在需要的地方导入所需的库。如果你关心代码的重复,那么为什么你不关心你在'app'和'common'build.gradle中有重复:

implementation project(':feature1')
implementation project(':feature2')
implementation project(':feature3')

所以我觉得没关系,最好只在你需要的地方导入库。