库模块依赖性与App模块依赖性

时间:2018-08-07 22:51:44

标签: android android-gradle build.gradle

到目前为止,我已经完成了许多小型项目,例如单屏幕,测验应用程序,音乐结构等。作为一个新手,我一直在寻找项目的可重用性,因为在所有项目中都有很多相同的软件包,例如utils。等等...因此,我从下面的链接开始了解Android库模块:

https://developer.android.com/studio/projects/android-library

我的问题是,即使在库模块中添加了依赖关系后,为什么我也必须在应用程序模块中添加相同的依赖关系?例如,我的库模块使用edmodo android图像裁剪器(https://github.com/ArthurHub/Android-Image-Cropper)进行图像裁剪,为了在应用程序模块中使用它,我还必须在应用程序模块中添加其依赖项!为什么?可以改善吗?谢谢大家的期待!

1 个答案:

答案 0 :(得分:1)

  

为什么还要在应用程序模块中添加相同的依赖项?

这是因为依赖项未随.aar/.jar文件一起提供。存在编译时绑定,因为要进行库编译,所以要进行运行时实现,您需要在应用程序模块中包括这些库。

  

可以改进吗?

可以做到这一点,但理想情况下,您应该让app模块提供依赖项。这是因为,如果两个库附带了它们的依赖关系,而这两个库都可以使用它们,则公共依赖关系将被复制并相互重叠。这将导致构建问题。

如果您仍然想继续(可能是拥有专有的内部模块),则可以提取依赖项库jar并将其包含在libs目录中,或者将其与依赖项一起发布在maven中。 / p>