Android:如何创建一个没有冲突依赖的库
Posted
技术标签:
【中文标题】Android:如何创建一个没有冲突依赖的库【英文标题】:Android : How to create a library without conflicting dependencies 【发布时间】:2021-11-27 18:31:17 【问题描述】:我正在创建一个最终将用于我的许多应用程序的 android 库。 假设此库具有版本 1.0 的依赖项 X。 如果主应用程序想要使用版本 0.5 的依赖项 X 怎么办?我不希望主应用程序通过 gradle 排除依赖项的过程。还有其他方法吗?我想更改名称或为我的库中的依赖项提供别名?这甚至可能吗?
【问题讨论】:
【参考方案1】:如果 gradle 在依赖关系图中找到两个(或更多)版本的依赖项,它将默认选择最新版本。大多数库保证向后兼容性,因此通常可以正常工作。 Gradle 还提供了很多钩子让客户端选择不同的策略。
如果您真的希望实用程序的使用者在其类路径上拥有两个版本的(共享/传递)依赖项,您需要重新打包依赖项,以便每个类移动到不同的包,因为您只能拥有一个版本类路径上的每个(完全限定的)类名
要重新打包 jar,请查看 shadow plugin。许多库(例如 hibernate 和 spring)选择重新打包/隐藏 ASM jar 以避免冲突。
请注意,99% 的时间重新打包 jar 是错误的选择,您应该让正常的依赖关系解析过程发生
见understanding dependency resolution
【讨论】:
以上是关于Android:如何创建一个没有冲突依赖的库的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Qt Creator创建一个不依赖于Android的单个本机共享库