Android:如何解决库依赖冲突

Android:如何解决库依赖冲突,android,gradle,Android,Gradle,我正在开发一个Android库。该库几乎没有依赖性。如果开发人员使用我的库时,库中已经存在其他依赖项,我不确定会发生什么。我试着用谷歌搜索,但什么也找不到 例如,我在我的库中使用版本X的Volley库,并将其作为gradle包提供。开发人员将截取版本Y与我的库一起导入 在库(模块、jar或包)中包含依赖项的最佳方式是什么,以便将冲突情况降至最低。您将指定用户排除其他LIB。 我的格拉德尔的例子 compile('com.mobprofs:retrofit-simplexmlconverter:1

我正在开发一个Android库。该库几乎没有依赖性。如果开发人员使用我的库时,库中已经存在其他依赖项,我不确定会发生什么。我试着用谷歌搜索,但什么也找不到

例如,我在我的库中使用版本X的Volley库,并将其作为gradle包提供。开发人员将截取版本Y与我的库一起导入


在库(模块、jar或包)中包含依赖项的最佳方式是什么,以便将冲突情况降至最低。

您将指定用户排除其他LIB。 我的格拉德尔的例子

compile('com.mobprofs:retrofit-simplexmlconverter:1.1') {
    exclude module: 'stax'
    exclude module: 'stax-api'
    exclude module: 'xpp3'
}
一般来说,如果用户有冲突,他将知道gradle是如何工作的,他将能够添加eclude libs两个选项

  • 将依赖项的依赖项包含在其中的可能方法是创建一个fat/uber/share jar(有Gradle插件可用于此)。使用自定义类加载器加载jar中的jar。或使用
  • 第二种选择是具体执行:


  • 这些模块将从导入的库中排除?还是用户项目?->转到50.4.7。排除可传递依赖项您是否可以查看此处和此处?如果有文档可以回答此问题,那就太好了。事实上,留给我们的是答案这个问题的最佳途径。虽然这并不具体,但这是所有android程序员最终都必须解决的问题。一个笼统的答案比一千个具体的答案更有帮助。
    compile('X') {
        exclude module: 'Y'
    }