安卓:如何解决库依赖冲突问题

9

我正在开发一个Android库。该库有一些依赖项。如果开发者在已经存在于我的库中的其他依赖项的情况下使用我的库,我不确定会发生什么。我试图搜索相关信息,但没有找到任何内容。

例如,我在我的库中使用版本X的Volley库,并将其作为gradle软件包发布。开发人员除了导入我的库之外,还会导入版本Y的Volley库。

最好的方法是如何包含一个依赖库(模块、jar或软件包),以尽量减少冲突情况。


1
希望有文档可以回答这个问题。但目前我们只能寄希望于StackOverflow来解决这个问题。尽管它不是特定的问题,但是所有的Android程序员最终都必须处理它。一般性的答案比一千个具体的答案更有帮助。 - SMBiggs
2个回答

1

两个选项

  1. Possible ways to include the dependencies of your dependencies in them is to create a fat/uber/share jar (there are Gradle plugins for that). Use a custom classloader to load jars within a jar using One-Jar. Or to use Jar Jar Links.
  2. The second option is to specificaly exclude transistive dependencies doing:

    compile('X') {
        exclude module: 'Y'
    }
    

0
您需要指定用户以排除其他库。 我的Gradle文件中有一个示例。
compile('com.mobprofs:retrofit-simplexmlconverter:1.1') {
    exclude module: 'stax'
    exclude module: 'stax-api'
    exclude module: 'xpp3'
}

通常情况下,如果用户遇到冲突并知道gradle的工作原理,他就能够添加排除库。

这些模块将从导入的库中排除?还是用户项目? - Abhishek Batra
请转到以下链接:https://docs.gradle.org/current/userguide/dependency_management.html#sec:excluding_transitive_dependencies - Raluca Lucaci
你看过这里的内容了吗?https://dev59.com/pGQn5IYBdhLWcg3wvpQV 和 https://dev59.com/GWQn5IYBdhLWcg3wmIAs - Raluca Lucaci

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接