到目前为止,我已经完成了许多小型项目,例如单屏幕,测验应用程序,音乐结构等。作为一个新手,我一直在寻找项目的可重用性,因为在所有项目中都有很多相同的软件包,例如utils。等等...因此,我从下面的链接开始了解Android库模块:
https://developer.android.com/studio/projects/android-library
我的问题是,即使在库模块中添加了依赖关系后,为什么我也必须在应用程序模块中添加相同的依赖关系?例如,我的库模块使用edmodo android图像裁剪器(https://github.com/ArthurHub/Android-Image-Cropper)进行图像裁剪,为了在应用程序模块中使用它,我还必须在应用程序模块中添加其依赖项!为什么?可以改善吗?谢谢大家的期待!
答案 0 :(得分:1)
为什么还要在应用程序模块中添加相同的依赖项?
这是因为依赖项未随.aar/.jar
文件一起提供。存在编译时绑定,因为要进行库编译,所以要进行运行时实现,您需要在应用程序模块中包括这些库。
可以改进吗?
可以做到这一点,但理想情况下,您应该让app模块提供依赖项。这是因为,如果两个库附带了它们的依赖关系,而这两个库都可以使用它们,则公共依赖关系将被复制并相互重叠。这将导致构建问题。
如果您仍然想继续(可能是拥有专有的内部模块),则可以提取依赖项库jar并将其包含在libs
目录中,或者将其与依赖项一起发布在maven中。 / p>