【问题标题】:Android : How to create a library without conflicting dependenciesAndroid:如何创建一个没有冲突依赖的库
【发布时间】:2021-11-27 18:31:17
【问题描述】:

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

【问题讨论】:

    标签: android android-studio gradle android-gradle-plugin


    【解决方案1】:

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

    如果您真的希望实用程序的使用者在其类路径上拥有两个版本的(共享/传递)依赖项,您需要重新打包依赖项,以便每个类移动到不同的包,因为您只能拥有一个版本类路径上的每个(完全限定的)类名

    要重新打包 jar,请查看 shadow plugin。许多库(例如 hibernate 和 spring)选择重新打包/隐藏 ASM jar 以避免冲突。

    请注意,99% 的时间重新打包 jar 是错误的选择,您应该让正常的依赖关系解析过程发生

    understanding dependency resolution

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-01
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多