gradle 如何解决 Retrofit 等不同版本的重复依赖?

How does gradle resolve duplicate dependencies with different versions like Retrofit?

假设,我想创建具有 Retrofit 2.0.0 依赖项的 android 库。如果将使用我的库的开发人员在他的项目中也将依赖于 Retrofit 较低版本(即 1.9.0),gradle 将如何解决这个问题?另外,在我自己的库中使用像 Retrofit 这样的库来简化代码是不是不好的方法?

Gradle有很多依赖解析策略,可以看看官方Gradle用户指南的dependency management部分。特别是在 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 这样的工具是为了简化你的生活,并试图解决你可以通过传递依赖遇到的大多数问题,你不必为此担心太多。如果您没有创建一些广泛使用的库,那应该 运行 无处不在。