144 votes

Android studio ajoute un projet externe à build.gradle

J'ai un projet type, avec la configuration suivante :

/root
  + Pure Java Lib
  + Android Test Lib
  + Android Test Project

Où le ' Projet d'essai dépend de l'option ' Test Lib et le dernier dépend de l'option ' Pure Java Lib ' La compilation du projet et le lancement de cette installation fonctionnent parfaitement.

J'envisage maintenant d'importer mon ancien espace de travail Eclipse et de travailler avec Android studio, le problème est que la configuration du projet est différente, et je voudrais qu'elle reste ainsi.

par exemple si l'on reprend l'exemple précédent :

/root
  + Android Test Lib
  + Android Test Project

/Some Other folder (another repository for example)
  + Pure Java Lib

J'ai essayé de nombreuses configurations, mais je n'ai pas trouvé de moyen de référencer un projet en dehors de l'étendue du dossier parent ( Racine dans le cas de l'exemple).

Dans de nombreuses plateformes/modules, vous pouvez utiliser le ' ' pour remonter dans les dossiers, mais cela n'a pas fonctionné pour moi, peut-être l'ai-je mal utilisé.

Quelqu'un sait-il comment cela peut être réalisé avec Gradle ?

UPDATE

Je vais essayer d'être plus générique :

/C:/

  /Project A
    + Module 1 - Pure Java
    + Module 2 - Android Test Lib
    + Module 3 - Android Test Project

  /Project B
    + Module 1 - Pure Java
    + Module 2 - Pure Java
    + Module 3 - Pure Java

Je voudrais utiliser le module 1 de projet B , dans le projet A .


MISE À JOUR : 09-03-19

J'ai vu cela maintenant et je dois mettre à jour... après presque 6 ans, aujourd'hui je suis plus sage, et je peux définitivement dire que le problème était que je comprenais mal le concept de "Source de vérité".

Bien qu'avoir une référence unique à une bibliothèque soit un concept intéressant et puisse sembler être une "Source de vérité", la VRAIE "Source de vérité" serait la version du code que chaque projet utilise de cette bibliothèque, car la bibliothèque elle-même a des versions de nombreuses versions et la "Source de vérité" est relative au projet qui utilise la bibliothèque.

La bonne méthode serait d'utiliser ce que la plupart des développeurs n'aiment pas, à savoir les submodules git, et oui, de dupliquer les sources dans chaque projet, car il est fort probable que chaque projet utilise une version différente du code.

Vous devrez cependant faire en sorte que tous vos projets utilisent la dernière et la meilleure version de toutes vos bibliothèques, ce qui constitue un défi en soi

La raison pour laquelle il s'agit de la bonne façon de développer un projet avec des sources de bibliothèque est que cela permet d'évoluer... vous pouvez avoir des centaines de projets, chacun avec sa propre configuration de bibliothèque.

4 votes

Je vois que cette question suscite une certaine attention... Après avoir essayé vraiment très dur, j'ai abandonné Android studio pour le moment, car la complexité de la configuration que j'essayais de construire était tout simplement trop grande, et la construction de mon projet final était faisable, mais très instable. à chaque lancement d'Android studio, je devais définir à nouveau certains paramètres, et faire fonctionner manuellement la construction. cela fait environ deux mois que j'ai abandonné, et j'espère que les choses vont mieux maintenant !

0 votes

L'approche 2 ici explique comment le faire très facilement : stackoverflow.com/questions/25610727/

-1voto

Yair Kukielka Points 81

Comme l'a dit Ethan, si vous ajoutez ceci à votre settings.gradle, cela ajoutera un projet externe à Android Studio (dans cet exemple, il se trouve dans le dossier parent) :

project(':../ProjectB/:module1')

Ensuite, pour l'ajouter comme dépendance d'un de vos projets, il suffit de l'ajouter dans le build.gradle de ce projet comme une autre dépendance comme ceci (vous pouvez aussi le faire graphiquement comme dans ici ):

compile project(':../ProjectB/:module1')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X