我们说我有一个包含4个模块的Android项目:app
,feature1
,feature2
,feature3
和common
。
app
取决于所有三个feature*
模块。 feature*
个模块不依赖于彼此,但它们依赖于common
。
如果我有一个用于其中两个库的库(让我们说我在feature1
和feature2
中使用了Retrofit),哪个解决方案被认为是更好的练?
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
位于feature1
和feature2
gradle文件中
{li} api 'com.squareup.retrofit2:retrofit:2.4.0'
在common
gradle文件中
醇>
第一个解决方案提供了更多控制 - 编译器不允许我在feature3
中使用Retrofit,除非我在gradle文件中明确创建了这个依赖项。然而,第二个代码导致代码量减少,没有重复(是的,我知道,我可以提取常量以减少代码重复,但仍然会有比第二种方法更多的代码)。
答案 0 :(得分:0)
创建具有公共依赖项的feature.gradle
文件以及项目文件夹中的其他公共代码。在feature1
和feature2
build.gradle
添加以下内容:
apply from: rootProject.file('feature.gradle')
答案 1 :(得分:0)
我认为,最好只在需要的地方导入所需的库。如果你关心代码的重复,那么为什么你不关心你在'app'和'common'build.gradle中有重复:
implementation project(':feature1')
implementation project(':feature2')
implementation project(':feature3')
所以我觉得没关系,最好只在你需要的地方导入库。