【问题标题】:Gradle dependency management: how to maintain both old and new version of a dependency in android project?Gradle 依赖管理:如何在 android 项目中同时维护新旧版本的依赖?
【发布时间】:2018-08-14 07:05:45
【问题描述】:

我目前在我的一个 android 项目中遇到了一种情况。

情况是:

项目使用库 A 和 B(新版本)。库 A 也依赖于库 B(旧版本)。 A 和 B 都是独立维护的,它们的发布不能同步。

库 B 的旧版本和新版本不兼容,因为新版本中某些接口定义发生了变化。我认为这会在构建项目时产生一些问题。

在我的 android 项目中同时维护 A 和 B 的最佳方法是什么?

【问题讨论】:

  • 除非 A 和 B 具有不同的工件 ID 并使用完全不同的 Java 包,否则您想要的都是不可能的。选择一个并使用它。
  • 哦,好吧! :( 非常感谢您的回复。

标签: java android gradle build android-gradle-plugin


【解决方案1】:

正如 cmets 中所述,对于您的问题没有开箱即用的解决方案,您最好的选择可能是让您的项目使用与库 A 相同的旧版本的库 B。

只有当您真的依赖仅在新版本 B 中可用的功能或修复时,您才可以尝试使用 shadow plugin 使用重新定位的包构建您自己的库 B 版本。那就是:

  • 创建一个新项目,例如custom-b 以新版本的 B 作为依赖
  • 应用 shadow-plugin 并将 B 的类重新定位到另一个包。例如包com.library.b 可以变成custom-b.com.library.b
  • 在本地发布custom-b项目的shadow-jar,让你的主项目依赖这个jar

这样,新版本 B 的类将在不同的包下可用,并且可以被您的代码使用。

如上所述,仅当您确实依赖新版本的 B 时才应尝试此操作,因为这会引入相当多的额外复杂性,如果不是绝对必要,应避免这些复杂性。或者,您当然也可以询问 A 的开发人员是否计划在他们即将发布的版本中使用 B 的新版本。这也可能解决您的问题。

【讨论】:

    猜你喜欢
    • 2016-11-30
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 2019-04-07
    • 2014-07-07
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多