Laissez-moi partager mon opinion. GIT est avant tout un outil de contrôle de source. Vous n'avez donc pas besoin de 'stocker' les fichiers jars (bibliothèques compilées) dans git. Jamais :) Cela bloque le dépôt, et ne permet pas de traiter les changements qui ne sont pas censés être binaires. Au lieu de cela, dans le scénario que vous avez décrit, votre collègue ne fonctionne pas avec la bibliothèque dont vous êtes responsable, c'est donc un projet différent dans git.
Selon la façon dont votre équipe/organisations est vraiment petit et si votre collègue et vous êtes dans des projets très différents, il y a deux options:
Conservez tous vos pots dans les différents modules du même projet (dans le même référentiel git). Ensuite, utilisez des outils comme maven ou gradle pour construire votre projet. Je ne sais pas grand-chose sur le développement Android, mais je suis sûr que ces outils ont beaucoup à offrir là-bas. Les deux fournissent une fonction de gestion automatique des dépendances, donc si vous êtes responsable du module A et que votre coéquipier travaille avec le module B du même projet, déclarez simplement la dépendance 'B dépend de A' (maven et gradle le permettent). La surcharge est évidente: vous devez tout compiler chaque fois que vous travaillez avec votre code. Un autre inconvénient est que vous devez suivre le même cycle de publication pour A et B car ils font partie du même projet. Cette configuration est généralement bonne pour les petites organisations ou même les startups ou si vous développez vraiment la bibliothèque qui est pertinente uniquement pour vos collègues (en fait vous travaillez sur le même projet). Maintenant, dans un environnement plus complexe, supposons que les projets A et B sont vraiment différents et développés par des personnes différentes, peut-être des équipes ou des départements.
Dans ce cas, il est préférable de conserver A et B dans différents dépôts git, ce qui permet un cycle de libération différent, etc. Vous feriez mieux d'utiliser maven ou gradle mais cette fois en conjonction avec des outils comme Nexus ou Artifactory. Ce sont des dépôts pour vos artefacts (pots). Comme vous venez évidemment du monde Android, la meilleure analogie que je peux penser est «google play» qui stocke tous les produits, mais cette fois, il conserve différentes versions, code source (en option) ou même javadoc si vous le souhaitez .
Alors maintenant, le flux devrait ressembler à ceci:
Vous (en tant que responsable du projet A) compiler avec Maven ou gradle, tester et déployer Nexus (ou Artifactory). Cela signifie qu'il existe un serveur sur lequel le fichier jar est stocké et qu'il existe une API qui peut être utilisée par maven ou gradle.Maintenant, votre collègue doit décider de la version du projet A qu'il/elle doit utiliser dans son script de construction. Le maven doit être configuré pour «rechercher» des artefacts dans Nexus. Dans les deux maven et gradle son quelques lignes de configurations.
Dans ce cas, votre collègue travaille avec son propre dépôt git du projet B, récupère les modifications et compile (encore avec maven/gradle). En plus de cela, vous pouvez envisager d'utiliser l'outil d'intégration continue comme Jenkins, ce qui augmentera encore votre productivité, mais ce n'est pas directement lié à votre question. .
Liens:
Maven
Gradle
Nexus
Artifactory
Jenkins
Espérons que cela vous aide
"Quelles sont mes options?" Eh bien, utilisez un système de gestion des dépendances. [Maven] (https://maven.apache.org/) ou [Gradle] (https://gradle.org/), par exemple. – Seelenvirtuose
Je suis d'accord avec Seelenvirtuose, Maven ou Gradle, avec un système d'intégration continue comme Jenkins, et un référentiel d'artefacts. La configuration peut être fastidieuse, mais ça vaut le coup! – NiziL