J'ai un exemple de projet, avec la configuration suivante:
/root
+ Pure Java Lib
+ Android Test Lib
+ Android Test Project
Où le « projet de test » dépend de la « bibliothèque de test », et le dernier dépend de la « librairie pure Java ». Compiler le projet et lancer cette configuration fonctionne très bien.
Je pense maintenant à importer mon précédent espace de travail Eclipse et à travailler avec Android Studio, le problème est que la configuration du projet est différente, et je voudrais que cela reste ainsi.
par exemple si vous souhaitez utiliser 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 la portée du dossier parent (« racine » dans le cas de l'exemple).
Dans de nombreuses plates-formes / modules, vous pouvez utiliser le '..' pour remonter dans les dossiers, mais cela n'a pas fonctionné pour moi, peut-être que je l'ai mal utilisé.
Est-ce que quelqu'un sait comment cela peut être réalisé avec Gradle?
METTRE À JOUR
J'essaierai 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 du projet B , dans le projet A .
MISE À JOUR: 09-03-19
Je l'ai vu maintenant et je dois mettre à jour ... après presque 6 ans, aujourd'hui je suis plus sage, et je peux certainement dire que le problème était que je ne comprenais pas bien le concept de "Source de vérité".
Bien qu'avoir une référence dans une bibliothèque soit un concept agréable à avoir ... et peut 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 en 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 façon serait d'utiliser ce que la plupart des développeurs n'aiment pas, c'est-à-dire les sous-modules git, et oui, dupliquer les sources dans chaque projet car il y a plus de chances que chaque projet utilise une version différente du code.
Vous devrez cependant viser à ce que tous vos projets utilisent la dernière et la meilleure version de toutes vos bibliothèques .. ce qui est un défi en soi
La raison pour laquelle c'est la bonne façon de développer un projet avec des sources de bibliothèque est que cela évolue ... vous pouvez avoir des centaines de projets chacun avec sa propre configuration de bibliothèque.
Réponses:
En supposant que Some Other Folder est un projet gradle, vous pouvez ajouter quelque chose comme ce qui suit à votre fichier settings.gradle:
la source
Vous devez mettre dans votre fichier settings.gradle ces lignes:
Ensuite, vous devez ajouter dans votre builde.gradle (Module: app) dans l' arborescence des dépendances , cette ligne:
ou allez dans la structure du projet > application > dépendances , cliquez sur Ajouter , choisissez 3 dépendances de module et sélectionnez votre module
la source
compile project(path: ':library', configuration: 'variant')
. Ici, sevariant
composeflavor
etbuildType
tel que défini par lebuild.gradle
fichier de la bibliothèque . Par exemple, si vous voulez lerelease
type de construction de la bibliothèque dans unedevelop
saveur, alorsvariant
estdevelopRelease
.Avec Gradle 1.10 (je ne sais pas pour quelles autres versions cela sera valable) c'est ce que j'ai trouvé en me basant sur une réponse donnée ici http://forums.gradle.org/gradle/topics/reference_external_project_as_dependancy
J'ai un projet de bibliothèque API, un projet de bibliothèque commun et le projet d'application principal. Chacun est un projet de développement autonome et les deux bibliothèques sont destinées à être partagées entre plusieurs applications.
Dans settings.gradle pour le projet commun:
Ensuite, dans les paramètres du projet d'application principale.
Dans chacun des fichiers build.gradle respectifs, vous les référencez simplement par le nom que vous leur avez donné dans settings.createProjectDescriptor comme vous le feriez pour toute autre dépendance de projet:
Cela semble fonctionner. Cela n'a même pas généré d'erreur pour plusieurs fichiers DEX définissant la bibliothèque api, je suppose que tout cela faisait partie du même processus de construction et Gradle était assez intelligent pour tout comprendre.
la source
Faites un clic droit sur le projet - Sélectionnez "Ouvrir les paramètres du module" - Sélectionnez "Modules" dans le volet de gauche - Cliquez sur le symbole "+" en haut - Choisissez "Importer le module".
Après l'importation de Module. Vous devez l'ajouter en tant que dépendance pour votre projet actuel.
Gardez "Modules" sélectionné dans le volet de gauche et cliquez sur votre projet - Allez maintenant dans l'onglet dépendances et cliquez sur le symbole "+" qui se trouve en bas - Choisissez la troisième option "Dépendances du module" et si vous avez importé correctement votre projet, il le sera vous montrer tous les modules disponibles qui peuvent être ajoutés en tant que dépendance à votre projet actuel.
la source
Je pose à nouveau cette question d'une manière qui implique les intentions des affiches originales à Comment référencer les bibliothèques Android et Java personnalisées vivant en dehors du répertoire de notre projet principal Android?
Là, je réponds à ma propre question. Au fond, ma réponse utilise les informations de codage de gradle de @ Ethan (l'auteur de la réponse choisie dans le fil de discussion actuel). Mais ma réponse parcourt également d'autres pièges et fournit un exemple détaillé étape par étape.
la source
Comme Ethan l'a dit, si vous ajoutez ceci à votre settings.gradle, il ajoutera un projet externe à Android Studio (dans cet exemple, il se trouve dans le dossier parent):
Ensuite, pour l'ajouter en tant que dépendance de l'un de vos projets, ajoutez-le simplement dans le build.gradle de ce projet comme une autre dépendance comme celle-ci (vous pouvez également le faire graphiquement comme ici ):
la source