16

私はしばらく Android を開発していませんが、Gradle の依存関係として新しい機能を正しく使用しようとしています。

必要に応じて特定の依存関係を変更する必要がある場合のベストプラクティスは何ですか。

たとえば、Adapter をサブクラス化して RecyclerView 機能を拡張する 2 つのライブラリがあるとします。

Adapter --> AdapterA
Adapter --> AdapterB

Java は複数の継承をサポートしていないため、両方のライブラリを連携させる唯一の方法は、サブクラス化階層が次のようになるように、いずれかを変更することであると思います。

Adapter --> AdapterA --> AdapterB

私が正しく、これが進むべき道である場合、ライブラリを変更および統合する最良の方法は何でしょうか。私が考えることができるオプションは次のとおりです。

  1. GitHub で fork し、JitPack を使用して fork-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 に答える