在 Android 上分叉 gradle 依赖项

我有一段时间没有开发Android了,我正试图用作为Gradle依赖项的新功能来做正确的事情。

我想知道当您需要修改一个特定的依赖项以满足您的需求时,最佳实践是什么。

例如,假设我们有两个库,它们通过子类化适配器来扩展 RecyclerView 功能:

Adapter --> AdapterA
Adapter --> AdapterB

由于Java不支持多重继承,我想使两个库一起工作的唯一方法是修改其中一个,以便子类化层次结构如下所示:

Adapter --> AdapterA --> AdapterB

如果我是正确的,这就是要走的路,那么修改和集成库的最佳方式是什么,以下是我能想到的选项:

  1. 在 GitHub 上分叉并使用 JitPack 添加分叉修改的库
  2. 将库作为本地模块添加到应用并修改源代码

请证明或建议什么更好,以及是否有任何其他替代方案来实现这一目标。


答案 1

我说只是做一个依赖于其他库的本地模块并修改它。不要忘记记录您所做的更改。理想情况下,在 VCS 中将模块作为单独的提交导入,然后在另一个提交中对其进行修改。

这样做的好处是,如果要更新库,这将相当容易做到,因为您所要做的就是复制新版本的源代码,然后进行相同的修改。但是,如果您采用其他方法,那么您还必须将所有更改推送到GitHub,这增加了复杂性,但除非您想与其他人共享您的修改,否则几乎没有什么好处。


答案 2

这似乎是一个不寻常的情况 - 也许一个例子将有助于
在诉诸分叉库之前考虑组合。https://en.wikipedia.org/wiki/Composition_over_inheritance

class YourAdapter {
    private AdapterA adapterA
    private AdapterB adapterB
}

推荐