自定义库:如何处理依赖项?

时间:2017-12-03 13:03:30

标签: android dependencies shared-libraries android-appcompat okhttp3

我不知道如何最好地处理包含Android库中的依赖项,并且在其他地方找不到任何明确的解释。

我创建了一个包含这些依赖项的Android库:

compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
compile 'com.android.support:support-v4:25.3.1'
compile 'com.android.support:recyclerview-v7:25.3.1'

compile 'com.squareup.okhttp3:okhttp:3.9.0'
compile 'com.github.bumptech.glide:glide:4.1.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.1.1'

包含这样的依赖关系是“好习惯”吗?当我的库包含在应用程序中,并且应用程序本身包含相同的依赖项时会发生什么?这些“重复”依赖关系是如何处理的?

如果使用该库的应用程序可能也包含相同的依赖项,则在Android库中包含依赖项的最佳方法是什么?

1 个答案:

答案 0 :(得分:4)

最佳做法是为了避免重复(因为它可能会使您的构建出现问题),您可以在每个项目build.gradle文件中添加exclude子句。

例如:

compile('com.github.bumptech.glide:glide:4.1.1') {
    exclude group: 'com.android.support', module: 'support-v4'
}

默认行为是确定所请求的依赖关系的最新版本 - 最新版本意味着最高版本号。

如果要检查是否存在重复项,可以使用以下命令在树中可视化库依赖项:

gradlew -q dependencies yourProject:dependencies --configuration compile

您可以找到more information here