java - Bifurcando dependencias de gradle en Android
android-gradle jitpack (2)
Digo que solo haga un módulo local que dependa de la otra biblioteca y modifíquelo. No olvides registrar qué cambios has realizado. Idealmente, importa el módulo como una confirmación separada en el VCS, y luego lo modifica en otra confirmación.
Esto tiene la ventaja de que si desea actualizar la biblioteca, será bastante fácil de hacer ya que todo lo que tiene que hacer es copiar la fuente de la nueva versión y luego hacer las mismas modificaciones. Sin embargo, si adopta el otro enfoque, también tendrá que impulsar todos los cambios a GitHub, lo que agrega complejidad, pero poco beneficio a menos que desee compartir sus modificaciones con otra persona.
No he desarrollado Android por un tiempo y estoy tratando de hacer las cosas bien con las nuevas funciones como las dependencias de Gradle.
Me pregunto cuáles son las mejores prácticas cuando necesita modificar una dependencia particular para satisfacer sus necesidades.
Por ejemplo, digamos que tenemos dos bibliotecas que extienden la funcionalidad RecyclerView subclasificando el Adaptador:
Adapter --> AdapterA
Adapter --> AdapterB
Como Java no admite múltiples herencias, creo que la única forma de hacer que ambas bibliotecas trabajen juntas consistiría en modificar una de ellas para que la jerarquía de subclases se vea así:
Adapter --> AdapterA --> AdapterB
Si estoy en lo cierto y este es el camino a seguir, ¿cuál sería la mejor manera de modificar e integrar la biblioteca? Estas son las opciones que se me ocurren:
- Bifurque en GitHub y use JitPack para agregar la biblioteca modificada bifurcada
- Agregue una biblioteca como módulo local a la aplicación y modifique la fuente
Justifique o sugiera lo que es mejor y si existen otras alternativas para lograrlo.
Esto parece una circunstancia inusual - Tal vez un ejemplo ayudaría
También considere la composición antes de recurrir a las bibliotecas de bifurcación. https://en.wikipedia.org/wiki/Composition_over_inheritance
class YourAdapter {
private AdapterA adapterA
private AdapterB adapterB
}