首页 > 解决方案 > 库模块依赖与 App 模块依赖

问题描述

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

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

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

标签: androidandroid-gradle-pluginbuild.gradle

解决方案


为什么我还必须在 app 模块中添加相同的依赖项?

这是因为依赖项没有随您的.aar/.jar文件一起提供。编译时绑定存在,由于您的库编译,但为了具有运行时实现,您需要将这些库包含在您的应用程序模块中。

可以改进吗?

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

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


推荐阅读