16

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

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

例如,假设我们有两个通过继承 Adapter 来扩展 RecyclerView 功能的库:

Adapter --> AdapterA
Adapter --> AdapterB

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

Adapter --> AdapterA --> AdapterB

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

  1. 在 GitHub 上 fork 并使用 JitPack 添加 forked-modified 库
  2. 将库作为本地模块添加到应用程序并修改源

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

4

2 回答 2

5

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

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

于 2017-01-09T11:22:39.803 回答
5

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

class YourAdapter {
    private AdapterA adapterA
    private AdapterB adapterB
}
于 2017-01-12T06:06:46.377 回答