今天,我开始为我的公司建立一个库,这样我们就可以避免在一些应用程序中出现重复代码。该库使用了几个在应用程序中重复的依赖项。在这种情况下,改装和事件总线。无论如何,当我把我的图书馆包括在内时,它看起来是这样的:
implementation (project(":mylib")
知道我将使用Eventbus以及其他一些依赖项,我想测试排除它们,以避免重复的依赖项。因此,我将Eventbus添加到应用程序的gradle文件中,并将Eventbus从我的库中排除。
implementation 'org.greenrobot:eventbus:3.0.0'
implementation (project(":mylib")){
exclude module: 'eventbus'
}
现在我完全意识到,我不能仅仅通过导入来在应用程序中包括Eventbus
mylib
当然,我在过去排除了依赖项以避免构建冲突,所以我熟悉它的用法,但我只是想尝试一下,因为我突然意识到,我真的不知道在这种排除的情况下会发生什么。术语排除(对我来说)意味着这个依赖关系在排除点不是编译期,然而,这不可能,因为第三方库(在本例中是Eventbus)在
mylib公司
如果它不编译,全世界的代码都会崩溃,因为奇怪的库依赖性问题。那么这里到底发生了什么?它是否仍为库编译,也为应用程序编译,但不知何故,这些依赖项只是分开了?如果是这样的话,那似乎效率不高,因为您仍然需要复制项目中的所有方法。
显然,我对这方面的知识有限,因此如果有人能澄清这一点,我将不胜感激。