假设,我想创建具有 Retrofit 2.0.0 依赖项的 android 库。如果将使用我的库的开发人员在他的项目中也将依赖于 Retrofit 较低版本(即 1.9.0),gradle 将如何解决这个问题?另外,在我自己的库中使用像 Retrofit 这样的库来简化代码是不是一种不好的方法?
最佳答案
Gradle有很多依赖解析策略,你可以看看dependency management官方 Gradle 用户指南的一部分。特别是在 52.2.3。解决版本冲突。
最常见的策略是最新的:
Newest: The newest version of the dependency is used. This is Gradle's default strategy, and is often an appropriate choice as long as versions are backwards-compatible.
失败:
Fail: A version conflict results in a build failure. This strategy requires all version conflicts to be resolved explicitly in the build script. See ResolutionStrategy for details on how to explicitly choose a particular version.
因此,gradle 构建脚本中依赖项解析的行为取决于使用的解析策略。在大多数情况下,将使用较新的版本。
像“在我自己的库中使用像 Retrofit 这样的库来简化代码是不是一种糟糕的方法?”之类的问题主要是基于意见,对我来说。您可以使用您需要的任何东西,特别是如果您没有它就无法做某事,或者您自己实现它会花费太长时间。像 Gradle 这样的工具旨在简化您的生活,并尝试解决您可以通过传递依赖遇到的大多数问题,而您不必为此担心太多。如果您没有创建一些广泛使用的库,那么毫无疑问,它应该随处运行。
关于android - gradle如何解决Retrofit等不同版本的重复依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33079042/