Подтвердить что ты не робот

Формирование зависимостей gradle от Android

Я не разрабатывал Android некоторое время, и я стараюсь делать все правильно с новыми функциями в качестве зависимостей Gradle.

Мне интересно, какие наилучшие методы вам нужно изменить, чтобы изменить одну конкретную зависимость для удовлетворения ваших потребностей.

Например, предположим, что у нас есть две библиотеки, которые расширяют функциональность RecyclerView путем подклассификации адаптера:

Adapter --> AdapterA
Adapter --> AdapterB

Так как Java не поддерживает множественные наследования, я предполагаю, что единственный способ заставить обе библиотеки работать вместе, состоит в том, чтобы модифицировать один из них, чтобы иерархия подклассов выглядела так:

Adapter --> AdapterA --> AdapterB

Если я прав, и это путь, то каким будет лучший способ изменения и интеграции библиотеки, вот варианты, о которых я могу думать:

  • Вилка на GitHub и использование JitPack для добавления измененной библиотеки.
  • Добавить библиотеку в качестве локального модуля в приложение и изменить источник

Просьба обосновать или предложить, что лучше, и если есть другие альтернативы для достижения этого.

4b9b3361

Ответ 1

Я говорю, просто создайте локальный модуль, который зависит от другой библиотеки и изменит это. Не забудьте записать, какие изменения вы внесли. В идеале вы импортируете модуль как отдельную фиксацию в VCS, а затем модифицируете его в другой фиксации.

Это имеет то преимущество, что если вы хотите обновить библиотеку, это будет довольно легко сделать, поскольку все, что вам нужно сделать, это скопировать исходный код для новой версии и затем внести те же изменения. Однако, если вы примете другой подход, вам также придется нажать все изменения в GitHub, что добавит сложности, но мало пользы, если вы не захотите поделиться своими изменениями с кем-то еще.

Ответ 2

Это кажется необычным обстоятельством. Может быть, пример поможет Также рассмотрите состав, прежде чем приступать к разветвлению библиотек. https://en.wikipedia.org/wiki/Composition_over_inheritance

class YourAdapter {
    private AdapterA adapterA
    private AdapterB adapterB
}