gradle 如何解析不同版本的同一个库两次,并在运行时同时使用?

How can gradle resolve the same lib with different version twice, and use both at runtime?

我有一个具有多个工件依赖项的应用程序。这些工件也依赖于它们自己。

所以我可以有一个依赖关系树。

   ___ B
A         \
    _______ C

假设A依赖B和C,B也依赖C。

B 取决于 C:1.0.1 A依赖于C:1.0.1.1

我希望在编译我的应用程序时 运行,只使用更高版本。然而这并没有发生。

当我 运行 我的应用程序,并在主要 A 应用程序流程中调试 C class 时,它使用较新的 C 版本,但是当 A 调用 B 而后者又调用 C 时,它使用旧版本。

我不希望相同的 class 版本在项目中出现两次。这怎么可能,为什么 gradle 不只采用它应该做的最新版本。

aar 依赖项正在解析两次:

已解决,

问题是巨大的依赖不匹配。此外,常量(f.e。在 kotlin 中使用 const val)被保存为 compile 值,而不是引用实际常量(例如 val) 在引用的库中。

如果您需要通过仅更新库中的常量文件来更改应用程序的行为,请确保未声明常量,而是使用通过 get 方法访问的非变量值。