Android : 如何创建一个没有冲突依赖的库

Android : How to create a library without conflicting dependencies

我正在创建一个 android 库,它最终将用于我的许多应用程序。 假设这个库有一个版本为 1.0 的依赖项 X。 如果主应用程序想要使用版本 0.5 的依赖项 X 怎么办?我不希望主应用程序通过排除依赖项的过程'gradle。还有别的办法吗?我想更改名称或为我的库中的依赖项提供别名?这可能吗?

如果gradle在依赖关系图中发现两个(或更多)版本的依赖关系,它将默认选择最新版本。大多数库保证向后兼容性,所以这通常可以正常工作。 Gradle 还提供了很多挂钩让客户选择不同的策略。

如果您真的希望您的实用程序的使用者在他们的 class 路径上有两个版本的 (shared/transitive) 依赖项,您需要重新打包依赖项,以便每个 class 移动到不同的包,因为在 class 路径

上每个(完全限定的)class 名称只能有一个版本

要重新打包 jar,请查看 shadow plugin. Many libraries (eg hibernate and spring) choose to repackage/shadow the ASM jar 以避免冲突。

请注意,99% 的情况下重新打包 jar 是错误的选择,您应该让正常的依赖项解析过程发生

understanding dependency resolution